Merge
authorduke
Wed, 05 Jul 2017 16:52:18 +0200
changeset 2682 045499ae1036
parent 2681 583fd6b10e17 (current diff)
parent 2673 edc66690be08 (diff)
child 2685 ba08b1e8d68a
Merge
corba/make/jprt.config
jdk/src/share/native/java/util/zip/ZipEntry.c
jdk/test/com/sun/awt/Translucency/TranslucentJAppletTest/TranslucentJAppletTest.java
jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TSFrame.java
jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.form
jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.java
make/jprt.config
--- a/.hgtags-top-repo	Mon Apr 27 20:18:40 2009 -0700
+++ b/.hgtags-top-repo	Wed Jul 05 16:52:18 2017 +0200
@@ -30,3 +30,4 @@
 c235f4a8559d196879c56af80159f67ee5d0e720 jdk7-b53
 2ef382b1bbd58a68e668391c6145a4b2066c5b96 jdk7-b54
 aea0ace7a1e43619800931d42bbf69c579361c2d jdk7-b55
+ba12117a5e6c918578d6b2a8c693232a33289024 jdk7-b56
--- a/README-builds.html	Mon Apr 27 20:18:40 2009 -0700
+++ b/README-builds.html	Wed Jul 05 16:52:18 2017 +0200
@@ -68,6 +68,7 @@
                             </li>
                             <li><a href="#zip">Zip and Unzip</a> </li>
                             <li><a href="#freetype">FreeType2 Fonts</a> </li>
+                            <li><a href="#jibx">JIBX Libraries</a> </li>
                             <li>Linux and Solaris:
                                 <ul>
                                     <li><a href="#cups">CUPS Include files</a> </li>
@@ -586,6 +587,11 @@
                     package</a>.
                 </li>
                 <li>
+                    Install the
+                    <a href="#jibx">JIBX Libraries</a>, set
+                    <tt><a href="#ALT_JIBX_LIBS_PATH">ALT_JIBX_LIBS_PATH</a></tt>.
+                </li>
+                <li>
                     Install
                     <a href="#ant">Ant</a>, 
                     make sure it is in your PATH.
@@ -651,6 +657,11 @@
                     <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>.
                 </li>
                 <li>
+                    Install the
+                    <a href="#jibx">JIBX Libraries</a>, set
+                    <tt><a href="#ALT_JIBX_LIBS_PATH">ALT_JIBX_LIBS_PATH</a></tt>.
+                </li>
+                <li>
                     Install
                     <a href="#ant">Ant</a>, 
                     make sure it is in your PATH.
@@ -746,6 +757,11 @@
                     <a href="#dxsdk">Microsoft DirectX SDK</a>.
                 </li>
                 <li>
+                    Install the
+                    <a href="#jibx">JIBX Libraries</a>, set
+                    <tt><a href="#ALT_JIBX_LIBS_PATH">ALT_JIBX_LIBS_PATH</a></tt>.
+                </li>
+                <li>
                     Install
                     <a href="#ant">Ant</a>, 
                     make sure it is in your PATH and set
@@ -874,6 +890,27 @@
                 fine for most JDK developers.
             </blockquote>
             <!-- ------------------------------------------------------ -->
+            <h4><a name="jibx">JIBX</a></h4>
+            <blockquote>
+                JIBX libraries version 1.1.5 is required for building the OpenJDK.
+                Namely, the following JAR files from the JIBX distribution package
+                are required:
+                <ul>
+                    <li>bcel.jar
+                    <li>jibx-bind.jar
+                    <li>jibx-run.jar
+                    <li>xpp3.jar
+                </ul>
+                <p>
+                You can download the package from the
+                <a href="http://jibx.sourceforge.net" target="_blank">JIBX site</a>.
+                <p>
+                You will need to set the
+                <tt><a href="#ALT_JIBX_LIBS_PATH">ALT_JIBX_LIBS_PATH</a></tt>
+                environment variable to refer to place where the JAR files,
+                above, are located.
+            </blockquote>
+            <!-- ------------------------------------------------------ -->
             <h4><a name="compilers">Compilers</a></h4>
             <blockquote>
                 <strong><a name="gcc">Linux gcc/binutils</a></strong>
@@ -1425,6 +1462,12 @@
                     The default will refer to 
                     <tt>jdk/src/share/lib/security/cacerts</tt>.
                 </dd>
+                <dt><tt><a name="ALT_JIBX_LIBS_PATH">ALT_JIBX_LIBS_PATH</a></tt></dt>
+                <dd>
+                    The location of the <a href="#jibx">JIBX libraries</a> file.
+                    The default value is
+                    <tt>$(ALT_SLASH_JAVA)/devtools/share/jibx/lib</tt>.
+                </dd>
                 <dt><a name="ALT_CUPS_HEADERS_PATH"><tt>ALT_CUPS_HEADERS_PATH</tt></a> </dt>
                 <dd>
                     The location of the CUPS header files.
--- a/corba/.hgtags	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/.hgtags	Wed Jul 05 16:52:18 2017 +0200
@@ -30,3 +30,4 @@
 3c4d73194f6f89f040ae3b2d257335dfa8a1b2b5 jdk7-b53
 8130ac858d6789d5853d23044ba4a992afda574a jdk7-b54
 7a869f16ba83060c34b77620406cfa89d1cd7084 jdk7-b55
+553a664b807bb3a3c93f3b5a3c20ff0a90e08371 jdk7-b56
--- a/corba/make/jprt.config	Mon Apr 27 20:18:40 2009 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,330 +0,0 @@
-#!echo "This is not a shell script"
-#############################################################################
-#
-# Copyright 2006-2009 Sun Microsystems, Inc.  All Rights Reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Sun designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Sun in the LICENSE file that accompanied this code.
-#
-# This code 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
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-# CA 95054 USA or visit www.sun.com if you need additional information or
-# have any questions.
-#
-#############################################################################
-#
-# JPRT shell configuration for building.
-#
-# Input environment variables:
-#    ALT_BOOTDIR
-#    ALT_SLASH_JAVA
-#    ALT_JDK_IMPORT_PATH
-#    Windows Only:
-#      PATH
-#      VS71COMNTOOLS
-#      PROCESSOR_IDENTIFIER
-#      ROOTDIR
-#
-# Output variable settings:
-#    make            Full path to GNU make
-#    compiler_path   Path to compiler bin directory
-#    compiler_name   Unique name of this compiler
-#
-# Output environment variables:
-#    PATH
-#    ALT_COMPILER_PATH
-#    Windows Only:
-#      ALT_MSDEVTOOLS_PATH
-#      ALT_DEVTOOLS_PATH (To avoid the C:/UTILS default)
-#      LIB
-#      INCLUDE
-#
-# After JDK6, most settings will be found via ALT_SLASH_JAVA or
-#   by way of other system environment variables. If this was JDK5
-#   or an older JDK, you might need to export more ALT_* variables.
-#
-# On Windows AMD64, if MSSDK is not set, assumes Platform SDK is installed at:
-#          C:/Program Files/Microsoft Platform SDK
-#
-#############################################################################
-
-#############################################################################
-# Error
-error() # message
-{
-  echo "ERROR: $1"
-  exit 6
-}
-# Directory must exist
-dirMustExist() # dir name
-{
-  if [ ! -d "$1" ] ; then
-    error "Directory for $2 does not exist: $1"
-  fi
-}
-# File must exist
-fileMustExist() # dir name
-{
-  if [ ! -f "$1" ] ; then
-    error "File for $2 does not exist: $1"
-  fi
-}
-#############################################################################
-
-# Should be set by JPRT as the 3 basic inputs
-bootdir="${ALT_BOOTDIR}"
-slashjava="${ALT_SLASH_JAVA}"
-jdk_import="${ALT_JDK_IMPORT_PATH}"
-
-# The /java/devtools items
-jdk_devtools="${slashjava}/devtools"
-share="${jdk_devtools}/share"
-
-# The 3 bin directories in common to all platforms
-sharebin="${share}/bin"
-
-# Check input
-dirMustExist "${bootdir}"         ALT_BOOTDIR
-dirMustExist "${slashjava}"       ALT_SLASH_JAVA
-dirMustExist "${jdk_import}"      ALT_JDK_IMPORT_PATH
-
-# Uses 'uname -s', but only expect SunOS or Linux, assume Windows otherwise.
-osname=`uname -s`
-if [ "${osname}" = SunOS ] ; then
-   
-    # SOLARIS: Sparc or X86
-    osarch=`uname -p`
-    if [ "${osarch}" = sparc ] ; then
-	solaris_arch=sparc
-    else
-	solaris_arch=i386
-    fi
-
-    # Get the compilers into path (make sure it matches ALT setting)
-    if [ "${JPRT_SOLARIS_COMPILER_NAME}" != "" ] ; then
-        compiler_name=${JPRT_SOLARIS_COMPILER_NAME}
-    else
-	compiler_name=SS12
-    fi
-    compiler_path=${jdk_devtools}/${solaris_arch}/SUNWspro/${compiler_name}/bin
-    ALT_COMPILER_PATH="${compiler_path}"
-    export ALT_COMPILER_PATH
-    dirMustExist "${compiler_path}" ALT_COMPILER_PATH
-    path4sdk=${compiler_path}:${sharebin}
-
-    # Add basic solaris system paths
-    path4sdk=${path4sdk}:/usr/ccs/bin:/usr/ccs/lib:/usr/bin:/bin:/usr/sfw/bin
-
-    # Get the previous JDK to be used to bootstrap the build
-    path4sdk=${bootdir}/bin:${path4sdk}
-
-    # Find GNU make
-    make=/usr/sfw/bin/gmake
-    if [ ! -f ${make} ] ; then
-	make=/opt/sfw/bin/gmake
-	if [ ! -f ${make} ] ; then
-	    make=${jdk_devtools}/${solaris_arch}/bin/gnumake
-        fi 
-    fi
-    fileMustExist "${make}" make
-
-    # File creation mask
-    umask 002
-
-elif [ "${osname}" = Linux ] ; then
-   
-    # LINUX: X86, AMD64
-    osarch=`uname -m`
-    if [ "${osarch}" = i686 ] ; then
-	linux_arch=i586
-    elif [ "${osarch}" = x86_64 ] ; then
-	linux_arch=amd64
-    fi
-
-    # Get the compilers into path (make sure it matches ALT setting)
-    compiler_path=/usr/bin
-    compiler_name=usr_bin
-    ALT_COMPILER_PATH="${compiler_path}"
-    export ALT_COMPILER_PATH
-    dirMustExist "${compiler_path}" ALT_COMPILER_PATH
-    path4sdk=${compiler_path}:${sharebin}
-    
-    # Add basic paths
-    path4sdk=${path4sdk}:/usr/bin:/bin:/usr/sbin:/sbin
-
-    # Get the previous JDK to be used to bootstrap the build
-    path4sdk=${bootdir}/bin:${path4sdk}
-    
-    # Find GNU make
-    make=/usr/bin/make
-    fileMustExist "${make}" make
-
-    umask 002
-   
-else
-
-    # Windows: Differs on CYGWIN vs. MKS, and the compiler available.
-    #   Also, blanks in pathnames gives GNU make headaches, so anything placed
-    #   in any ALT_* variable should be the short windows dosname.
-   
-    # WINDOWS: Install and use MKS or CYGWIN (should have already been done)
-    #   Assumption here is that you are in a shell window via MKS or cygwin.
-    #   MKS install should have defined the environment variable ROOTDIR.
-    #   We also need to figure out which one we have: X86, AMD64
-    if [ "`echo ${PROCESSOR_IDENTIFIER} | fgrep AMD64`" != "" ] ; then
-	windows_arch=amd64
-    else
-	windows_arch=i586
-    fi
-    
-    # We need to determine if we are running a CYGWIN shell or an MKS shell
-    #    (if uname isn't available, then it will be unix_toolset=unknown)
-    unix_toolset=unknown
-    if [ "`uname -a | fgrep Cygwin`" = "" -a -d "${ROOTDIR}" ] ; then
-        # We kind of assume ROOTDIR is where MKS is and it's ok
-        unix_toolset=MKS
-        mkshome=`dosname -s "${ROOTDIR}"`
-	# Utility to convert to short pathnames without spaces
-	dosname="${mkshome}/mksnt/dosname -s"
-        # Most unix utilities are in the mksnt directory of ROOTDIR
-        unixcommand_path="${mkshome}/mksnt"
-        path4sdk="${sharebin};${unixcommand_path}"
-        dirMustExist "${unixcommand_path}" ALT_UNIXCOMMAND_PATH
-	devtools_path="${jdk_devtools}/win32/bin"
-	path4sdk="${devtools_path};${path4sdk}"
-	# Normally this need not be set, but on Windows it's default is C:/UTILS
-        ALT_DEVTOOLS_PATH="${devtools_path}"
-	export ALT_DEVTOOLS_PATH
-        dirMustExist "${devtools_path}" ALT_DEVTOOLS_PATH
-        # Find GNU make
-        make="${devtools_path}/gnumake.exe"
-        fileMustExist "${make}" make
-    elif [ "`uname -a | fgrep Cygwin`" != "" -a -f /bin/cygpath ] ; then
-        # For CYGWIN, uname will have "Cygwin" in it, and /bin/cygpath should exist
-        unix_toolset=CYGWIN
-	# Utility to convert to short pathnames without spaces
-	dosname="/usr/bin/cygpath -a -m -s"
-        # Most unix utilities are in the /usr/bin
-        unixcommand_path="/usr/bin"
-        path4sdk="${sharebin};${unixcommand_path}"
-        dirMustExist "${unixcommand_path}" ALT_UNIXCOMMAND_PATH
-        # Find GNU make
-        make="${unixcommand_path}/make.exe"
-        fileMustExist "${make}" make
-    else
-      echo "WARNING: Cannot figure out if this is MKS or CYGWIN"
-    fi
-
-    # WINDOWS: Compiler setup (nasty part)
-    #   NOTE: You can use vcvars32.bat to set PATH, LIB, and INCLUDE.
-    #   NOTE: CYGWIN has a link.exe too, make sure the compilers are first
-    if [ "${windows_arch}" = i586 ] ; then
-        # 32bit Windows compiler settings
-        # VisualStudio .NET 2003 VC++ 7.1 (VS71COMNTOOLS should be defined)
-        vs_root=`${dosname} "${VS71COMNTOOLS}/../.."`
-        # Fill in PATH, LIB, and INCLUDE (unset all others to make sure)
-        msdev_root="${vs_root}/Common7/Tools"
-        msdevtools_path="${msdev_root}/bin"
-        vc7_root="${vs_root}/Vc7"
-        compiler_path="${vc7_root}/bin"
-        compiler_name=VS2003
-        platform_sdk="${vc7_root}/PlatformSDK"
-        # LIB and INCLUDE must use ; as a separator
-        include4sdk="${vc7_root}/atlmfc/include"
-        include4sdk="${include4sdk};${vc7_root}/include"
-        include4sdk="${include4sdk};${platform_sdk}/include/prerelease"
-        include4sdk="${include4sdk};${platform_sdk}/include"
-        include4sdk="${include4sdk};${vs_root}/SDK/v1.1/include"
-        lib4sdk="${vc7_root}/atlmfc/lib"
-        lib4sdk="${lib4sdk};${vc7_root}/lib"
-        lib4sdk="${lib4sdk};${platform_sdk}/lib/prerelease"
-        lib4sdk="${lib4sdk};${platform_sdk}/lib"
-        lib4sdk="${lib4sdk};${vs_root}/SDK/v1.1/lib"
-        # Search path and DLL locating path
-        #   WARNING: CYGWIN has a link.exe too, make sure compilers are first
-        path4sdk="${vs_root}/Common7/Tools/bin;${path4sdk}"
-	path4sdk="${vs_root}/SDK/v1.1/bin;${path4sdk}"
-        path4sdk="${vs_root}/Common7/Tools;${path4sdk}"
-	path4sdk="${vs_root}/Common7/Tools/bin/prerelease;${path4sdk}"
-        path4sdk="${vs_root}/Common7/IDE;${path4sdk}"
-	path4sdk="${compiler_path};${path4sdk}"
-    elif [ "${windows_arch}" = amd64 ] ; then
-        # AMD64 64bit Windows compiler settings
-	if [ "${MSSDK}" != "" ] ; then
-	    platform_sdk="${MSSDK}"
-	else
-	    platform_sdk=`${dosname} "C:/Program Files/Microsoft Platform SDK/"`
-	fi
-	compiler_path="${platform_sdk}/Bin/win64/x86/AMD64"
-        compiler_name=VS2005_PSDK
-	msdevtools_path="${platform_sdk}/Bin"
-        # LIB and INCLUDE must use ; as a separator
-        include4sdk="${platform_sdk}/Include"
-	include4sdk="${include4sdk};${platform_sdk}/Include/crt/sys"
-	include4sdk="${include4sdk};${platform_sdk}/Include/mfc"
-	include4sdk="${include4sdk};${platform_sdk}/Include/atl"
-	include4sdk="${include4sdk};${platform_sdk}/Include/crt"
-        lib4sdk="${platform_sdk}/Lib/AMD64"
-        lib4sdk="${lib4sdk};${platform_sdk}/Lib/AMD64/atlmfc"
-        # Search path and DLL locating path
-        #   WARNING: CYGWIN has a link.exe too, make sure compilers are first
-        path4sdk="${platform_sdk}/bin;${path4sdk}"
-        path4sdk="${compiler_path};${path4sdk}"
-    fi
-    # Export LIB and INCLUDE
-    unset lib
-    unset Lib
-    LIB="${lib4sdk}"
-    export LIB
-    unset include
-    unset Include
-    INCLUDE="${include4sdk}"
-    export INCLUDE
-    # Set the ALT variable
-    ALT_COMPILER_PATH=`${dosname} "${compiler_path}"`
-    export ALT_COMPILER_PATH
-    dirMustExist "${compiler_path}" ALT_COMPILER_PATH
-    ALT_MSDEVTOOLS_PATH=`${dosname} "${msdevtools_path}"`
-    export ALT_MSDEVTOOLS_PATH
-    dirMustExist "${msdevtools_path}" ALT_MSDEVTOOLS_PATH
-    
-    # WINDOWS: Get the previous JDK to be used to bootstrap the build
-    path4sdk="${bootdir}/bin;${path4sdk}"
-
-    # Turn all \\ into /, remove duplicates and trailing /
-    slash_path="`echo ${path4sdk} | sed -e 's@\\\\@/@g' -e 's@//@/@g' -e 's@/$@@' -e 's@/;@;@g'`"
-    
-    # For windows, it's hard to know where the system is, so we just add this
-    #    to PATH.
-    path4sdk="${slash_path};${PATH}"
-    
-    # Convert path4sdk to cygwin style
-    if [ "${unix_toolset}" = CYGWIN ] ; then
-	path4sdk="`/usr/bin/cygpath -p ${path4sdk}`"
-    fi
-
-fi
-
-# Export PATH setting
-PATH="${path4sdk}"
-export PATH
-
-# Things we need to unset
-unset LD_LIBRARY_PATH
-unset LD_LIBRARY_PATH_32
-unset LD_LIBRARY_PATH_64
-unset JAVA_HOME
-
--- a/corba/make/jprt.properties	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/make/jprt.properties	Wed Jul 05 16:52:18 2017 +0200
@@ -32,8 +32,8 @@
 solaris_sparcv9_5.10,\
 solaris_i586_5.10,\
 solaris_x64_5.10,\
-linux_i586,\
-linux_x64,\
+linux_i586_2.6,\
+linux_x64_2.6,\
 windows_i586,\
 windows_x64
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/encoding/BufferManagerReadStream.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/encoding/BufferManagerReadStream.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,6 +44,7 @@
     // We should convert endOfStream to a final static dummy end node
     private boolean endOfStream = true;
     private BufferQueue fragmentQueue = new BufferQueue();
+    private long FRAGMENT_TIMEOUT = 60000;
 
     // REVISIT - This should go in BufferManagerRead. But, since
     //           BufferManagerRead is an interface. BufferManagerRead
@@ -111,9 +112,16 @@
                     throw wrapper.endOfStream() ;
                 }
 
+                boolean interrupted = false;
                 try {
-                    fragmentQueue.wait();
-                } catch (InterruptedException e) {}
+                    fragmentQueue.wait(FRAGMENT_TIMEOUT);
+                } catch (InterruptedException e) {
+                    interrupted = true;
+                }
+
+                if (!interrupted && fragmentQueue.size() == 0) {
+                    throw wrapper.bufferReadManagerTimeout();
+                }
 
                 if (receivedCancel) {
                     throw new RequestCanceledException(cancelReqId);
--- a/corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -153,22 +153,22 @@
                 desc = new ObjectStreamClass(cl, superdesc,
                                              serializable, externalizable);
             }
+            // Must always call init.  See bug 4488137.  This code was
+            // incorrectly changed to return immediately on a non-null
+            // cache result.  That allowed threads to gain access to
+            // unintialized instances.
+            //
+            // History: Note, the following init() call was originally within
+            // the synchronization block, as it currently is now. Later, the
+            // init() call was moved outside the synchronization block, and
+            // the init() method used a private member variable lock, to
+            // avoid performance problems. See bug 4165204. But that lead to
+            // a deadlock situation, see bug 5104239. Hence, the init() method
+            // has now been moved back into the synchronization block. The
+            // right approach to solving these problems would be to rewrite
+            // this class, based on the latest java.io.ObjectStreamClass.
+            desc.init();
         }
-
-        // Must always call init.  See bug 4488137.  This code was
-        // incorrectly changed to return immediately on a non-null
-        // cache result.  That allowed threads to gain access to
-        // unintialized instances.
-        //
-        // All threads must sync on the member variable lock
-        // and check the initialization state.
-        //
-        // Another possibility is to continue to synchronize on the
-        // descriptorFor array, but that leads to poor performance
-        // (see bug 4165204 "ObjectStreamClass can hold global lock
-        // for a very long time").
-        desc.init();
-
         return desc;
     }
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/oa/poa/POAFactory.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/oa/poa/POAFactory.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -76,6 +76,7 @@
     private ORB orb ;
     private POASystemException wrapper ;
     private OMGSystemException omgWrapper ;
+    private boolean isShuttingDown = false;
 
     public POASystemException getWrapper()
     {
@@ -166,6 +167,7 @@
         // pm.deactivate removes itself from poaManagers!
         Iterator managers = null ;
         synchronized (this) {
+            isShuttingDown = true ;
             managers = (new HashSet(poaManagers)).iterator();
         }
 
@@ -208,9 +210,15 @@
             ClosureFactory.makeFuture( rpClosure ) ) ;
     }
 
+
     public synchronized POA getRootPOA()
     {
         if (rootPOA == null) {
+            // See if we are trying to getRootPOA while shutting down the ORB.
+            if (isShuttingDown) {
+                throw omgWrapper.noObjectAdaptor( ) ;
+            }
+
             try {
                 Object obj = orb.resolve_initial_references(
                     ORBConstants.ROOT_POA_NAME ) ;
--- a/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -185,7 +185,6 @@
 
     private java.lang.Object runObj = new java.lang.Object();
     private java.lang.Object shutdownObj = new java.lang.Object();
-    private java.lang.Object waitForCompletionObj = new java.lang.Object();
     private static final byte STATUS_OPERATING = 1;
     private static final byte STATUS_SHUTTING_DOWN = 2;
     private static final byte STATUS_SHUTDOWN = 3;
@@ -194,7 +193,6 @@
 
     // XXX Should we move invocation tracking to the first level server dispatcher?
     private java.lang.Object invocationObj = new java.lang.Object();
-    private int numInvocations = 0;
 
     // thread local variable to store a boolean to detect deadlock in
     // ORB.shutdown(true).
@@ -1245,37 +1243,48 @@
 
     public void shutdown(boolean wait_for_completion)
     {
-        synchronized (this) {
-            checkShutdownState();
+        // to wait for completion, we would deadlock, so throw a standard
+        // OMG exception.
+        if (wait_for_completion && ((Boolean)isProcessingInvocation.get()).booleanValue()) {
+            throw omgWrapper.shutdownWaitForCompletionDeadlock() ;
         }
 
-        // Avoid more than one thread performing shutdown at a time.
-        synchronized (shutdownObj) {
-            checkShutdownState();
-            // This is to avoid deadlock
-            if (wait_for_completion &&
-                isProcessingInvocation.get() == Boolean.TRUE) {
-                throw omgWrapper.shutdownWaitForCompletionDeadlock() ;
+        boolean doShutdown = false ;
+
+        synchronized (this) {
+            checkShutdownState() ;
+
+            if (status == STATUS_SHUTTING_DOWN) {
+                if (!wait_for_completion)
+                // If we are already shutting down and don't want
+                // to wait, nothing to do: return.
+                return ;
+            } else {
+                // The ORB status was STATUS_OPERATING, so start the shutdown.
+                status = STATUS_SHUTTING_DOWN ;
+                doShutdown = true ;
             }
+        }
 
-            status = STATUS_SHUTTING_DOWN;
-            // XXX access to requestDispatcherRegistry should be protected
-            // by the ORBImpl instance monitor, but is not here in the
-            // shutdownServants call.
-            shutdownServants(wait_for_completion);
-            if (wait_for_completion) {
-                synchronized ( waitForCompletionObj ) {
-                    while (numInvocations > 0) {
-                        try {
-                            waitForCompletionObj.wait();
-                        } catch (InterruptedException ex) {}
-                    }
+        // At this point, status is SHUTTING_DOWN.
+        // All shutdown calls with wait_for_completion == true must synchronize
+        // here.  Only the first call will be made with doShutdown == true.
+        synchronized (shutdownObj) {
+            if (doShutdown) {
+                // shutdownServants will set all POAManagers into the
+                // INACTIVE state, causing request to be rejected.
+                // If wait_for_completion is true, this will not return until
+                // all invocations have completed.
+                shutdownServants(wait_for_completion);
+
+                synchronized (runObj) {
+                    runObj.notifyAll();
+                }
+
+                synchronized (this) {
+                    status = STATUS_SHUTDOWN;
                 }
             }
-            synchronized ( runObj ) {
-                runObj.notifyAll();
-            }
-            status = STATUS_SHUTDOWN;
         }
     }
 
@@ -1314,23 +1323,13 @@
     {
         synchronized (invocationObj) {
             isProcessingInvocation.set(Boolean.TRUE);
-            numInvocations++;
         }
     }
 
     public void finishedDispatch()
     {
         synchronized (invocationObj) {
-            numInvocations--;
             isProcessingInvocation.set(Boolean.FALSE);
-            if (numInvocations == 0) {
-                synchronized (waitForCompletionObj) {
-                    waitForCompletionObj.notifyAll();
-                }
-            } else if (numInvocations < 0) {
-                throw wrapper.numInvocationsAlreadyZero(
-                    CompletionStatus.COMPLETED_YES ) ;
-            }
         }
     }
 
@@ -1341,12 +1340,24 @@
      */
     public synchronized void destroy()
     {
-        if (status == STATUS_OPERATING) {
+        boolean shutdownFirst = false ;
+
+        synchronized (this) {
+            shutdownFirst = (status == STATUS_OPERATING) ;
+        }
+
+        if (shutdownFirst) {
             shutdown(true);
         }
-        getCorbaTransportManager().close();
-        getPIHandler().destroyInterceptors() ;
-        status = STATUS_DESTROYED;
+
+        synchronized (this) {
+            if (status < STATUS_DESTROYED) {
+                getCorbaTransportManager().close();
+                getPIHandler().destroyInterceptors() ;
+                status = STATUS_DESTROYED;
+            }
+        }
+
     }
 
     /**
--- a/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBSingleton.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBSingleton.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -135,7 +135,7 @@
 public class ORBSingleton extends ORB
 {
     // This is used to support read_Object.
-    private static ORB fullORB;
+    private ORB fullORB;
     private static PresentationManager.StubFactoryFactory staticStubFactoryFactory =
         PresentationDefaults.getStaticStubFactoryFactory() ;
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -806,25 +806,6 @@
         return result ;
     }
 
-    public static void setDaemon(Thread thread)
-    {
-        // Catch exceptions since setDaemon can cause a
-        // security exception to be thrown under netscape
-        // in the Applet mode
-        final Thread finalThread = thread;
-        try {
-            AccessController.doPrivileged(new PrivilegedAction() {
-                    public java.lang.Object run() {
-                        finalThread.setDaemon(true);
-                        return null;
-                    }
-                });
-        } catch (Exception e) {
-            // REVISIT: Object to get static method. Ignore it.
-            dprint(new Object(), "setDaemon: Exception: " + e);
-        }
-    }
-
     public static String operationNameAndRequestId(CorbaMessageMediator m)
     {
         return "op/" + m.getOperationName() + " id/" + m.getRequestId();
--- a/corba/src/share/classes/com/sun/corba/se/impl/resolver/INSURLOperationImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/resolver/INSURLOperationImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -53,7 +53,8 @@
 import com.sun.corba.se.spi.resolver.Resolver;
 
 import com.sun.corba.se.impl.encoding.EncapsInputStream;
-import com.sun.corba.se.impl.logging.ORBUtilSystemException ;
+import com.sun.corba.se.impl.logging.ORBUtilSystemException;
+import com.sun.corba.se.impl.logging.OMGSystemException;
 import com.sun.corba.se.impl.naming.namingutil.INSURLHandler;
 import com.sun.corba.se.impl.naming.namingutil.IIOPEndpointInfo;
 import com.sun.corba.se.impl.naming.namingutil.INSURL;
@@ -76,6 +77,7 @@
 {
     ORB orb;
     ORBUtilSystemException wrapper ;
+    OMGSystemException omgWrapper ;
     Resolver bootstrapResolver ;
 
     // Root Naming Context for default resolution of names.
@@ -90,6 +92,8 @@
         this.orb = orb ;
         wrapper = ORBUtilSystemException.get( orb,
             CORBALogDomains.ORB_RESOLVER ) ;
+        omgWrapper = OMGSystemException.get( orb,
+            CORBALogDomains.ORB_RESOLVER ) ;
         this.bootstrapResolver = bootstrapResolver ;
     }
 
@@ -126,6 +130,8 @@
                 return getIORFromString( str ) ;
             else {
                 INSURL insURL = insURLHandler.parseURL( str ) ;
+                if (insURL == null)
+                    throw omgWrapper.soBadSchemeName() ;
                 return resolveINSURL( insURL ) ;
             }
         }
--- a/corba/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelConnectionImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelConnectionImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1057,7 +1057,9 @@
 
             // IIOPOutputStream will cleanup the connection info when it
             // sees this exception.
-            throw wrapper.writeErrorSend(e1) ;
+            SystemException exc = wrapper.writeErrorSend(e1);
+            purgeCalls(exc, false, true);
+            throw exc;
         }
     }
 
--- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/ORBUtil.mc	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/ORBUtil.mc	Wed Jul 05 16:52:18 2017 +0200
@@ -1,6 +1,6 @@
 ;
 
-; Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+; Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
 ; DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 ;
 ; This code is free software; you can redistribute it and/or modify it
@@ -144,6 +144,8 @@
 	     15 WARNING "Read of full message failed : bytes requested = {0} bytes read = {1} max wait time = {2} total time spent waiting = {3}")
 	    (CREATE_LISTENER_FAILED 
 	     16 SEVERE "Unable to create listener thread on the specified port: {0}")
+	    (BUFFER_READ_MANAGER_TIMEOUT
+	     17 WARNING "Timeout while reading data in buffer manager")
 	    )
 	(DATA_CONVERSION
 	    (BAD_STRINGIFIED_IOR_LEN 1  WARNING "A character did not map to the transmission code set")
--- a/corba/src/share/classes/com/sun/tools/corba/se/idl/Parser.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/src/share/classes/com/sun/tools/corba/se/idl/Parser.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -2086,8 +2086,8 @@
 
     if (token.type == Token.LeftBrace) {
       repIDStack.push(((IDLID)repIDStack.peek ()).clone ()) ;
+      structEntry = makeStructEntry( name, entry, false ) ;
       ((IDLID)repIDStack.peek ()).appendToName (name);
-      structEntry = makeStructEntry( name, entry, false ) ;
       prep.openScope (structEntry);
       match (Token.LeftBrace) ;
       member (structEntry) ;
@@ -2174,8 +2174,8 @@
 
     if (token.type == Token.Switch) {
       repIDStack.push (((IDLID)repIDStack.peek ()).clone ());
+      unionEntry = makeUnionEntry( name, entry, false ) ;
       ((IDLID)repIDStack.peek ()).appendToName (name);
-      unionEntry = makeUnionEntry( name, entry, false ) ;
       match (Token.Switch);
       match (Token.LeftParen);
       unionEntry.type (switchTypeSpec (unionEntry));
@@ -2641,8 +2641,8 @@
   private void exceptDcl (SymtabEntry entry) throws IOException, ParseException
   {
     match (Token.Exception);
+    repIDStack.push (((IDLID)repIDStack.peek ()).clone ());
     ExceptionEntry exceptEntry = stFactory.exceptionEntry (entry, (IDLID)repIDStack.peek ());
-    repIDStack.push (((IDLID)repIDStack.peek ()).clone ());
     ((IDLID)repIDStack.peek ()).appendToName (token.name);
     exceptEntry.sourceFile (scanner.fileEntry ());
     // Comment must immediately precede "exception" keyword
--- a/corba/src/share/classes/com/sun/tools/corba/se/logutil/InputException.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/src/share/classes/com/sun/tools/corba/se/logutil/InputException.java	Wed Jul 05 16:52:18 2017 +0200
@@ -91,4 +91,3 @@
   }
 
 }
-
--- a/corba/src/share/classes/org/omg/CORBA/ORB.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/corba/src/share/classes/org/omg/CORBA/ORB.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2006 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -289,7 +289,7 @@
      *
      * @return the singleton ORB
      */
-    public static ORB init() {
+    public static synchronized ORB init() {
         if (singleton == null) {
             String className = getSystemProperty(ORBSingletonClassKey);
             if (className == null)
--- a/hotspot/.hgignore	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/.hgignore	Wed Jul 05 16:52:18 2017 +0200
@@ -1,7 +1,7 @@
 ^build/
 ^dist/
 ^nbproject/private/
-^src/share/tools/hsdis/bin/
+^src/share/tools/hsdis/build/
 ^src/share/tools/IdealGraphVisualizer/[a-zA-Z0-9]*/build/
 ^src/share/tools/IdealGraphVisualizer/build/
 ^src/share/tools/IdealGraphVisualizer/dist/
--- a/hotspot/.hgtags	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/.hgtags	Wed Jul 05 16:52:18 2017 +0200
@@ -30,3 +30,4 @@
 032c6af894dae8d939b3dd31d82042549e7793e0 jdk7-b53
 fafab5d5349c7c066d677538db67a1ee0fb33bd2 jdk7-b54
 f8e839c086152da70d6ec5913ba6f9f509282e8d jdk7-b55
+a3fd9e40ff2e854f6169eb6d09d491a28634d04f jdk7-b56
--- a/hotspot/make/hotspot_version	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/make/hotspot_version	Wed Jul 05 16:52:18 2017 +0200
@@ -35,7 +35,7 @@
 
 HS_MAJOR_VER=16
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=01
+HS_BUILD_NUMBER=02
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=7
--- a/hotspot/make/jprt.properties	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/make/jprt.properties	Wed Jul 05 16:52:18 2017 +0200
@@ -46,24 +46,28 @@
 jprt.my.solaris.sparc.jdk6=solaris_sparc_5.8
 jprt.my.solaris.sparc.jdk6perf=solaris_sparc_5.8
 jprt.my.solaris.sparc.jdk6u10=solaris_sparc_5.8
+jprt.my.solaris.sparc.jdk6u14=solaris_sparc_5.8
 jprt.my.solaris.sparc=${jprt.my.solaris.sparc.${jprt.tools.default.release}}
 
 jprt.my.solaris.sparcv9.jdk7=solaris_sparcv9_5.10
 jprt.my.solaris.sparcv9.jdk6=solaris_sparcv9_5.8
 jprt.my.solaris.sparcv9.jdk6perf=solaris_sparcv9_5.8
 jprt.my.solaris.sparcv9.jdk6u10=solaris_sparcv9_5.8
+jprt.my.solaris.sparcv9.jdk6u14=solaris_sparcv9_5.8
 jprt.my.solaris.sparcv9=${jprt.my.solaris.sparcv9.${jprt.tools.default.release}}
 
 jprt.my.solaris.i586.jdk7=solaris_i586_5.10
 jprt.my.solaris.i586.jdk6=solaris_i586_5.8
 jprt.my.solaris.i586.jdk6perf=solaris_i586_5.8
 jprt.my.solaris.i586.jdk6u10=solaris_i586_5.8
+jprt.my.solaris.i586.jdk6u14=solaris_i586_5.8
 jprt.my.solaris.i586=${jprt.my.solaris.i586.${jprt.tools.default.release}}
 
 jprt.my.solaris.x64.jdk7=solaris_x64_5.10
 jprt.my.solaris.x64.jdk6=solaris_x64_5.10
 jprt.my.solaris.x64.jdk6perf=solaris_x64_5.10
 jprt.my.solaris.x64.jdk6u10=solaris_x64_5.10
+jprt.my.solaris.x64.jdk6u14=solaris_x64_5.10
 jprt.my.solaris.x64=${jprt.my.solaris.x64.${jprt.tools.default.release}}
 
 jprt.my.linux.i586=linux_i586
--- a/hotspot/make/solaris/makefiles/sparcWorks.make	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/make/solaris/makefiles/sparcWorks.make	Wed Jul 05 16:52:18 2017 +0200
@@ -46,7 +46,7 @@
 $(shell $(CC) -V 2>&1 | sed -n 's/^.*[ ,\t]C[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p')
 
 # Pick which compiler is validated
-ifeq ($(JDK_MINOR_VERSION),6)
+ifeq ($(JRE_RELEASE_VER),1.6.0)
   # Validated compiler for JDK6 is SS11 (5.8)
   VALIDATED_COMPILER_REV   := 5.8
   VALIDATED_C_COMPILER_REV := 5.8
@@ -101,18 +101,9 @@
 
 # New architecture options started in SS12 (5.9), we need both styles to build.
 #   The older arch options for SS11 (5.8) or older and also for /usr/ccs/bin/as.
-#   Note: SS12 default for 32bit sparc is now the same as v8plus, so the
-#         settings below have changed all SS12 32bit sparc builds to be v8plus.
-#         The older SS11 (5.8) settings have remained as they always have been.
-ifeq ($(TYPE),COMPILER2)
-  ARCHFLAG_OLD/sparc   = -xarch=v8plus
-else
-  ifeq ($(TYPE),TIERED)
-    ARCHFLAG_OLD/sparc = -xarch=v8plus
-  else
-    ARCHFLAG_OLD/sparc = -xarch=v8
-  endif
-endif
+#   Note: default for 32bit sparc is now the same as v8plus, so the
+#         settings below have changed all 32bit sparc builds to be v8plus.
+ARCHFLAG_OLD/sparc   = -xarch=v8plus
 ARCHFLAG_NEW/sparc   = -m32 -xarch=sparc
 ARCHFLAG_OLD/sparcv9 = -xarch=v9
 ARCHFLAG_NEW/sparcv9 = -m64 -xarch=sparc
--- a/hotspot/make/windows/makefiles/vm.make	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/make/windows/makefiles/vm.make	Wed Jul 05 16:52:18 2017 +0200
@@ -55,10 +55,16 @@
 CPP_FLAGS=$(CPP_FLAGS) /D "COMPILER1" /D "COMPILER2"
 !endif
 
+!if "$(BUILDARCH)" == "i486"
+HOTSPOT_LIB_ARCH=i386
+!else
+HOTSPOT_LIB_ARCH=$(BUILDARCH)
+!endif
+
 # The following variables are defined in the generated local.make file.
 CPP_FLAGS=$(CPP_FLAGS) /D "HOTSPOT_RELEASE_VERSION=\"$(HS_BUILD_VER)\""
 CPP_FLAGS=$(CPP_FLAGS) /D "JRE_RELEASE_VERSION=\"$(JRE_RELEASE_VER)\""
-CPP_FLAGS=$(CPP_FLAGS) /D "HOTSPOT_LIB_ARCH=\"$(BUILDARCH)\""
+CPP_FLAGS=$(CPP_FLAGS) /D "HOTSPOT_LIB_ARCH=\"$(HOTSPOT_LIB_ARCH)\""
 CPP_FLAGS=$(CPP_FLAGS) /D "HOTSPOT_BUILD_TARGET=\"$(BUILD_FLAVOR)\""
 CPP_FLAGS=$(CPP_FLAGS) /D "HOTSPOT_BUILD_USER=\"$(BuildUser)\""
 CPP_FLAGS=$(CPP_FLAGS) /D "HOTSPOT_VM_DISTRO=\"$(HOTSPOT_VM_DISTRO)\""
--- a/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -25,24 +25,36 @@
 #include "incls/_precompiled.incl"
 #include "incls/_assembler_sparc.cpp.incl"
 
-// Implementation of Address
-
-Address::Address( addr_type t, int which ) {
-  switch (t) {
-   case extra_in_argument:
-   case extra_out_argument:
-     _base = t == extra_in_argument ? FP : SP;
-     _hi   = 0;
-// Warning:  In LP64 mode, _disp will occupy more than 10 bits.
-//           This is inconsistent with the other constructors but op
-//           codes such as ld or ldx, only access disp() to get their
-//           simm13 argument.
-     _disp = ((which - Argument::n_register_parameters + frame::memory_parameter_word_sp_offset) * BytesPerWord) + STACK_BIAS;
-    break;
-   default:
-    ShouldNotReachHere();
-    break;
+// Convert the raw encoding form into the form expected by the
+// constructor for Address.
+Address Address::make_raw(int base, int index, int scale, int disp, bool disp_is_oop) {
+  assert(scale == 0, "not supported");
+  RelocationHolder rspec;
+  if (disp_is_oop) {
+    rspec = Relocation::spec_simple(relocInfo::oop_type);
   }
+
+  Register rindex = as_Register(index);
+  if (rindex != G0) {
+    Address madr(as_Register(base), rindex);
+    madr._rspec = rspec;
+    return madr;
+  } else {
+    Address madr(as_Register(base), disp);
+    madr._rspec = rspec;
+    return madr;
+  }
+}
+
+Address Argument::address_in_frame() const {
+  // Warning: In LP64 mode disp will occupy more than 10 bits, but
+  //          op codes such as ld or ldx, only access disp() to get
+  //          their simm13 argument.
+  int disp = ((_number - Argument::n_register_parameters + frame::memory_parameter_word_sp_offset) * BytesPerWord) + STACK_BIAS;
+  if (is_in())
+    return Address(FP, disp); // In argument.
+  else
+    return Address(SP, disp); // Out argument.
 }
 
 static const char* argumentNames[][2] = {
@@ -614,16 +626,17 @@
 }
 
 // This code sequence is relocatable to any address, even on LP64.
-void MacroAssembler::jumpl( Address& a, Register d, int offset, const char* file, int line ) {
+void MacroAssembler::jumpl(AddressLiteral& addrlit, Register temp, Register d, int offset, const char* file, int line) {
   assert_not_delayed();
   // Force fixed length sethi because NativeJump and NativeFarCall don't handle
   // variable length instruction streams.
-  sethi(a, /*ForceRelocatable=*/ true);
+  patchable_sethi(addrlit, temp);
+  Address a(temp, addrlit.low10() + offset);  // Add the offset to the displacement.
   if (TraceJumps) {
 #ifndef PRODUCT
     // Must do the add here so relocation can find the remainder of the
     // value to be relocated.
-    add(a.base(), a.disp() + offset, a.base(), a.rspec(offset));
+    add(a.base(), a.disp(), a.base(), addrlit.rspec(offset));
     save_frame(0);
     verify_thread();
     ld(G2_thread, in_bytes(JavaThread::jmp_ring_index_offset()), O0);
@@ -652,15 +665,15 @@
     restore();
     jmpl(a.base(), G0, d);
 #else
-    jmpl(a, d, offset);
+    jmpl(a.base(), a.disp(), d);
 #endif /* PRODUCT */
   } else {
-    jmpl(a, d, offset);
+    jmpl(a.base(), a.disp(), d);
   }
 }
 
-void MacroAssembler::jump( Address& a, int offset, const char* file, int line ) {
-  jumpl( a, G0, offset, file, line );
+void MacroAssembler::jump(AddressLiteral& addrlit, Register temp, int offset, const char* file, int line) {
+  jumpl(addrlit, temp, G0, offset, file, line);
 }
 
 
@@ -678,7 +691,8 @@
     st_ptr(savePtr.as_register(), savePtr.address_in_frame());
   }
   // return the address of the first memory slot
-  add(inArg.address_in_frame(), d);
+  Address a = inArg.address_in_frame();
+  add(a.base(), a.disp(), d);
 }
 
 // Conditional breakpoint (for assertion checks in assembly code)
@@ -702,7 +716,6 @@
 // offset to write to within the page. This minimizes bus traffic
 // due to cache line collision.
 void MacroAssembler::serialize_memory(Register thread, Register tmp1, Register tmp2) {
-  Address mem_serialize_page(tmp1, os::get_memory_serialize_page());
   srl(thread, os::get_serialize_page_shift_count(), tmp2);
   if (Assembler::is_simm13(os::vm_page_size())) {
     and3(tmp2, (os::vm_page_size() - sizeof(int)), tmp2);
@@ -711,7 +724,7 @@
     set((os::vm_page_size() - sizeof(int)), tmp1);
     and3(tmp2, tmp1, tmp2);
   }
-  load_address(mem_serialize_page);
+  set(os::get_memory_serialize_page(), tmp1);
   st(G0, tmp1, tmp2);
 }
 
@@ -830,10 +843,10 @@
   mov(G3, L2);                  // avoid clobbering G3 also
   mov(G4, L5);                  // avoid clobbering G4
 #ifdef ASSERT
-  Address last_get_thread_addr(L3, (address)&last_get_thread);
-  sethi(last_get_thread_addr);
+  AddressLiteral last_get_thread_addrlit(&last_get_thread);
+  set(last_get_thread_addrlit, L3);
   inc(L4, get_pc(L4) + 2 * BytesPerInstWord); // skip getpc() code + inc + st_ptr to point L4 at call
-  st_ptr(L4, last_get_thread_addr);
+  st_ptr(L4, L3, 0);
 #endif
   call(CAST_FROM_FN_PTR(address, reinitialize_thread), relocInfo::runtime_call_type);
   delayed()->nop();
@@ -919,13 +932,9 @@
 // %%% maybe get rid of [re]set_last_Java_frame
 void MacroAssembler::set_last_Java_frame(Register last_java_sp, Register last_Java_pc) {
   assert_not_delayed();
-  Address flags(G2_thread,
-                0,
-                in_bytes(JavaThread::frame_anchor_offset()) +
-                         in_bytes(JavaFrameAnchor::flags_offset()));
-  Address pc_addr(G2_thread,
-                  0,
-                  in_bytes(JavaThread::last_Java_pc_offset()));
+  Address flags(G2_thread, JavaThread::frame_anchor_offset() +
+                           JavaFrameAnchor::flags_offset());
+  Address pc_addr(G2_thread, JavaThread::last_Java_pc_offset());
 
   // Always set last_Java_pc and flags first because once last_Java_sp is visible
   // has_last_Java_frame is true and users will look at the rest of the fields.
@@ -977,22 +986,18 @@
 #endif // ASSERT
   assert( last_java_sp != G4_scratch, "bad register usage in set_last_Java_frame");
   add( last_java_sp, STACK_BIAS, G4_scratch );
-  st_ptr(G4_scratch,    Address(G2_thread, 0, in_bytes(JavaThread::last_Java_sp_offset())));
+  st_ptr(G4_scratch, G2_thread, JavaThread::last_Java_sp_offset());
 #else
-  st_ptr(last_java_sp,    Address(G2_thread, 0, in_bytes(JavaThread::last_Java_sp_offset())));
+  st_ptr(last_java_sp, G2_thread, JavaThread::last_Java_sp_offset());
 #endif // _LP64
 }
 
 void MacroAssembler::reset_last_Java_frame(void) {
   assert_not_delayed();
 
-  Address sp_addr(G2_thread, 0, in_bytes(JavaThread::last_Java_sp_offset()));
-  Address pc_addr(G2_thread,
-                  0,
-                  in_bytes(JavaThread::frame_anchor_offset()) + in_bytes(JavaFrameAnchor::last_Java_pc_offset()));
-  Address flags(G2_thread,
-                0,
-                in_bytes(JavaThread::frame_anchor_offset()) + in_bytes(JavaFrameAnchor::flags_offset()));
+  Address sp_addr(G2_thread, JavaThread::last_Java_sp_offset());
+  Address pc_addr(G2_thread, JavaThread::frame_anchor_offset() + JavaFrameAnchor::last_Java_pc_offset());
+  Address flags  (G2_thread, JavaThread::frame_anchor_offset() + JavaFrameAnchor::flags_offset());
 
 #ifdef ASSERT
   // check that it WAS previously set
@@ -1063,7 +1068,7 @@
   check_and_handle_popframe(scratch_reg);
   check_and_handle_earlyret(scratch_reg);
 
-  Address exception_addr(G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
+  Address exception_addr(G2_thread, Thread::pending_exception_offset());
   ld_ptr(exception_addr, scratch_reg);
   br_null(scratch_reg,false,pt,L);
   delayed()->nop();
@@ -1186,7 +1191,7 @@
 
 void MacroAssembler::get_vm_result(Register oop_result) {
   verify_thread();
-  Address vm_result_addr(G2_thread, 0, in_bytes(JavaThread::vm_result_offset()));
+  Address vm_result_addr(G2_thread, JavaThread::vm_result_offset());
   ld_ptr(    vm_result_addr, oop_result);
   st_ptr(G0, vm_result_addr);
   verify_oop(oop_result);
@@ -1195,7 +1200,7 @@
 
 void MacroAssembler::get_vm_result_2(Register oop_result) {
   verify_thread();
-  Address vm_result_addr_2(G2_thread, 0, in_bytes(JavaThread::vm_result_2_offset()));
+  Address vm_result_addr_2(G2_thread, JavaThread::vm_result_2_offset());
   ld_ptr(vm_result_addr_2, oop_result);
   st_ptr(G0, vm_result_addr_2);
   verify_oop(oop_result);
@@ -1206,7 +1211,7 @@
 // leave it undisturbed.
 void MacroAssembler::set_vm_result(Register oop_result) {
   verify_thread();
-  Address vm_result_addr(G2_thread, 0, in_bytes(JavaThread::vm_result_offset()));
+  Address vm_result_addr(G2_thread, JavaThread::vm_result_offset());
   verify_oop(oop_result);
 
 # ifdef ASSERT
@@ -1234,81 +1239,78 @@
 #else
   srl(obj, CardTableModRefBS::card_shift, obj);
 #endif
-  assert( tmp != obj, "need separate temp reg");
-  Address rs(tmp, (address)byte_map_base);
-  load_address(rs);
-  stb(G0, rs.base(), obj);
+  assert(tmp != obj, "need separate temp reg");
+  set((address) byte_map_base, tmp);
+  stb(G0, tmp, obj);
 }
 
-// %%% Note:  The following six instructions have been moved,
-//            unchanged, from assembler_sparc.inline.hpp.
-//            They will be refactored at a later date.
-
-void MacroAssembler::sethi(intptr_t imm22a,
-                            Register d,
-                            bool ForceRelocatable,
-                            RelocationHolder const& rspec) {
-  Address adr( d, (address)imm22a, rspec );
-  MacroAssembler::sethi( adr, ForceRelocatable );
-}
-
-
-void MacroAssembler::sethi(Address& a, bool ForceRelocatable) {
+
+void MacroAssembler::internal_sethi(const AddressLiteral& addrlit, Register d, bool ForceRelocatable) {
   address save_pc;
   int shiftcnt;
-  // if addr of local, do not need to load it
-  assert(a.base() != FP  &&  a.base() != SP, "just use ld or st for locals");
 #ifdef _LP64
 # ifdef CHECK_DELAY
-  assert_not_delayed( (char *)"cannot put two instructions in delay slot" );
+  assert_not_delayed((char*) "cannot put two instructions in delay slot");
 # endif
   v9_dep();
-//  ForceRelocatable = 1;
   save_pc = pc();
-  if (a.hi32() == 0 && a.low32() >= 0) {
-    Assembler::sethi(a.low32(), a.base(), a.rspec());
+
+  int msb32 = (int) (addrlit.value() >> 32);
+  int lsb32 = (int) (addrlit.value());
+
+  if (msb32 == 0 && lsb32 >= 0) {
+    Assembler::sethi(lsb32, d, addrlit.rspec());
   }
-  else if (a.hi32() == -1) {
-    Assembler::sethi(~a.low32(), a.base(), a.rspec());
-    xor3(a.base(), ~low10(~0), a.base());
+  else if (msb32 == -1) {
+    Assembler::sethi(~lsb32, d, addrlit.rspec());
+    xor3(d, ~low10(~0), d);
   }
   else {
-    Assembler::sethi(a.hi32(), a.base(), a.rspec() );   // 22
-    if ( a.hi32() & 0x3ff )                     // Any bits?
-      or3( a.base(), a.hi32() & 0x3ff ,a.base() ); // High 32 bits are now in low 32
-    if ( a.low32() & 0xFFFFFC00 ) {             // done?
-      if( (a.low32() >> 20) & 0xfff ) {         // Any bits set?
-        sllx(a.base(), 12, a.base());           // Make room for next 12 bits
-        or3( a.base(), (a.low32() >> 20) & 0xfff,a.base() ); // Or in next 12
-        shiftcnt = 0;                           // We already shifted
+    Assembler::sethi(msb32, d, addrlit.rspec());  // msb 22-bits
+    if (msb32 & 0x3ff)                            // Any bits?
+      or3(d, msb32 & 0x3ff, d);                   // msb 32-bits are now in lsb 32
+    if (lsb32 & 0xFFFFFC00) {                     // done?
+      if ((lsb32 >> 20) & 0xfff) {                // Any bits set?
+        sllx(d, 12, d);                           // Make room for next 12 bits
+        or3(d, (lsb32 >> 20) & 0xfff, d);         // Or in next 12
+        shiftcnt = 0;                             // We already shifted
       }
       else
         shiftcnt = 12;
-      if( (a.low32() >> 10) & 0x3ff ) {
-        sllx(a.base(), shiftcnt+10, a.base());// Make room for last 10 bits
-        or3( a.base(), (a.low32() >> 10) & 0x3ff,a.base() ); // Or in next 10
+      if ((lsb32 >> 10) & 0x3ff) {
+        sllx(d, shiftcnt + 10, d);                // Make room for last 10 bits
+        or3(d, (lsb32 >> 10) & 0x3ff, d);         // Or in next 10
         shiftcnt = 0;
       }
       else
         shiftcnt = 10;
-      sllx(a.base(), shiftcnt+10 , a.base());           // Shift leaving disp field 0'd
+      sllx(d, shiftcnt + 10, d);                  // Shift leaving disp field 0'd
     }
     else
-      sllx( a.base(), 32, a.base() );
+      sllx(d, 32, d);
   }
-  // Pad out the instruction sequence so it can be
-  // patched later.
-  if ( ForceRelocatable || (a.rtype() != relocInfo::none &&
-                            a.rtype() != relocInfo::runtime_call_type) ) {
-    while ( pc() < (save_pc + (7 * BytesPerInstWord )) )
+  // Pad out the instruction sequence so it can be patched later.
+  if (ForceRelocatable || (addrlit.rtype() != relocInfo::none &&
+                           addrlit.rtype() != relocInfo::runtime_call_type)) {
+    while (pc() < (save_pc + (7 * BytesPerInstWord)))
       nop();
   }
 #else
-  Assembler::sethi(a.hi(), a.base(), a.rspec());
+  Assembler::sethi(addrlit.value(), d, addrlit.rspec());
 #endif
-
+}
+
+
+void MacroAssembler::sethi(const AddressLiteral& addrlit, Register d) {
+  internal_sethi(addrlit, d, false);
 }
 
+
+void MacroAssembler::patchable_sethi(const AddressLiteral& addrlit, Register d) {
+  internal_sethi(addrlit, d, true);
+}
+
+
 int MacroAssembler::size_of_sethi(address a, bool worst_case) {
 #ifdef _LP64
   if (worst_case) return 7;
@@ -1339,61 +1341,50 @@
   return size_of_sethi(NULL, true) + 1;
 }
 
-void MacroAssembler::set(intptr_t value, Register d,
-                         RelocationHolder const& rspec) {
-  Address val( d, (address)value, rspec);
-
-  if ( rspec.type() == relocInfo::none ) {
+
+void MacroAssembler::internal_set(const AddressLiteral& addrlit, Register d, bool ForceRelocatable) {
+  intptr_t value = addrlit.value();
+
+  if (!ForceRelocatable && addrlit.rspec().type() == relocInfo::none) {
     // can optimize
-    if (-4096 <= value  &&  value <= 4095) {
+    if (-4096 <= value && value <= 4095) {
       or3(G0, value, d); // setsw (this leaves upper 32 bits sign-extended)
       return;
     }
     if (inv_hi22(hi22(value)) == value) {
-      sethi(val);
+      sethi(addrlit, d);
       return;
     }
   }
-  assert_not_delayed( (char *)"cannot put two instructions in delay slot" );
-  sethi( val );
-  if (rspec.type() != relocInfo::none || (value & 0x3ff) != 0) {
-    add( d, value &  0x3ff, d, rspec);
+  assert_not_delayed((char*) "cannot put two instructions in delay slot");
+  internal_sethi(addrlit, d, ForceRelocatable);
+  if (ForceRelocatable || addrlit.rspec().type() != relocInfo::none || addrlit.low10() != 0) {
+    add(d, addrlit.low10(), d, addrlit.rspec());
   }
 }
 
-void MacroAssembler::setsw(int value, Register d,
-                           RelocationHolder const& rspec) {
-  Address val( d, (address)value, rspec);
-  if ( rspec.type() == relocInfo::none ) {
-    // can optimize
-    if (-4096 <= value  &&  value <= 4095) {
-      or3(G0, value, d);
-      return;
-    }
-    if (inv_hi22(hi22(value)) == value) {
-      sethi( val );
-#ifndef _LP64
-      if ( value < 0 ) {
-        assert_not_delayed();
-        sra (d, G0, d);
-      }
-#endif
-      return;
-    }
-  }
-  assert_not_delayed();
-  sethi( val );
-  add( d, value &  0x3ff, d, rspec);
-
-  // (A negative value could be loaded in 2 insns with sethi/xor,
-  // but it would take a more complex relocation.)
-#ifndef _LP64
-  if ( value < 0)
-    sra(d, G0, d);
-#endif
+void MacroAssembler::set(const AddressLiteral& al, Register d) {
+  internal_set(al, d, false);
+}
+
+void MacroAssembler::set(intptr_t value, Register d) {
+  AddressLiteral al(value);
+  internal_set(al, d, false);
 }
 
-// %%% End of moved six set instructions.
+void MacroAssembler::set(address addr, Register d, RelocationHolder const& rspec) {
+  AddressLiteral al(addr, rspec);
+  internal_set(al, d, false);
+}
+
+void MacroAssembler::patchable_set(const AddressLiteral& al, Register d) {
+  internal_set(al, d, true);
+}
+
+void MacroAssembler::patchable_set(intptr_t value, Register d) {
+  AddressLiteral al(value);
+  internal_set(al, d, true);
+}
 
 
 void MacroAssembler::set64(jlong value, Register d, Register tmp) {
@@ -1512,17 +1503,17 @@
 }
 
 
-Address MacroAssembler::allocate_oop_address(jobject obj, Register d) {
+AddressLiteral MacroAssembler::allocate_oop_address(jobject obj) {
   assert(oop_recorder() != NULL, "this assembler needs an OopRecorder");
   int oop_index = oop_recorder()->allocate_index(obj);
-  return Address(d, address(obj), oop_Relocation::spec(oop_index));
+  return AddressLiteral(obj, oop_Relocation::spec(oop_index));
 }
 
 
-Address MacroAssembler::constant_oop_address(jobject obj, Register d) {
+AddressLiteral MacroAssembler::constant_oop_address(jobject obj) {
   assert(oop_recorder() != NULL, "this assembler needs an OopRecorder");
   int oop_index = oop_recorder()->find_index(obj);
-  return Address(d, address(obj), oop_Relocation::spec(oop_index));
+  return AddressLiteral(obj, oop_Relocation::spec(oop_index));
 }
 
 void  MacroAssembler::set_narrow_oop(jobject obj, Register d) {
@@ -1682,7 +1673,7 @@
   sprintf(real_msg, "%s%s(%s:%d)", msg, buffer, file, line);
 
   // Call indirectly to solve generation ordering problem
-  Address a(O7, (address)StubRoutines::verify_oop_subroutine_entry_address());
+  AddressLiteral a(StubRoutines::verify_oop_subroutine_entry_address());
 
   // Make some space on stack above the current register window.
   // Enough to hold 8 64-bit registers.
@@ -1718,7 +1709,7 @@
   sprintf(real_msg, "%s at SP+%d (%s:%d)", msg, addr.disp(), file, line);
 
   // Call indirectly to solve generation ordering problem
-  Address a(O7, (address)StubRoutines::verify_oop_subroutine_entry_address());
+  AddressLiteral a(StubRoutines::verify_oop_subroutine_entry_address());
 
   // Make some space on stack above the current register window.
   // Enough to hold 8 64-bit registers.
@@ -1772,11 +1763,7 @@
   { // count number of verifies
     Register O2_adr   = O2;
     Register O3_accum = O3;
-    Address count_addr( O2_adr, (address) StubRoutines::verify_oop_count_addr() );
-    sethi(count_addr);
-    ld(count_addr, O3_accum);
-    inc(O3_accum);
-    st(O3_accum, count_addr);
+    inc_counter(StubRoutines::verify_oop_count_addr(), O2_adr, O3_accum);
   }
 
   Register O2_mask = O2;
@@ -1870,8 +1857,8 @@
   assert(StubRoutines::Sparc::stop_subroutine_entry_address(), "hasn't been generated yet");
 
   // call indirectly to solve generation ordering problem
-  Address a(O5, (address)StubRoutines::Sparc::stop_subroutine_entry_address());
-  load_ptr_contents(a, O5);
+  AddressLiteral al(StubRoutines::Sparc::stop_subroutine_entry_address());
+  load_ptr_contents(al, O5);
   jmpl(O5, 0, O7);
   delayed()->nop();
 }
@@ -1891,7 +1878,7 @@
     assert(StubRoutines::Sparc::stop_subroutine_entry_address(), "hasn't been generated yet");
 
     // call indirectly to solve generation ordering problem
-    Address a(O5, (address)StubRoutines::Sparc::stop_subroutine_entry_address());
+    AddressLiteral a(StubRoutines::Sparc::stop_subroutine_entry_address());
     load_ptr_contents(a, O5);
     jmpl(O5, 0, O7);
     delayed()->nop();
@@ -2003,7 +1990,7 @@
   subcc( Rparam_words, Argument::n_register_parameters, Rresult); // how many mem words?
   Label no_extras;
   br( negative, true, pt, no_extras ); // if neg, clear reg
-  delayed()->set( 0, Rresult);         // annuled, so only if taken
+  delayed()->set(0, Rresult);          // annuled, so only if taken
   bind( no_extras );
 }
 
@@ -2623,7 +2610,7 @@
     return RegisterOrConstant(value + offset);
 
   // load indirectly to solve generation ordering problem
-  Address a(tmp, (address) delayed_value_addr);
+  AddressLiteral a(delayed_value_addr);
   load_ptr_contents(a, tmp);
 
 #ifdef ASSERT
@@ -3107,21 +3094,21 @@
   delayed()->nop();
 
   load_klass(obj_reg, temp_reg);
-  ld_ptr(Address(temp_reg, 0, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg);
+  ld_ptr(Address(temp_reg, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg);
   or3(G2_thread, temp_reg, temp_reg);
   xor3(mark_reg, temp_reg, temp_reg);
   andcc(temp_reg, ~((int) markOopDesc::age_mask_in_place), temp_reg);
   if (counters != NULL) {
     cond_inc(Assembler::equal, (address) counters->biased_lock_entry_count_addr(), mark_reg, temp_reg);
     // Reload mark_reg as we may need it later
-    ld_ptr(Address(obj_reg, 0, oopDesc::mark_offset_in_bytes()), mark_reg);
+    ld_ptr(Address(obj_reg, oopDesc::mark_offset_in_bytes()), mark_reg);
   }
   brx(Assembler::equal, true, Assembler::pt, done);
   delayed()->nop();
 
   Label try_revoke_bias;
   Label try_rebias;
-  Address mark_addr = Address(obj_reg, 0, oopDesc::mark_offset_in_bytes());
+  Address mark_addr = Address(obj_reg, oopDesc::mark_offset_in_bytes());
   assert(mark_addr.disp() == 0, "cas must take a zero displacement");
 
   // At this point we know that the header has the bias pattern and
@@ -3185,7 +3172,7 @@
   // FIXME: due to a lack of registers we currently blow away the age
   // bits in this situation. Should attempt to preserve them.
   load_klass(obj_reg, temp_reg);
-  ld_ptr(Address(temp_reg, 0, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg);
+  ld_ptr(Address(temp_reg, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg);
   or3(G2_thread, temp_reg, temp_reg);
   casn(mark_addr.base(), mark_reg, temp_reg);
   // If the biasing toward our thread failed, this means that
@@ -3216,7 +3203,7 @@
   // FIXME: due to a lack of registers we currently blow away the age
   // bits in this situation. Should attempt to preserve them.
   load_klass(obj_reg, temp_reg);
-  ld_ptr(Address(temp_reg, 0, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg);
+  ld_ptr(Address(temp_reg, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg);
   casn(mark_addr.base(), mark_reg, temp_reg);
   // Fall through to the normal CAS-based lock, because no matter what
   // the result of the above CAS, some thread must have succeeded in
@@ -3283,7 +3270,7 @@
                                           Register Rbox, Register Rscratch,
                                           BiasedLockingCounters* counters,
                                           bool try_bias) {
-   Address mark_addr(Roop, 0, oopDesc::mark_offset_in_bytes());
+   Address mark_addr(Roop, oopDesc::mark_offset_in_bytes());
 
    verify_oop(Roop);
    Label done ;
@@ -3386,7 +3373,7 @@
          // If m->owner != null goto IsLocked
          // Pessimistic form: Test-and-CAS vs CAS
          // The optimistic form avoids RTS->RTO cache line upgrades.
-         ld_ptr (Address (Rmark, 0, ObjectMonitor::owner_offset_in_bytes()-2), Rscratch) ;
+         ld_ptr (Rmark, ObjectMonitor::owner_offset_in_bytes() - 2, Rscratch);
          andcc  (Rscratch, Rscratch, G0) ;
          brx    (Assembler::notZero, false, Assembler::pn, done) ;
          delayed()->nop() ;
@@ -3482,7 +3469,7 @@
          // Test-and-CAS vs CAS
          // Pessimistic form avoids futile (doomed) CAS attempts
          // The optimistic form avoids RTS->RTO cache line upgrades.
-         ld_ptr (Address (Rmark, 0, ObjectMonitor::owner_offset_in_bytes()-2), Rscratch) ;
+         ld_ptr (Rmark, ObjectMonitor::owner_offset_in_bytes() - 2, Rscratch);
          andcc  (Rscratch, Rscratch, G0) ;
          brx    (Assembler::notZero, false, Assembler::pn, done) ;
          delayed()->nop() ;
@@ -3508,7 +3495,7 @@
 void MacroAssembler::compiler_unlock_object(Register Roop, Register Rmark,
                                             Register Rbox, Register Rscratch,
                                             bool try_bias) {
-   Address mark_addr(Roop, 0, oopDesc::mark_offset_in_bytes());
+   Address mark_addr(Roop, oopDesc::mark_offset_in_bytes());
 
    Label done ;
 
@@ -3568,14 +3555,14 @@
    // Note that we use 1-0 locking by default for the inflated case.  We
    // close the resultant (and rare) race by having contented threads in
    // monitorenter periodically poll _owner.
-   ld_ptr (Address(Rmark, 0, ObjectMonitor::owner_offset_in_bytes()-2), Rscratch) ;
-   ld_ptr (Address(Rmark, 0, ObjectMonitor::recursions_offset_in_bytes()-2), Rbox) ;
+   ld_ptr (Rmark, ObjectMonitor::owner_offset_in_bytes() - 2, Rscratch);
+   ld_ptr (Rmark, ObjectMonitor::recursions_offset_in_bytes() - 2, Rbox);
    xor3   (Rscratch, G2_thread, Rscratch) ;
    orcc   (Rbox, Rscratch, Rbox) ;
    brx    (Assembler::notZero, false, Assembler::pn, done) ;
    delayed()->
-   ld_ptr (Address (Rmark, 0, ObjectMonitor::EntryList_offset_in_bytes()-2), Rscratch) ;
-   ld_ptr (Address (Rmark, 0, ObjectMonitor::cxq_offset_in_bytes()-2), Rbox) ;
+   ld_ptr (Rmark, ObjectMonitor::EntryList_offset_in_bytes() - 2, Rscratch);
+   ld_ptr (Rmark, ObjectMonitor::cxq_offset_in_bytes() - 2, Rbox);
    orcc   (Rbox, Rscratch, G0) ;
    if (EmitSync & 65536) {
       Label LSucc ;
@@ -3583,12 +3570,12 @@
       delayed()->nop() ;
       br     (Assembler::always, false, Assembler::pt, done) ;
       delayed()->
-      st_ptr (G0, Address (Rmark, 0, ObjectMonitor::owner_offset_in_bytes()-2)) ;
+      st_ptr (G0, Rmark, ObjectMonitor::owner_offset_in_bytes() - 2);
 
       bind   (LSucc) ;
-      st_ptr (G0, Address (Rmark, 0, ObjectMonitor::owner_offset_in_bytes()-2)) ;
+      st_ptr (G0, Rmark, ObjectMonitor::owner_offset_in_bytes() - 2);
       if (os::is_MP()) { membar (StoreLoad) ; }
-      ld_ptr (Address (Rmark, 0, ObjectMonitor::succ_offset_in_bytes()-2), Rscratch) ;
+      ld_ptr (Rmark, ObjectMonitor::succ_offset_in_bytes() - 2, Rscratch);
       andcc  (Rscratch, Rscratch, G0) ;
       brx    (Assembler::notZero, false, Assembler::pt, done) ;
       delayed()-> andcc (G0, G0, G0) ;
@@ -3606,7 +3593,7 @@
       delayed()->nop() ;
       br     (Assembler::always, false, Assembler::pt, done) ;
       delayed()->
-      st_ptr (G0, Address (Rmark, 0, ObjectMonitor::owner_offset_in_bytes()-2)) ;
+      st_ptr (G0, Rmark, ObjectMonitor::owner_offset_in_bytes() - 2);
    }
 
    bind   (LStacked) ;
@@ -4005,20 +3992,26 @@
   bind(L);
 }
 
-void MacroAssembler::inc_counter(address counter_ptr, Register Rtmp1, Register Rtmp2) {
-  Address counter_addr(Rtmp1, counter_ptr);
-  load_contents(counter_addr, Rtmp2);
+void MacroAssembler::inc_counter(address counter_addr, Register Rtmp1, Register Rtmp2) {
+  AddressLiteral addrlit(counter_addr);
+  sethi(addrlit, Rtmp1);                 // Move hi22 bits into temporary register.
+  Address addr(Rtmp1, addrlit.low10());  // Build an address with low10 bits.
+  ld(addr, Rtmp2);
   inc(Rtmp2);
-  store_contents(Rtmp2, counter_addr);
+  st(Rtmp2, addr);
+}
+
+void MacroAssembler::inc_counter(int* counter_addr, Register Rtmp1, Register Rtmp2) {
+  inc_counter((address) counter_addr, Rtmp1, Rtmp2);
 }
 
 SkipIfEqual::SkipIfEqual(
     MacroAssembler* masm, Register temp, const bool* flag_addr,
     Assembler::Condition condition) {
   _masm = masm;
-  Address flag(temp, (address)flag_addr, relocInfo::none);
-  _masm->sethi(flag);
-  _masm->ldub(flag, temp);
+  AddressLiteral flag(flag_addr);
+  _masm->sethi(flag, temp);
+  _masm->ldub(temp, flag.low10(), temp);
   _masm->tst(temp);
   _masm->br(condition, false, Assembler::pt, _label);
   _masm->delayed()->nop();
@@ -4333,8 +4326,8 @@
 #else
   masm.srl(O0, CardTableModRefBS::card_shift, O0);
 #endif
-  Address rs(O1, (address)byte_map_base);
-  masm.load_address(rs); // O1 := <card table base>
+  AddressLiteral addrlit(byte_map_base);
+  masm.set(addrlit, O1); // O1 := <card table base>
   masm.ldub(O0, O1, O2); // O2 := [O0 + O1]
 
   masm.br_on_reg_cond(Assembler::rc_nz, /*annul*/false, Assembler::pt,
@@ -4494,10 +4487,9 @@
 #else
     post_filter_masm->srl(store_addr, CardTableModRefBS::card_shift, store_addr);
 #endif
-    assert( tmp != store_addr, "need separate temp reg");
-    Address rs(tmp, (address)bs->byte_map_base);
-    load_address(rs);
-    stb(G0, rs.base(), store_addr);
+    assert(tmp != store_addr, "need separate temp reg");
+    set(bs->byte_map_base, tmp);
+    stb(G0, tmp, store_addr);
   }
 
   bind(filtered);
@@ -4516,24 +4508,6 @@
   card_table_write(bs->byte_map_base, tmp, store_addr);
 }
 
-// Loading values by size and signed-ness
-void MacroAssembler::load_sized_value(Register s1, RegisterOrConstant s2, Register d,
-                                      int size_in_bytes, bool is_signed) {
-  switch (size_in_bytes ^ (is_signed ? -1 : 0)) {
-  case ~8:  // fall through:
-  case  8:  ld_long( s1, s2, d ); break;
-  case ~4:  ldsw(    s1, s2, d ); break;
-  case  4:  lduw(    s1, s2, d ); break;
-  case ~2:  ldsh(    s1, s2, d ); break;
-  case  2:  lduh(    s1, s2, d ); break;
-  case ~1:  ldsb(    s1, s2, d ); break;
-  case  1:  ldub(    s1, s2, d ); break;
-  default:  ShouldNotReachHere();
-  }
-}
-
-
-
 void MacroAssembler::load_klass(Register src_oop, Register klass) {
   // The number of bytes in this code is used by
   // MachCallDynamicJavaNode::ret_addr_offset()
@@ -4563,12 +4537,12 @@
   }
 }
 
-void MacroAssembler::load_heap_oop(const Address& s, Register d, int offset) {
+void MacroAssembler::load_heap_oop(const Address& s, Register d) {
   if (UseCompressedOops) {
-    lduw(s, d, offset);
+    lduw(s, d);
     decode_heap_oop(d);
   } else {
-    ld_ptr(s, d, offset);
+    ld_ptr(s, d);
   }
 }
 
@@ -4714,7 +4688,7 @@
 void MacroAssembler::reinit_heapbase() {
   if (UseCompressedOops) {
     // call indirectly to solve generation ordering problem
-    Address base(G6_heapbase, (address)Universe::narrow_oop_base_addr());
+    AddressLiteral base(Universe::narrow_oop_base_addr());
     load_ptr_contents(base, G6_heapbase);
   }
 }
--- a/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -274,21 +274,90 @@
 
 class Address VALUE_OBJ_CLASS_SPEC {
  private:
-  Register              _base;
-#ifdef _LP64
-  int                   _hi32;          // bits 63::32
-  int                   _low32;         // bits 31::0
+  Register           _base;           // Base register.
+  RegisterOrConstant _index_or_disp;  // Index register or constant displacement.
+  RelocationHolder   _rspec;
+
+ public:
+  Address() : _base(noreg), _index_or_disp(noreg) {}
+
+  Address(Register base, RegisterOrConstant index_or_disp)
+    : _base(base),
+      _index_or_disp(index_or_disp) {
+  }
+
+  Address(Register base, Register index)
+    : _base(base),
+      _index_or_disp(index) {
+  }
+
+  Address(Register base, int disp)
+    : _base(base),
+      _index_or_disp(disp) {
+  }
+
+#ifdef ASSERT
+  // ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+  Address(Register base, ByteSize disp)
+    : _base(base),
+      _index_or_disp(in_bytes(disp)) {
+  }
 #endif
-  int                   _hi;
-  int                   _disp;
-  RelocationHolder      _rspec;
-
-  RelocationHolder rspec_from_rtype(relocInfo::relocType rt, address a = NULL) {
-    switch (rt) {
+
+  // accessors
+  Register base()      const { return _base; }
+  Register index()     const { return _index_or_disp.as_register(); }
+  int      disp()      const { return _index_or_disp.as_constant(); }
+
+  bool     has_index() const { return _index_or_disp.is_register(); }
+  bool     has_disp()  const { return _index_or_disp.is_constant(); }
+
+  const relocInfo::relocType rtype() { return _rspec.type(); }
+  const RelocationHolder&    rspec() { return _rspec; }
+
+  RelocationHolder rspec(int offset) const {
+    return offset == 0 ? _rspec : _rspec.plus(offset);
+  }
+
+  inline bool is_simm13(int offset = 0);  // check disp+offset for overflow
+
+  Address plus_disp(int plusdisp) const {     // bump disp by a small amount
+    assert(_index_or_disp.is_constant(), "must have a displacement");
+    Address a(base(), disp() + plusdisp);
+    return a;
+  }
+
+  Address after_save() const {
+    Address a = (*this);
+    a._base = a._base->after_save();
+    return a;
+  }
+
+  Address after_restore() const {
+    Address a = (*this);
+    a._base = a._base->after_restore();
+    return a;
+  }
+
+  // Convert the raw encoding form into the form expected by the
+  // constructor for Address.
+  static Address make_raw(int base, int index, int scale, int disp, bool disp_is_oop);
+
+  friend class Assembler;
+};
+
+
+class AddressLiteral VALUE_OBJ_CLASS_SPEC {
+ private:
+  address          _address;
+  RelocationHolder _rspec;
+
+  RelocationHolder rspec_from_rtype(relocInfo::relocType rtype, address addr) {
+    switch (rtype) {
     case relocInfo::external_word_type:
-      return external_word_Relocation::spec(a);
+      return external_word_Relocation::spec(addr);
     case relocInfo::internal_word_type:
-      return internal_word_Relocation::spec(a);
+      return internal_word_Relocation::spec(addr);
 #ifdef _LP64
     case relocInfo::opt_virtual_call_type:
       return opt_virtual_call_Relocation::spec();
@@ -305,127 +374,86 @@
     }
   }
 
+ protected:
+  // creation
+  AddressLiteral() : _address(NULL), _rspec(NULL) {}
+
  public:
-  Address(Register b, address a, relocInfo::relocType rt = relocInfo::none)
-    : _rspec(rspec_from_rtype(rt, a))
-  {
-    _base  = b;
-#ifdef _LP64
-    _hi32  = (intptr_t)a >> 32;    // top 32 bits in 64 bit word
-    _low32 = (intptr_t)a & ~0;     // low 32 bits in 64 bit word
-#endif
-    _hi    = (intptr_t)a & ~0x3ff; // top    22 bits in low word
-    _disp  = (intptr_t)a &  0x3ff; // bottom 10 bits
-  }
-
-  Address(Register b, address a, RelocationHolder const& rspec)
-    : _rspec(rspec)
-  {
-    _base  = b;
+  AddressLiteral(address addr, RelocationHolder const& rspec)
+    : _address(addr),
+      _rspec(rspec) {}
+
+  // Some constructors to avoid casting at the call site.
+  AddressLiteral(jobject obj, RelocationHolder const& rspec)
+    : _address((address) obj),
+      _rspec(rspec) {}
+
+  AddressLiteral(intptr_t value, RelocationHolder const& rspec)
+    : _address((address) value),
+      _rspec(rspec) {}
+
+  AddressLiteral(address addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+    _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  // Some constructors to avoid casting at the call site.
+  AddressLiteral(address* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+    _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(bool* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(const bool* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(signed char* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(int* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(intptr_t addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
 #ifdef _LP64
-    _hi32  = (intptr_t)a >> 32;    // top 32 bits in 64 bit word
-    _low32 = (intptr_t)a & ~0;     // low 32 bits in 64 bit word
-#endif
-    _hi    = (intptr_t)a & ~0x3ff; // top    22 bits
-    _disp  = (intptr_t)a &  0x3ff; // bottom 10 bits
-  }
-
-  Address(Register b, intptr_t h, intptr_t d, RelocationHolder const& rspec = RelocationHolder())
-    : _rspec(rspec)
-  {
-    _base  = b;
-#ifdef _LP64
-// [RGV] Put in Assert to force me to check usage of this constructor
-     assert( h == 0, "Check usage of this constructor" );
-    _hi32  = h;
-    _low32 = d;
-    _hi    = h;
-    _disp  = d;
-#else
-    _hi    = h;
-    _disp  = d;
+  // 32-bit complains about a multiple declaration for int*.
+  AddressLiteral(intptr_t* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
 #endif
-  }
-
-  Address()
-    : _rspec(RelocationHolder())
-  {
-    _base  = G0;
-#ifdef _LP64
-    _hi32  = 0;
-    _low32 = 0;
-#endif
-    _hi    = 0;
-    _disp  = 0;
-  }
-
-  // fancier constructors
-
-  enum addr_type {
-    extra_in_argument,  // in the In registers
-    extra_out_argument  // in the Outs
-  };
-
-  Address( addr_type, int );
-
-  // accessors
-
-  Register               base() const { return _base; }
-#ifdef _LP64
-  int                   hi32()  const { return _hi32; }
-  int                   low32() const { return _low32; }
-#endif
-  int                      hi() const { return _hi;  }
-  int                    disp() const { return _disp; }
-#ifdef _LP64
-  intptr_t              value() const { return ((intptr_t)_hi32 << 32) |
-                                                (intptr_t)(uint32_t)_low32; }
-#else
-  int                   value() const { return _hi | _disp; }
-#endif
-  const relocInfo::relocType  rtype() { return _rspec.type(); }
-  const RelocationHolder&     rspec() { return _rspec; }
-
-  RelocationHolder      rspec(int offset) const {
+
+  AddressLiteral(oop addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(float* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(double* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  intptr_t value() const { return (intptr_t) _address; }
+  int      low10() const;
+
+  const relocInfo::relocType rtype() const { return _rspec.type(); }
+  const RelocationHolder&    rspec() const { return _rspec; }
+
+  RelocationHolder rspec(int offset) const {
     return offset == 0 ? _rspec : _rspec.plus(offset);
   }
-
-  inline bool is_simm13(int offset = 0);  // check disp+offset for overflow
-
-  Address plus_disp(int disp) const {     // bump disp by a small amount
-    Address a = (*this);
-    a._disp += disp;
-    return a;
-  }
-
-  Address split_disp() const {            // deal with disp overflow
-    Address a = (*this);
-    int hi_disp = _disp & ~0x3ff;
-    if (hi_disp != 0) {
-      a._disp -= hi_disp;
-      a._hi   += hi_disp;
-    }
-    return a;
-  }
-
-  Address after_save() const {
-    Address a = (*this);
-    a._base = a._base->after_save();
-    return a;
-  }
-
-  Address after_restore() const {
-    Address a = (*this);
-    a._base = a._base->after_restore();
-    return a;
-  }
-
-  friend class Assembler;
 };
 
 
 inline Address RegisterImpl::address_in_saved_window() const {
-   return (Address(SP, 0, (sp_offset_in_saved_window() * wordSize) + STACK_BIAS));
+   return (Address(SP, (sp_offset_in_saved_window() * wordSize) + STACK_BIAS));
 }
 
 
@@ -495,11 +523,7 @@
   // When applied to a register-based argument, give the corresponding address
   // into the 6-word area "into which callee may store register arguments"
   // (This is a different place than the corresponding register-save area location.)
-  Address address_in_frame() const {
-    return Address( is_in()   ? Address::extra_in_argument
-                              : Address::extra_out_argument,
-                    _number );
-  }
+  Address address_in_frame() const;
 
   // debugging
   const char* name() const;
@@ -521,6 +545,7 @@
 
 
   friend class AbstractAssembler;
+  friend class AddressLiteral;
 
   // code patchers need various routines like inv_wdisp()
   friend class NativeInstruction;
@@ -1093,11 +1118,11 @@
 
   // pp 135 (addc was addx in v8)
 
-  inline void add(    Register s1, Register s2, Register d );
-  inline void add(    Register s1, int simm13a, Register d, relocInfo::relocType rtype = relocInfo::none);
-  inline void add(    Register s1, int simm13a, Register d, RelocationHolder const& rspec);
-  inline void add(    Register s1, RegisterOrConstant s2, Register d, int offset = 0);
-  inline void add(    const Address&  a,                  Register d, int offset = 0);
+  inline void add(Register s1, Register s2, Register d );
+  inline void add(Register s1, int simm13a, Register d, relocInfo::relocType rtype = relocInfo::none);
+  inline void add(Register s1, int simm13a, Register d, RelocationHolder const& rspec);
+  inline void add(Register s1, RegisterOrConstant s2, Register d, int offset = 0);
+  inline void add(const Address& a, Register d, int offset = 0) { add( a.base(), a.disp() + offset, d, a.rspec(offset)); }
 
   void addcc(  Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(add_op3  | cc_bit_op3) | rs1(s1) | rs2(s2) ); }
   void addcc(  Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(add_op3  | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13) ); }
@@ -1252,14 +1277,12 @@
   void jmpl( Register s1, Register s2, Register d );
   void jmpl( Register s1, int simm13a, Register d, RelocationHolder const& rspec = RelocationHolder() );
 
-  inline void jmpl( Address& a, Register d, int offset = 0);
-
   // 171
 
-  inline void ldf(    FloatRegisterImpl::Width w, Register s1, Register s2, FloatRegister d );
-  inline void ldf(    FloatRegisterImpl::Width w, Register s1, int simm13a, FloatRegister d );
-
-  inline void ldf(    FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset = 0);
+  inline void ldf(FloatRegisterImpl::Width w, Register s1, Register s2, FloatRegister d);
+  inline void ldf(FloatRegisterImpl::Width w, Register s1, int simm13a, FloatRegister d, RelocationHolder const& rspec = RelocationHolder());
+
+  inline void ldf(FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset = 0);
 
 
   inline void ldfsr(  Register s1, Register s2 );
@@ -1303,15 +1326,20 @@
   inline void ldd(   Register s1, Register s2, Register d );
   inline void ldd(   Register s1, int simm13a, Register d);
 
-  inline void ldsb( const Address& a, Register d, int offset = 0 );
-  inline void ldsh( const Address& a, Register d, int offset = 0 );
-  inline void ldsw( const Address& a, Register d, int offset = 0 );
-  inline void ldub( const Address& a, Register d, int offset = 0 );
-  inline void lduh( const Address& a, Register d, int offset = 0 );
-  inline void lduw( const Address& a, Register d, int offset = 0 );
-  inline void ldx(  const Address& a, Register d, int offset = 0 );
-  inline void ld(   const Address& a, Register d, int offset = 0 );
-  inline void ldd(  const Address& a, Register d, int offset = 0 );
+#ifdef ASSERT
+  // ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+  inline void ld(    Register s1, ByteSize simm13a, Register d);
+#endif
+
+  inline void ldsb(const Address& a, Register d, int offset = 0);
+  inline void ldsh(const Address& a, Register d, int offset = 0);
+  inline void ldsw(const Address& a, Register d, int offset = 0);
+  inline void ldub(const Address& a, Register d, int offset = 0);
+  inline void lduh(const Address& a, Register d, int offset = 0);
+  inline void lduw(const Address& a, Register d, int offset = 0);
+  inline void ldx( const Address& a, Register d, int offset = 0);
+  inline void ld(  const Address& a, Register d, int offset = 0);
+  inline void ldd( const Address& a, Register d, int offset = 0);
 
   inline void ldub(  Register s1, RegisterOrConstant s2, Register d );
   inline void ldsb(  Register s1, RegisterOrConstant s2, Register d );
@@ -1536,6 +1564,11 @@
   inline void std(  Register d, Register s1, Register s2 );
   inline void std(  Register d, Register s1, int simm13a);
 
+#ifdef ASSERT
+  // ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+  inline void st(   Register d, Register s1, ByteSize simm13a);
+#endif
+
   inline void stb(  Register d, const Address& a, int offset = 0 );
   inline void sth(  Register d, const Address& a, int offset = 0 );
   inline void stw(  Register d, const Address& a, int offset = 0 );
@@ -1684,8 +1717,8 @@
 
 #define JMP2(r1, r2) jmp(r1, r2, __FILE__, __LINE__)
 #define JMP(r1, off) jmp(r1, off, __FILE__, __LINE__)
-#define JUMP(a, off)     jump(a, off, __FILE__, __LINE__)
-#define JUMPL(a, d, off) jumpl(a, d, off, __FILE__, __LINE__)
+#define JUMP(a, temp, off)     jump(a, temp, off, __FILE__, __LINE__)
+#define JUMPL(a, temp, d, off) jumpl(a, temp, d, off, __FILE__, __LINE__)
 
 
 class MacroAssembler: public Assembler {
@@ -1830,17 +1863,26 @@
 #endif
 
   // sethi Macro handles optimizations and relocations
-  void sethi( Address& a, bool ForceRelocatable = false );
-  void sethi( intptr_t imm22a, Register d, bool ForceRelocatable = false, RelocationHolder const& rspec = RelocationHolder());
+private:
+  void internal_sethi(const AddressLiteral& addrlit, Register d, bool ForceRelocatable);
+public:
+  void sethi(const AddressLiteral& addrlit, Register d);
+  void patchable_sethi(const AddressLiteral& addrlit, Register d);
 
   // compute the size of a sethi/set
   static int  size_of_sethi( address a, bool worst_case = false );
   static int  worst_case_size_of_set();
 
   // set may be either setsw or setuw (high 32 bits may be zero or sign)
-  void set(    intptr_t value, Register d, RelocationHolder const& rspec = RelocationHolder() );
-  void setsw(  int value, Register d, RelocationHolder const& rspec = RelocationHolder() );
-  void set64(  jlong value, Register d, Register tmp);
+private:
+  void internal_set(const AddressLiteral& al, Register d, bool ForceRelocatable);
+public:
+  void set(const AddressLiteral& addrlit, Register d);
+  void set(intptr_t value, Register d);
+  void set(address addr, Register d, RelocationHolder const& rspec);
+  void patchable_set(const AddressLiteral& addrlit, Register d);
+  void patchable_set(intptr_t value, Register d);
+  void set64(jlong value, Register d, Register tmp);
 
   // sign-extend 32 to 64
   inline void signx( Register s, Register d ) { sra( s, G0, d); }
@@ -1930,24 +1972,22 @@
   inline void mov( int simm13a, Register d) { or3( G0, simm13a, d); }
 
   // address pseudos: make these names unlike instruction names to avoid confusion
-  inline void split_disp(    Address& a, Register temp );
   inline intptr_t load_pc_address( Register reg, int bytes_to_skip );
-  inline void load_address(  Address& a, int offset = 0 );
-  inline void load_contents( Address& a, Register d, int offset = 0 );
-  inline void load_ptr_contents( Address& a, Register d, int offset = 0 );
-  inline void store_contents( Register s, Address& a, int offset = 0 );
-  inline void store_ptr_contents( Register s, Address& a, int offset = 0 );
-  inline void jumpl_to( Address& a, Register d, int offset = 0 );
-  inline void jump_to(  Address& a,             int offset = 0 );
-  inline void jump_indirect_to(  Address& a, Register temp, int ld_offset = 0, int jmp_offset = 0 );
+  inline void load_contents(AddressLiteral& addrlit, Register d, int offset = 0);
+  inline void load_ptr_contents(AddressLiteral& addrlit, Register d, int offset = 0);
+  inline void store_contents(Register s, AddressLiteral& addrlit, Register temp, int offset = 0);
+  inline void store_ptr_contents(Register s, AddressLiteral& addrlit, Register temp, int offset = 0);
+  inline void jumpl_to(AddressLiteral& addrlit, Register temp, Register d, int offset = 0);
+  inline void jump_to(AddressLiteral& addrlit, Register temp, int offset = 0);
+  inline void jump_indirect_to(Address& a, Register temp, int ld_offset = 0, int jmp_offset = 0);
 
   // ring buffer traceable jumps
 
   void jmp2( Register r1, Register r2, const char* file, int line );
   void jmp ( Register r1, int offset,  const char* file, int line );
 
-  void jumpl( Address& a, Register d, int offset, const char* file, int line );
-  void jump ( Address& a,             int offset, const char* file, int line );
+  void jumpl(AddressLiteral& addrlit, Register temp, Register d, int offset, const char* file, int line);
+  void jump (AddressLiteral& addrlit, Register temp,             int offset, const char* file, int line);
 
 
   // argument pseudos:
@@ -1972,29 +2012,31 @@
   // Functions for isolating 64 bit loads for LP64
   // ld_ptr will perform ld for 32 bit VM's and ldx for 64 bit VM's
   // st_ptr will perform st for 32 bit VM's and stx for 64 bit VM's
-  inline void ld_ptr(   Register s1, Register s2, Register d );
-  inline void ld_ptr(   Register s1, int simm13a, Register d);
-  inline void ld_ptr(   Register s1, RegisterOrConstant s2, Register d );
-  inline void ld_ptr(  const Address& a, Register d, int offset = 0 );
-  inline void st_ptr(  Register d, Register s1, Register s2 );
-  inline void st_ptr(  Register d, Register s1, int simm13a);
-  inline void st_ptr(  Register d, Register s1, RegisterOrConstant s2 );
-  inline void st_ptr(  Register d, const Address& a, int offset = 0 );
+  inline void ld_ptr(Register s1, Register s2, Register d);
+  inline void ld_ptr(Register s1, int simm13a, Register d);
+  inline void ld_ptr(Register s1, RegisterOrConstant s2, Register d);
+  inline void ld_ptr(const Address& a, Register d, int offset = 0);
+  inline void st_ptr(Register d, Register s1, Register s2);
+  inline void st_ptr(Register d, Register s1, int simm13a);
+  inline void st_ptr(Register d, Register s1, RegisterOrConstant s2);
+  inline void st_ptr(Register d, const Address& a, int offset = 0);
+
+#ifdef ASSERT
+  // ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+  inline void ld_ptr(Register s1, ByteSize simm13a, Register d);
+  inline void st_ptr(Register d, Register s1, ByteSize simm13a);
+#endif
 
   // ld_long will perform ld for 32 bit VM's and ldx for 64 bit VM's
   // st_long will perform st for 32 bit VM's and stx for 64 bit VM's
-  inline void ld_long( Register s1, Register s2, Register d );
-  inline void ld_long( Register s1, int simm13a, Register d );
-  inline void ld_long( Register s1, RegisterOrConstant s2, Register d );
-  inline void ld_long( const Address& a, Register d, int offset = 0 );
-  inline void st_long( Register d, Register s1, Register s2 );
-  inline void st_long( Register d, Register s1, int simm13a );
-  inline void st_long( Register d, Register s1, RegisterOrConstant s2 );
-  inline void st_long( Register d, const Address& a, int offset = 0 );
-
-  // Loading values by size and signed-ness
-  void load_sized_value(Register s1, RegisterOrConstant s2, Register d,
-                        int size_in_bytes, bool is_signed);
+  inline void ld_long(Register s1, Register s2, Register d);
+  inline void ld_long(Register s1, int simm13a, Register d);
+  inline void ld_long(Register s1, RegisterOrConstant s2, Register d);
+  inline void ld_long(const Address& a, Register d, int offset = 0);
+  inline void st_long(Register d, Register s1, Register s2);
+  inline void st_long(Register d, Register s1, int simm13a);
+  inline void st_long(Register d, Register s1, RegisterOrConstant s2);
+  inline void st_long(Register d, const Address& a, int offset = 0);
 
   // Helpers for address formation.
   // They update the dest in place, whether it is a register or constant.
@@ -2049,8 +2091,8 @@
   // These are idioms to flag the need for care with accessing bools but on
   // this platform we assume byte size
 
-  inline void stbool( Register d, const Address& a, int offset = 0 ) { stb(d, a, offset); }
-  inline void ldbool( const Address& a, Register d, int offset = 0 ) { ldsb( a, d, offset ); }
+  inline void stbool(Register d, const Address& a) { stb(d, a); }
+  inline void ldbool(const Address& a, Register d) { ldsb(a, d); }
   inline void tstbool( Register s ) { tst(s); }
   inline void movbool( bool boolconst, Register d) { mov( (int) boolconst, d); }
 
@@ -2060,7 +2102,7 @@
   void store_klass_gap(Register s, Register dst_oop);
 
    // oop manipulations
-  void load_heap_oop(const Address& s, Register d, int offset = 0);
+  void load_heap_oop(const Address& s, Register d);
   void load_heap_oop(Register s1, Register s2, Register d);
   void load_heap_oop(Register s1, int simm13a, Register d);
   void store_heap_oop(Register d, Register s1, Register s2);
@@ -2190,11 +2232,11 @@
   void print_CPU_state();
 
   // oops in code
-  Address allocate_oop_address( jobject obj, Register d ); // allocate_index
-  Address constant_oop_address( jobject obj, Register d ); // find_index
-  inline void set_oop         ( jobject obj, Register d ); // uses allocate_oop_address
-  inline void set_oop_constant( jobject obj, Register d ); // uses constant_oop_address
-  inline void set_oop         ( Address obj_addr );        // same as load_address
+  AddressLiteral allocate_oop_address(jobject obj);                          // allocate_index
+  AddressLiteral constant_oop_address(jobject obj);                          // find_index
+  inline void    set_oop             (jobject obj, Register d);              // uses allocate_oop_address
+  inline void    set_oop_constant    (jobject obj, Register d);              // uses constant_oop_address
+  inline void    set_oop             (AddressLiteral& obj_addr, Register d); // same as load_address
 
   void set_narrow_oop( jobject obj, Register d );
 
@@ -2410,7 +2452,8 @@
   // Conditionally (non-atomically) increments passed counter address, preserving condition codes.
   void cond_inc(Condition cond, address counter_addr, Register Rtemp1, Register Rtemp2);
   // Unconditional increment.
-  void inc_counter(address counter_addr, Register Rtemp1, Register Rtemp2);
+  void inc_counter(address counter_addr, Register Rtmp1, Register Rtmp2);
+  void inc_counter(int*    counter_addr, Register Rtmp1, Register Rtmp2);
 
 #undef VIRTUAL
 
--- a/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -38,6 +38,11 @@
 inline bool Address::is_simm13(int offset) { return Assembler::is_simm13(disp() + offset); }
 
 
+inline int AddressLiteral::low10() const {
+  return Assembler::low10(value());
+}
+
+
 // inlines for SPARC assembler -- dmu 5/97
 
 inline void Assembler::check_delay() {
@@ -63,10 +68,9 @@
 }
 
 
-inline void Assembler::add(    Register s1, Register s2, Register d )                             { emit_long( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | rs2(s2) ); }
-inline void Assembler::add(    Register s1, int simm13a, Register d, relocInfo::relocType rtype ) { emit_data( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rtype ); }
-inline void Assembler::add(    Register s1, int simm13a, Register d, RelocationHolder const& rspec ) { emit_data( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec ); }
-inline void Assembler::add(    const Address& a, Register d, int offset) { add( a.base(), a.disp() + offset, d, a.rspec(offset)); }
+inline void Assembler::add(Register s1, Register s2, Register d )                             { emit_long( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | rs2(s2) ); }
+inline void Assembler::add(Register s1, int simm13a, Register d, relocInfo::relocType rtype ) { emit_data( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rtype ); }
+inline void Assembler::add(Register s1, int simm13a, Register d, RelocationHolder const& rspec ) { emit_data( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec ); }
 
 inline void Assembler::bpr( RCondition c, bool a, Predict p, Register s1, address d, relocInfo::relocType rt ) { v9_only();  emit_data( op(branch_op) | annul(a) | cond(c) | op2(bpr_op2) | wdisp16(intptr_t(d), intptr_t(pc())) | predict(p) | rs1(s1), rt);  has_delay_slot(); }
 inline void Assembler::bpr( RCondition c, bool a, Predict p, Register s1, Label& L) { bpr( c, a, p, s1, target(L)); }
@@ -95,13 +99,10 @@
 inline void Assembler::jmpl( Register s1, Register s2, Register d                          ) { emit_long( op(arith_op) | rd(d) | op3(jmpl_op3) | rs1(s1) | rs2(s2));  has_delay_slot(); }
 inline void Assembler::jmpl( Register s1, int simm13a, Register d, RelocationHolder const& rspec ) { emit_data( op(arith_op) | rd(d) | op3(jmpl_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec);  has_delay_slot(); }
 
-inline void Assembler::jmpl( Address& a, Register d, int offset) { jmpl( a.base(), a.disp() + offset, d, a.rspec(offset)); }
-
+inline void Assembler::ldf(FloatRegisterImpl::Width w, Register s1, Register s2, FloatRegister d) { emit_long( op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | rs2(s2) ); }
+inline void Assembler::ldf(FloatRegisterImpl::Width w, Register s1, int simm13a, FloatRegister d, RelocationHolder const& rspec) { emit_data( op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec); }
 
-inline void Assembler::ldf(    FloatRegisterImpl::Width w, Register s1, Register s2, FloatRegister d) { emit_long( op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | rs2(s2) ); }
-inline void Assembler::ldf(    FloatRegisterImpl::Width w, Register s1, int simm13a, FloatRegister d) { emit_data( op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | immed(true) | simm(simm13a, 13)); }
-
-inline void Assembler::ldf(    FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset) { relocate(a.rspec(offset)); ldf( w, a.base(), a.disp() + offset, d); }
+inline void Assembler::ldf(FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset) { relocate(a.rspec(offset)); ldf( w, a.base(), a.disp() + offset, d); }
 
 inline void Assembler::ldfsr(  Register s1, Register s2) { v9_dep();   emit_long( op(ldst_op) |             op3(ldfsr_op3) | rs1(s1) | rs2(s2) ); }
 inline void Assembler::ldfsr(  Register s1, int simm13a) { v9_dep();   emit_data( op(ldst_op) |             op3(ldfsr_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); }
@@ -136,49 +137,68 @@
 
 #ifdef _LP64
 // Make all 32 bit loads signed so 64 bit registers maintain proper sign
-inline void Assembler::ld(  Register s1, Register s2, Register d) { ldsw( s1, s2, d); }
-inline void Assembler::ld(  Register s1, int simm13a, Register d) { ldsw( s1, simm13a, d); }
+inline void Assembler::ld(  Register s1, Register s2, Register d)      { ldsw( s1, s2, d); }
+inline void Assembler::ld(  Register s1, int simm13a, Register d)      { ldsw( s1, simm13a, d); }
 #else
-inline void Assembler::ld(  Register s1, Register s2, Register d) { lduw( s1, s2, d); }
-inline void Assembler::ld(  Register s1, int simm13a, Register d) { lduw( s1, simm13a, d); }
+inline void Assembler::ld(  Register s1, Register s2, Register d)      { lduw( s1, s2, d); }
+inline void Assembler::ld(  Register s1, int simm13a, Register d)      { lduw( s1, simm13a, d); }
+#endif
+
+#ifdef ASSERT
+  // ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+# ifdef _LP64
+inline void Assembler::ld(  Register s1, ByteSize simm13a, Register d) { ldsw( s1, in_bytes(simm13a), d); }
+# else
+inline void Assembler::ld(  Register s1, ByteSize simm13a, Register d) { lduw( s1, in_bytes(simm13a), d); }
+# endif
 #endif
 
-inline void Assembler::ldub(  Register s1, RegisterOrConstant s2, Register d) {
-  if (s2.is_register())  ldsb(s1, s2.as_register(), d);
-  else                   ldsb(s1, s2.as_constant(), d);
+inline void Assembler::ld(  const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ld(  a.base(), a.index(),         d); }
+  else               {                          ld(  a.base(), a.disp() + offset, d); }
 }
-inline void Assembler::ldsb(  Register s1, RegisterOrConstant s2, Register d) {
-  if (s2.is_register())  ldsb(s1, s2.as_register(), d);
-  else                   ldsb(s1, s2.as_constant(), d);
+inline void Assembler::ldsb(const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ldsb(a.base(), a.index(),         d); }
+  else               {                          ldsb(a.base(), a.disp() + offset, d); }
 }
-inline void Assembler::lduh(  Register s1, RegisterOrConstant s2, Register d) {
-  if (s2.is_register())  ldsh(s1, s2.as_register(), d);
-  else                   ldsh(s1, s2.as_constant(), d);
+inline void Assembler::ldsh(const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ldsh(a.base(), a.index(),         d); }
+  else               {                          ldsh(a.base(), a.disp() + offset, d); }
 }
-inline void Assembler::ldsh(  Register s1, RegisterOrConstant s2, Register d) {
-  if (s2.is_register())  ldsh(s1, s2.as_register(), d);
-  else                   ldsh(s1, s2.as_constant(), d);
+inline void Assembler::ldsw(const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ldsw(a.base(), a.index(),         d); }
+  else               {                          ldsw(a.base(), a.disp() + offset, d); }
+}
+inline void Assembler::ldub(const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ldub(a.base(), a.index(),         d); }
+  else               {                          ldub(a.base(), a.disp() + offset, d); }
 }
-inline void Assembler::lduw(  Register s1, RegisterOrConstant s2, Register d) {
-  if (s2.is_register())  ldsw(s1, s2.as_register(), d);
-  else                   ldsw(s1, s2.as_constant(), d);
+inline void Assembler::lduh(const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); lduh(a.base(), a.index(),         d); }
+  else               {                          lduh(a.base(), a.disp() + offset, d); }
 }
-inline void Assembler::ldsw(  Register s1, RegisterOrConstant s2, Register d) {
-  if (s2.is_register())  ldsw(s1, s2.as_register(), d);
-  else                   ldsw(s1, s2.as_constant(), d);
+inline void Assembler::lduw(const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); lduw(a.base(), a.index(),         d); }
+  else               {                          lduw(a.base(), a.disp() + offset, d); }
+}
+inline void Assembler::ldd( const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ldd( a.base(), a.index(),         d); }
+  else               {                          ldd( a.base(), a.disp() + offset, d); }
 }
-inline void Assembler::ldx(   Register s1, RegisterOrConstant s2, Register d) {
-  if (s2.is_register())  ldx(s1, s2.as_register(), d);
-  else                   ldx(s1, s2.as_constant(), d);
+inline void Assembler::ldx( const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ldx( a.base(), a.index(),         d); }
+  else               {                          ldx( a.base(), a.disp() + offset, d); }
 }
-inline void Assembler::ld(    Register s1, RegisterOrConstant s2, Register d) {
-  if (s2.is_register())  ld(s1, s2.as_register(), d);
-  else                   ld(s1, s2.as_constant(), d);
-}
-inline void Assembler::ldd(   Register s1, RegisterOrConstant s2, Register d) {
-  if (s2.is_register())  ldd(s1, s2.as_register(), d);
-  else                   ldd(s1, s2.as_constant(), d);
-}
+
+inline void Assembler::ldub(Register s1, RegisterOrConstant s2, Register d) { ldub(Address(s1, s2), d); }
+inline void Assembler::ldsb(Register s1, RegisterOrConstant s2, Register d) { ldsb(Address(s1, s2), d); }
+inline void Assembler::lduh(Register s1, RegisterOrConstant s2, Register d) { lduh(Address(s1, s2), d); }
+inline void Assembler::ldsh(Register s1, RegisterOrConstant s2, Register d) { ldsh(Address(s1, s2), d); }
+inline void Assembler::lduw(Register s1, RegisterOrConstant s2, Register d) { lduw(Address(s1, s2), d); }
+inline void Assembler::ldsw(Register s1, RegisterOrConstant s2, Register d) { ldsw(Address(s1, s2), d); }
+inline void Assembler::ldx( Register s1, RegisterOrConstant s2, Register d) { ldx( Address(s1, s2), d); }
+inline void Assembler::ld(  Register s1, RegisterOrConstant s2, Register d) { ld(  Address(s1, s2), d); }
+inline void Assembler::ldd( Register s1, RegisterOrConstant s2, Register d) { ldd( Address(s1, s2), d); }
 
 // form effective addresses this way:
 inline void Assembler::add(   Register s1, RegisterOrConstant s2, Register d, int offset) {
@@ -187,17 +207,6 @@
   if (offset != 0)       add(d,  offset,                    d);
 }
 
-inline void Assembler::ld(   const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ld(   a.base(), a.disp() + offset, d ); }
-inline void Assembler::ldsb( const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ldsb( a.base(), a.disp() + offset, d ); }
-inline void Assembler::ldsh( const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ldsh( a.base(), a.disp() + offset, d ); }
-inline void Assembler::ldsw( const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ldsw( a.base(), a.disp() + offset, d ); }
-inline void Assembler::ldub( const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ldub( a.base(), a.disp() + offset, d ); }
-inline void Assembler::lduh( const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); lduh( a.base(), a.disp() + offset, d ); }
-inline void Assembler::lduw( const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); lduw( a.base(), a.disp() + offset, d ); }
-inline void Assembler::ldd(  const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ldd(  a.base(), a.disp() + offset, d ); }
-inline void Assembler::ldx(  const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ldx(  a.base(), a.disp() + offset, d ); }
-
-
 inline void Assembler::ldstub(  Register s1, Register s2, Register d) { emit_long( op(ldst_op) | rd(d) | op3(ldstub_op3) | rs1(s1) | rs2(s2) ); }
 inline void Assembler::ldstub(  Register s1, int simm13a, Register d) { emit_data( op(ldst_op) | rd(d) | op3(ldstub_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); }
 
@@ -240,36 +249,44 @@
 inline void Assembler::std(  Register d, Register s1, Register s2) { v9_dep(); assert(d->is_even(), "not even"); emit_long( op(ldst_op) | rd(d) | op3(std_op3) | rs1(s1) | rs2(s2) ); }
 inline void Assembler::std(  Register d, Register s1, int simm13a) { v9_dep(); assert(d->is_even(), "not even"); emit_data( op(ldst_op) | rd(d) | op3(std_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); }
 
-inline void Assembler::st(  Register d, Register s1, Register s2) { stw(d, s1, s2); }
-inline void Assembler::st(  Register d, Register s1, int simm13a) { stw(d, s1, simm13a); }
+inline void Assembler::st( Register d, Register s1, Register s2)      { stw(d, s1, s2); }
+inline void Assembler::st( Register d, Register s1, int simm13a)      { stw(d, s1, simm13a); }
+
+#ifdef ASSERT
+// ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+inline void Assembler::st( Register d, Register s1, ByteSize simm13a) { stw(d, s1, in_bytes(simm13a)); }
+#endif
 
-inline void Assembler::stb(  Register d, Register s1, RegisterOrConstant s2) {
-  if (s2.is_register())  stb(d, s1, s2.as_register());
-  else                   stb(d, s1, s2.as_constant());
+inline void Assembler::stb(Register d, const Address& a, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); stb(d, a.base(), a.index()        ); }
+  else               {                          stb(d, a.base(), a.disp() + offset); }
 }
-inline void Assembler::sth(  Register d, Register s1, RegisterOrConstant s2) {
-  if (s2.is_register())  sth(d, s1, s2.as_register());
-  else                   sth(d, s1, s2.as_constant());
+inline void Assembler::sth(Register d, const Address& a, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); sth(d, a.base(), a.index()        ); }
+  else               {                          sth(d, a.base(), a.disp() + offset); }
 }
-inline void Assembler::stx(  Register d, Register s1, RegisterOrConstant s2) {
-  if (s2.is_register())  stx(d, s1, s2.as_register());
-  else                   stx(d, s1, s2.as_constant());
+inline void Assembler::stw(Register d, const Address& a, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); stw(d, a.base(), a.index()        ); }
+  else               {                          stw(d, a.base(), a.disp() + offset); }
+}
+inline void Assembler::st( Register d, const Address& a, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); st( d, a.base(), a.index()        ); }
+  else               {                          st( d, a.base(), a.disp() + offset); }
 }
-inline void Assembler::std( Register d, Register s1, RegisterOrConstant s2) {
-  if (s2.is_register())  std(d, s1, s2.as_register());
-  else                   std(d, s1, s2.as_constant());
+inline void Assembler::std(Register d, const Address& a, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); std(d, a.base(), a.index()        ); }
+  else               {                          std(d, a.base(), a.disp() + offset); }
 }
-inline void Assembler::st(  Register d, Register s1, RegisterOrConstant s2) {
-  if (s2.is_register())  st(d, s1, s2.as_register());
-  else                   st(d, s1, s2.as_constant());
+inline void Assembler::stx(Register d, const Address& a, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); stx(d, a.base(), a.index()        ); }
+  else               {                          stx(d, a.base(), a.disp() + offset); }
 }
 
-inline void Assembler::stb( Register d, const Address& a, int offset) { relocate(a.rspec(offset)); stb( d, a.base(), a.disp() + offset); }
-inline void Assembler::sth( Register d, const Address& a, int offset) { relocate(a.rspec(offset)); sth( d, a.base(), a.disp() + offset); }
-inline void Assembler::stw( Register d, const Address& a, int offset) { relocate(a.rspec(offset)); stw( d, a.base(), a.disp() + offset); }
-inline void Assembler::st(  Register d, const Address& a, int offset) { relocate(a.rspec(offset)); st(  d, a.base(), a.disp() + offset); }
-inline void Assembler::std( Register d, const Address& a, int offset) { relocate(a.rspec(offset)); std( d, a.base(), a.disp() + offset); }
-inline void Assembler::stx( Register d, const Address& a, int offset) { relocate(a.rspec(offset)); stx( d, a.base(), a.disp() + offset); }
+inline void Assembler::stb(Register d, Register s1, RegisterOrConstant s2) { stb(d, Address(s1, s2)); }
+inline void Assembler::sth(Register d, Register s1, RegisterOrConstant s2) { sth(d, Address(s1, s2)); }
+inline void Assembler::stx(Register d, Register s1, RegisterOrConstant s2) { stx(d, Address(s1, s2)); }
+inline void Assembler::std(Register d, Register s1, RegisterOrConstant s2) { std(d, Address(s1, s2)); }
+inline void Assembler::st( Register d, Register s1, RegisterOrConstant s2) { st( d, Address(s1, s2)); }
 
 // v8 p 99
 
@@ -294,39 +311,46 @@
 // Use the right loads/stores for the platform
 inline void MacroAssembler::ld_ptr( Register s1, Register s2, Register d ) {
 #ifdef _LP64
-  Assembler::ldx( s1, s2, d);
+  Assembler::ldx(s1, s2, d);
 #else
-  Assembler::ld(  s1, s2, d);
+  Assembler::ld( s1, s2, d);
 #endif
 }
 
 inline void MacroAssembler::ld_ptr( Register s1, int simm13a, Register d ) {
 #ifdef _LP64
-  Assembler::ldx( s1, simm13a, d);
+  Assembler::ldx(s1, simm13a, d);
 #else
-  Assembler::ld(  s1, simm13a, d);
+  Assembler::ld( s1, simm13a, d);
 #endif
 }
 
+#ifdef ASSERT
+// ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+inline void MacroAssembler::ld_ptr( Register s1, ByteSize simm13a, Register d ) {
+  ld_ptr(s1, in_bytes(simm13a), d);
+}
+#endif
+
 inline void MacroAssembler::ld_ptr( Register s1, RegisterOrConstant s2, Register d ) {
 #ifdef _LP64
-  Assembler::ldx( s1, s2, d);
+  Assembler::ldx(s1, s2, d);
 #else
-  Assembler::ld(  s1, s2, d);
+  Assembler::ld( s1, s2, d);
 #endif
 }
 
-inline void MacroAssembler::ld_ptr( const Address& a, Register d, int offset ) {
+inline void MacroAssembler::ld_ptr(const Address& a, Register d, int offset) {
 #ifdef _LP64
-  Assembler::ldx(  a, d, offset );
+  Assembler::ldx(a, d, offset);
 #else
-  Assembler::ld(   a, d, offset );
+  Assembler::ld( a, d, offset);
 #endif
 }
 
 inline void MacroAssembler::st_ptr( Register d, Register s1, Register s2 ) {
 #ifdef _LP64
-  Assembler::stx( d, s1, s2);
+  Assembler::stx(d, s1, s2);
 #else
   Assembler::st( d, s1, s2);
 #endif
@@ -334,25 +358,32 @@
 
 inline void MacroAssembler::st_ptr( Register d, Register s1, int simm13a ) {
 #ifdef _LP64
-  Assembler::stx( d, s1, simm13a);
+  Assembler::stx(d, s1, simm13a);
 #else
   Assembler::st( d, s1, simm13a);
 #endif
 }
 
+#ifdef ASSERT
+// ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+inline void MacroAssembler::st_ptr( Register d, Register s1, ByteSize simm13a ) {
+  st_ptr(d, s1, in_bytes(simm13a));
+}
+#endif
+
 inline void MacroAssembler::st_ptr( Register d, Register s1, RegisterOrConstant s2 ) {
 #ifdef _LP64
-  Assembler::stx( d, s1, s2);
+  Assembler::stx(d, s1, s2);
 #else
   Assembler::st( d, s1, s2);
 #endif
 }
 
-inline void MacroAssembler::st_ptr(  Register d, const Address& a, int offset) {
+inline void MacroAssembler::st_ptr(Register d, const Address& a, int offset) {
 #ifdef _LP64
-  Assembler::stx(  d, a, offset);
+  Assembler::stx(d, a, offset);
 #else
-  Assembler::st(  d, a, offset);
+  Assembler::st( d, a, offset);
 #endif
 }
 
@@ -381,11 +412,11 @@
 #endif
 }
 
-inline void MacroAssembler::ld_long( const Address& a, Register d, int offset ) {
+inline void MacroAssembler::ld_long(const Address& a, Register d, int offset) {
 #ifdef _LP64
-  Assembler::ldx(a, d, offset );
+  Assembler::ldx(a, d, offset);
 #else
-  Assembler::ldd(a, d, offset );
+  Assembler::ldd(a, d, offset);
 #endif
 }
 
@@ -427,7 +458,7 @@
 #ifdef _LP64
   Assembler::sllx(s1, s2, d);
 #else
-  Assembler::sll(s1, s2, d);
+  Assembler::sll( s1, s2, d);
 #endif
 }
 
@@ -435,7 +466,7 @@
 #ifdef _LP64
   Assembler::sllx(s1, imm6a, d);
 #else
-  Assembler::sll(s1, imm6a, d);
+  Assembler::sll( s1, imm6a, d);
 #endif
 }
 
@@ -443,7 +474,7 @@
 #ifdef _LP64
   Assembler::srlx(s1, s2, d);
 #else
-  Assembler::srl(s1, s2, d);
+  Assembler::srl( s1, s2, d);
 #endif
 }
 
@@ -451,7 +482,7 @@
 #ifdef _LP64
   Assembler::srlx(s1, imm6a, d);
 #else
-  Assembler::srl(s1, imm6a, d);
+  Assembler::srl( s1, imm6a, d);
 #endif
 }
 
@@ -541,9 +572,8 @@
   disp = (intptr_t)d - (intptr_t)pc();
   if ( disp != (intptr_t)(int32_t)disp ) {
     relocate(rt);
-    Address dest(O7, (address)d);
-    sethi(dest, /*ForceRelocatable=*/ true);
-    jmpl(dest, O7);
+    AddressLiteral dest(d);
+    jumpl_to(dest, O7, O7);
   }
   else {
     Assembler::call( d, rt );
@@ -603,96 +633,72 @@
   return thepc;
 }
 
-inline void MacroAssembler::load_address( Address& a, int offset ) {
+
+inline void MacroAssembler::load_contents(AddressLiteral& addrlit, Register d, int offset) {
   assert_not_delayed();
-#ifdef _LP64
-  sethi(a);
-  add(a, a.base(), offset);
-#else
-  if (a.hi() == 0 && a.rtype() == relocInfo::none) {
-    set(a.disp() + offset, a.base());
-  }
-  else {
-    sethi(a);
-    add(a, a.base(), offset);
-  }
-#endif
-}
-
-
-inline void MacroAssembler::split_disp( Address& a, Register temp ) {
-  assert_not_delayed();
-  a = a.split_disp();
-  Assembler::sethi(a.hi(), temp, a.rspec());
-  add(a.base(), temp, a.base());
+  sethi(addrlit, d);
+  ld(d, addrlit.low10() + offset, d);
 }
 
 
-inline void MacroAssembler::load_contents( Address& a, Register d, int offset ) {
+inline void MacroAssembler::load_ptr_contents(AddressLiteral& addrlit, Register d, int offset) {
   assert_not_delayed();
-  sethi(a);
-  ld(a, d, offset);
+  sethi(addrlit, d);
+  ld_ptr(d, addrlit.low10() + offset, d);
 }
 
 
-inline void MacroAssembler::load_ptr_contents( Address& a, Register d, int offset ) {
+inline void MacroAssembler::store_contents(Register s, AddressLiteral& addrlit, Register temp, int offset) {
   assert_not_delayed();
-  sethi(a);
-  ld_ptr(a, d, offset);
+  sethi(addrlit, temp);
+  st(s, temp, addrlit.low10() + offset);
 }
 
 
-inline void MacroAssembler::store_contents( Register s, Address& a, int offset ) {
+inline void MacroAssembler::store_ptr_contents(Register s, AddressLiteral& addrlit, Register temp, int offset) {
   assert_not_delayed();
-  sethi(a);
-  st(s, a, offset);
-}
-
-
-inline void MacroAssembler::store_ptr_contents( Register s, Address& a, int offset ) {
-  assert_not_delayed();
-  sethi(a);
-  st_ptr(s, a, offset);
+  sethi(addrlit, temp);
+  st_ptr(s, temp, addrlit.low10() + offset);
 }
 
 
 // This code sequence is relocatable to any address, even on LP64.
-inline void MacroAssembler::jumpl_to( Address& a, Register d, int offset ) {
+inline void MacroAssembler::jumpl_to(AddressLiteral& addrlit, Register temp, Register d, int offset) {
   assert_not_delayed();
   // Force fixed length sethi because NativeJump and NativeFarCall don't handle
   // variable length instruction streams.
-  sethi(a, /*ForceRelocatable=*/ true);
-  jmpl(a, d, offset);
+  patchable_sethi(addrlit, temp);
+  jmpl(temp, addrlit.low10() + offset, d);
 }
 
 
-inline void MacroAssembler::jump_to( Address& a, int offset ) {
-  jumpl_to( a, G0, offset );
+inline void MacroAssembler::jump_to(AddressLiteral& addrlit, Register temp, int offset) {
+  jumpl_to(addrlit, temp, G0, offset);
 }
 
 
-inline void MacroAssembler::jump_indirect_to(  Address& a, Register temp,
-                                               int ld_offset, int jmp_offset ) {
+inline void MacroAssembler::jump_indirect_to(Address& a, Register temp,
+                                             int ld_offset, int jmp_offset) {
   assert_not_delayed();
-  //sethi(a);                   // sethi is caller responsibility for this one
+  //sethi(al);                   // sethi is caller responsibility for this one
   ld_ptr(a, temp, ld_offset);
   jmp(temp, jmp_offset);
 }
 
 
-inline void MacroAssembler::set_oop( jobject obj, Register d ) {
-  set_oop(allocate_oop_address(obj, d));
+inline void MacroAssembler::set_oop(jobject obj, Register d) {
+  set_oop(allocate_oop_address(obj), d);
 }
 
 
-inline void MacroAssembler::set_oop_constant( jobject obj, Register d ) {
-  set_oop(constant_oop_address(obj, d));
+inline void MacroAssembler::set_oop_constant(jobject obj, Register d) {
+  set_oop(constant_oop_address(obj), d);
 }
 
 
-inline void MacroAssembler::set_oop( Address obj_addr ) {
-  assert(obj_addr.rspec().type()==relocInfo::oop_type, "must be an oop reloc");
-  load_address(obj_addr);
+inline void MacroAssembler::set_oop(AddressLiteral& obj_addr, Register d) {
+  assert(obj_addr.rspec().type() == relocInfo::oop_type, "must be an oop reloc");
+  set(obj_addr, d);
 }
 
 
--- a/hotspot/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -277,10 +277,11 @@
 
   if (_id == load_klass_id) {
     // produce a copy of the load klass instruction for use by the being initialized case
+#ifdef ASSERT
     address start = __ pc();
-    Address addr = Address(_obj, address(NULL), oop_Relocation::spec(_oop_index));
-    __ sethi(addr, true);
-    __ add(addr, _obj, 0);
+#endif
+    AddressLiteral addrlit(NULL, oop_Relocation::spec(_oop_index));
+    __ patchable_set(addrlit, _obj);
 
 #ifdef ASSERT
     for (int i = 0; i < _bytes_to_copy; i++) {
--- a/hotspot/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -327,7 +327,7 @@
 
 
 Address FrameMap::make_new_address(ByteSize sp_offset) const {
-  return Address(SP, 0, STACK_BIAS + in_bytes(sp_offset));
+  return Address(SP, STACK_BIAS + in_bytes(sp_offset));
 }
 
 
--- a/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -196,7 +196,7 @@
       // verify the interpreter's monitor has a non-null object
       {
         Label L;
-        __ ld_ptr(Address(OSR_buf, 0, slot_offset + BasicObjectLock::obj_offset_in_bytes()), O7);
+        __ ld_ptr(OSR_buf, slot_offset + BasicObjectLock::obj_offset_in_bytes(), O7);
         __ cmp(G0, O7);
         __ br(Assembler::notEqual, false, Assembler::pt, L);
         __ delayed()->nop();
@@ -205,9 +205,9 @@
       }
 #endif // ASSERT
       // Copy the lock field into the compiled activation.
-      __ ld_ptr(Address(OSR_buf, 0, slot_offset + BasicObjectLock::lock_offset_in_bytes()), O7);
+      __ ld_ptr(OSR_buf, slot_offset + BasicObjectLock::lock_offset_in_bytes(), O7);
       __ st_ptr(O7, frame_map()->address_for_monitor_lock(i));
-      __ ld_ptr(Address(OSR_buf, 0, slot_offset + BasicObjectLock::obj_offset_in_bytes()), O7);
+      __ ld_ptr(OSR_buf, slot_offset + BasicObjectLock::obj_offset_in_bytes(), O7);
       __ st_ptr(O7, frame_map()->address_for_monitor_object(i));
     }
   }
@@ -238,21 +238,21 @@
     int offset_offset = java_lang_String::offset_offset_in_bytes(); // first character position
     int  count_offset = java_lang_String:: count_offset_in_bytes();
 
-    __ ld_ptr(Address(str0, 0,  value_offset), tmp0);
-    __ ld(Address(str0, 0, offset_offset), tmp2);
+    __ ld_ptr(str0, value_offset, tmp0);
+    __ ld(str0, offset_offset, tmp2);
     __ add(tmp0, arrayOopDesc::base_offset_in_bytes(T_CHAR), tmp0);
-    __ ld(Address(str0, 0, count_offset), str0);
+    __ ld(str0, count_offset, str0);
     __ sll(tmp2, exact_log2(sizeof(jchar)), tmp2);
 
     // str1 may be null
     add_debug_info_for_null_check_here(info);
 
-    __ ld_ptr(Address(str1, 0,  value_offset), tmp1);
+    __ ld_ptr(str1, value_offset, tmp1);
     __ add(tmp0, tmp2, tmp0);
 
-    __ ld(Address(str1, 0, offset_offset), tmp2);
+    __ ld(str1, offset_offset, tmp2);
     __ add(tmp1, arrayOopDesc::base_offset_in_bytes(T_CHAR), tmp1);
-    __ ld(Address(str1, 0, count_offset), str1);
+    __ ld(str1, count_offset, str1);
     __ sll(tmp2, exact_log2(sizeof(jchar)), tmp2);
     __ subcc(str0, str1, O7);
     __ add(tmp1, tmp2, tmp1);
@@ -412,9 +412,9 @@
 #endif // ASSERT
   compilation()->offsets()->set_value(CodeOffsets::Deopt, code_offset());
 
-  Address deopt_blob(G3_scratch, SharedRuntime::deopt_blob()->unpack());
-
-  __ JUMP(deopt_blob, 0); // sethi;jmp
+  AddressLiteral deopt_blob(SharedRuntime::deopt_blob()->unpack());
+
+  __ JUMP(deopt_blob, G3_scratch, 0); // sethi;jmp
   __ delayed()->nop();
 
   assert(code_offset() - offset <= deopt_handler_size, "overflow");
@@ -441,13 +441,12 @@
   int oop_index = __ oop_recorder()->allocate_index((jobject)NULL);
   PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_klass_id, oop_index);
 
-  Address addr = Address(reg, address(NULL), oop_Relocation::spec(oop_index));
-  assert(addr.rspec().type() == relocInfo::oop_type, "must be an oop reloc");
+  AddressLiteral addrlit(NULL, oop_Relocation::spec(oop_index));
+  assert(addrlit.rspec().type() == relocInfo::oop_type, "must be an oop reloc");
   // It may not seem necessary to use a sethi/add pair to load a NULL into dest, but the
   // NULL will be dynamically patched later and the patched value may be large.  We must
   // therefore generate the sethi/add as a placeholders
-  __ sethi(addr, true);
-  __ add(addr, reg, 0);
+  __ patchable_set(addrlit, reg);
 
   patching_epilog(patch, lir_patch_normal, reg, info);
 }
@@ -706,7 +705,7 @@
 
 void LIR_Assembler::vtable_call(int vtable_offset, CodeEmitInfo* info) {
   add_debug_info_for_null_check_here(info);
-  __ ld_ptr(Address(O0, 0,  oopDesc::klass_offset_in_bytes()), G3_scratch);
+  __ ld_ptr(O0, oopDesc::klass_offset_in_bytes(), G3_scratch);
   if (__ is_simm13(vtable_offset) ) {
     __ ld_ptr(G3_scratch, vtable_offset, G5_method);
   } else {
@@ -715,7 +714,7 @@
     // ld_ptr, set_hi, set
     __ ld_ptr(G3_scratch, G5_method, G5_method);
   }
-  __ ld_ptr(G5_method, in_bytes(methodOopDesc::from_compiled_offset()), G3_scratch);
+  __ ld_ptr(G5_method, methodOopDesc::from_compiled_offset(), G3_scratch);
   __ callr(G3_scratch, G0);
   // the peephole pass fills the delay slot
 }
@@ -738,8 +737,7 @@
       default      : ShouldNotReachHere();
     }
   } else {
-    __ sethi(disp & ~0x3ff, O7, true);
-    __ add(O7, disp & 0x3ff, O7);
+    __ set(disp, O7);
     if (info != NULL) add_debug_info_for_null_check_here(info);
     load_offset = code_offset();
     switch(ld_type) {
@@ -775,8 +773,7 @@
       default      : ShouldNotReachHere();
     }
   } else {
-    __ sethi(offset & ~0x3ff, O7, true);
-    __ add(O7, offset & 0x3ff, O7);
+    __ set(offset, O7);
     if (info != NULL) add_debug_info_for_null_check_here(info);
     switch (type) {
       case T_BOOLEAN: // fall through
@@ -813,8 +810,7 @@
       __ ldf(w, s, disp, d);
     }
   } else {
-    __ sethi(disp & ~0x3ff, O7, true);
-    __ add(O7, disp & 0x3ff, O7);
+    __ set(disp, O7);
     if (info != NULL) add_debug_info_for_null_check_here(info);
     __ ldf(w, s, O7, d);
   }
@@ -839,8 +835,7 @@
       __ stf(w, value, base, offset);
     }
   } else {
-    __ sethi(offset & ~0x3ff, O7, true);
-    __ add(O7, offset & 0x3ff, O7);
+    __ set(offset, O7);
     if (info != NULL) add_debug_info_for_null_check_here(info);
     __ stf(w, value, O7, base);
   }
@@ -852,8 +847,7 @@
   if (!Assembler::is_simm13(offset + (type == T_LONG) ? wordSize : 0)) {
     assert(!unaligned, "can't handle this");
     // for offsets larger than a simm13 we setup the offset in O7
-    __ sethi(offset & ~0x3ff, O7, true);
-    __ add(O7, offset & 0x3ff, O7);
+    __ set(offset, O7);
     store_offset = store(from_reg, base, O7, type);
   } else {
     if (type == T_ARRAY || type == T_OBJECT) __ verify_oop(from_reg->as_register());
@@ -937,8 +931,7 @@
     assert(base != O7, "destroying register");
     assert(!unaligned, "can't handle this");
     // for offsets larger than a simm13 we setup the offset in O7
-    __ sethi(offset & ~0x3ff, O7, true);
-    __ add(O7, offset & 0x3ff, O7);
+    __ set(offset, O7);
     load_offset = load(base, O7, to_reg, type);
   } else {
     load_offset = code_offset();
@@ -1213,7 +1206,7 @@
           assert(to_reg->is_single_fpu(), "wrong register kind");
 
           __ set(con, O7);
-          Address temp_slot(SP, 0, (frame::register_save_words * wordSize) + STACK_BIAS);
+          Address temp_slot(SP, (frame::register_save_words * wordSize) + STACK_BIAS);
           __ st(O7, temp_slot);
           __ ldf(FloatRegisterImpl::S, temp_slot, to_reg->as_float_reg());
         }
@@ -1238,8 +1231,8 @@
         } else {
           ShouldNotReachHere();
           assert(to_reg->is_double_fpu(), "wrong register kind");
-          Address temp_slot_lo(SP, 0, ((frame::register_save_words  ) * wordSize) + STACK_BIAS);
-          Address temp_slot_hi(SP, 0, ((frame::register_save_words) * wordSize) + (longSize/2) + STACK_BIAS);
+          Address temp_slot_lo(SP, ((frame::register_save_words  ) * wordSize) + STACK_BIAS);
+          Address temp_slot_hi(SP, ((frame::register_save_words) * wordSize) + (longSize/2) + STACK_BIAS);
           __ set(low(con),  O7);
           __ st(O7, temp_slot_lo);
           __ set(high(con), O7);
@@ -1267,17 +1260,16 @@
           break;
         }
         RelocationHolder rspec = internal_word_Relocation::spec(const_addr);
+        AddressLiteral const_addrlit(const_addr, rspec);
         if (to_reg->is_single_fpu()) {
-          __ sethi(  (intx)const_addr & ~0x3ff, O7, true, rspec);
+          __ patchable_sethi(const_addrlit, O7);
           __ relocate(rspec);
-
-          int offset = (intx)const_addr & 0x3ff;
-          __ ldf (FloatRegisterImpl::S, O7, offset, to_reg->as_float_reg());
+          __ ldf(FloatRegisterImpl::S, O7, const_addrlit.low10(), to_reg->as_float_reg());
 
         } else {
           assert(to_reg->is_single_cpu(), "Must be a cpu register.");
 
-          __ set((intx)const_addr, O7, rspec);
+          __ set(const_addrlit, O7);
           load(O7, 0, to_reg->as_register(), T_INT);
         }
       }
@@ -1293,10 +1285,10 @@
         RelocationHolder rspec = internal_word_Relocation::spec(const_addr);
 
         if (to_reg->is_double_fpu()) {
-          __ sethi(  (intx)const_addr & ~0x3ff, O7, true, rspec);
-          int offset = (intx)const_addr & 0x3ff;
+          AddressLiteral const_addrlit(const_addr, rspec);
+          __ patchable_sethi(const_addrlit, O7);
           __ relocate(rspec);
-          __ ldf (FloatRegisterImpl::D, O7, offset, to_reg->as_double_reg());
+          __ ldf (FloatRegisterImpl::D, O7, const_addrlit.low10(), to_reg->as_double_reg());
         } else {
           assert(to_reg->is_double_cpu(), "Must be a long register.");
 #ifdef _LP64
@@ -1317,7 +1309,7 @@
 
 Address LIR_Assembler::as_Address(LIR_Address* addr) {
   Register reg = addr->base()->as_register();
-  return Address(reg, 0, addr->disp());
+  return Address(reg, addr->disp());
 }
 
 
@@ -1360,13 +1352,13 @@
 
 Address LIR_Assembler::as_Address_hi(LIR_Address* addr) {
   Address base = as_Address(addr);
-  return Address(base.base(), 0, base.disp() + hi_word_offset_in_bytes);
+  return Address(base.base(), base.disp() + hi_word_offset_in_bytes);
 }
 
 
 Address LIR_Assembler::as_Address_lo(LIR_Address* addr) {
   Address base = as_Address(addr);
-  return Address(base.base(), 0, base.disp() + lo_word_offset_in_bytes);
+  return Address(base.base(), base.disp() + lo_word_offset_in_bytes);
 }
 
 
@@ -1396,8 +1388,7 @@
   if (addr->index()->is_illegal()) {
     if (!Assembler::is_simm13(disp_value) && (!unaligned || Assembler::is_simm13(disp_value + 4))) {
       if (needs_patching) {
-        __ sethi(0, O7, true);
-        __ add(O7, 0, O7);
+        __ patchable_set(0, O7);
       } else {
         __ set(disp_value, O7);
       }
@@ -1544,8 +1535,7 @@
   if (addr->index()->is_illegal()) {
     if (!Assembler::is_simm13(disp_value) && (!unaligned || Assembler::is_simm13(disp_value + 4))) {
       if (needs_patching) {
-        __ sethi(0, O7, true);
-        __ add(O7, 0, O7);
+        __ patchable_set(0, O7);
       } else {
         __ set(disp_value, O7);
       }
@@ -1627,8 +1617,8 @@
 
   __ set_oop(NULL, G5);
   // must be set to -1 at code generation time
-  Address a(G3, (address)-1);
-  __ jump_to(a, 0);
+  AddressLiteral addrlit(-1);
+  __ jump_to(addrlit, G3);
   __ delayed()->nop();
 
   assert(__ offset() - start <= call_stub_size, "stub too big");
@@ -2063,7 +2053,7 @@
     address pc_for_athrow  = __ pc();
     int pc_for_athrow_offset = __ offset();
     RelocationHolder rspec = internal_word_Relocation::spec(pc_for_athrow);
-    __ set((intptr_t)pc_for_athrow, Oissuing_pc, rspec);
+    __ set(pc_for_athrow, Oissuing_pc, rspec);
     add_call_info(pc_for_athrow_offset, info); // for exception handler
 
     __ call(Runtime1::entry_for(Runtime1::handle_exception_id), relocInfo::runtime_call_type);
@@ -2451,7 +2441,7 @@
       }
 
 
-      Address flags_addr(mdo, 0, md->byte_offset_of_slot(data, DataLayout::flags_offset()) - mdo_offset_bias);
+      Address flags_addr(mdo, md->byte_offset_of_slot(data, DataLayout::flags_offset()) - mdo_offset_bias);
       __ ldub(flags_addr, data_val);
       __ or3(data_val, BitData::null_seen_byte_constant(), data_val);
       __ stb(data_val, flags_addr);
@@ -2738,7 +2728,7 @@
     __ add(mdo, O7, mdo);
   }
 
-  Address counter_addr(mdo, 0, md->byte_offset_of_slot(data, CounterData::count_offset()) - mdo_offset_bias);
+  Address counter_addr(mdo, md->byte_offset_of_slot(data, CounterData::count_offset()) - mdo_offset_bias);
   __ lduw(counter_addr, tmp1);
   __ add(tmp1, DataLayout::counter_increment, tmp1);
   __ stw(tmp1, counter_addr);
@@ -2764,8 +2754,8 @@
       for (i = 0; i < VirtualCallData::row_limit(); i++) {
         ciKlass* receiver = vc_data->receiver(i);
         if (known_klass->equals(receiver)) {
-          Address data_addr(mdo, 0, md->byte_offset_of_slot(data,
-                                                            VirtualCallData::receiver_count_offset(i)) -
+          Address data_addr(mdo, md->byte_offset_of_slot(data,
+                                                         VirtualCallData::receiver_count_offset(i)) -
                             mdo_offset_bias);
           __ lduw(data_addr, tmp1);
           __ add(tmp1, DataLayout::counter_increment, tmp1);
@@ -2782,11 +2772,11 @@
       for (i = 0; i < VirtualCallData::row_limit(); i++) {
         ciKlass* receiver = vc_data->receiver(i);
         if (receiver == NULL) {
-          Address recv_addr(mdo, 0, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
+          Address recv_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
                             mdo_offset_bias);
           jobject2reg(known_klass->encoding(), tmp1);
           __ st_ptr(tmp1, recv_addr);
-          Address data_addr(mdo, 0, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
+          Address data_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
                             mdo_offset_bias);
           __ lduw(data_addr, tmp1);
           __ add(tmp1, DataLayout::counter_increment, tmp1);
@@ -2795,20 +2785,20 @@
         }
       }
     } else {
-      load(Address(recv, 0, oopDesc::klass_offset_in_bytes()), recv, T_OBJECT);
+      load(Address(recv, oopDesc::klass_offset_in_bytes()), recv, T_OBJECT);
       Label update_done;
       uint i;
       for (i = 0; i < VirtualCallData::row_limit(); i++) {
         Label next_test;
         // See if the receiver is receiver[n].
-        Address receiver_addr(mdo, 0, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
+        Address receiver_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
                               mdo_offset_bias);
         __ ld_ptr(receiver_addr, tmp1);
         __ verify_oop(tmp1);
         __ cmp(recv, tmp1);
         __ brx(Assembler::notEqual, false, Assembler::pt, next_test);
         __ delayed()->nop();
-        Address data_addr(mdo, 0, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
+        Address data_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
                           mdo_offset_bias);
         __ lduw(data_addr, tmp1);
         __ add(tmp1, DataLayout::counter_increment, tmp1);
@@ -2821,7 +2811,7 @@
       // Didn't find receiver; find next empty slot and fill it in
       for (i = 0; i < VirtualCallData::row_limit(); i++) {
         Label next_test;
-        Address recv_addr(mdo, 0, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
+        Address recv_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
                           mdo_offset_bias);
         load(recv_addr, tmp1, T_OBJECT);
         __ tst(tmp1);
@@ -2829,8 +2819,8 @@
         __ delayed()->nop();
         __ st_ptr(recv, recv_addr);
         __ set(DataLayout::counter_increment, tmp1);
-        __ st_ptr(tmp1, Address(mdo, 0, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
-                                mdo_offset_bias));
+        __ st_ptr(tmp1, mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
+                  mdo_offset_bias);
         if (i < (VirtualCallData::row_limit() - 1)) {
           __ br(Assembler::always, false, Assembler::pt, update_done);
           __ delayed()->nop();
--- a/hotspot/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,13 +29,13 @@
   Label L;
   const Register temp_reg = G3_scratch;
   // Note: needs more testing of out-of-line vs. inline slow case
-  Address ic_miss(temp_reg, SharedRuntime::get_ic_miss_stub());
   verify_oop(receiver);
   ld_ptr(receiver, oopDesc::klass_offset_in_bytes(), temp_reg);
   cmp(temp_reg, iCache);
   brx(Assembler::equal, true, Assembler::pt, L);
   delayed()->nop();
-  jump_to(ic_miss, 0);
+  AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
+  jump_to(ic_miss, temp_reg);
   delayed()->nop();
   align(CodeEntryAlignment);
   bind(L);
@@ -84,7 +84,7 @@
 
   Label done;
 
-  Address mark_addr(Roop, 0, oopDesc::mark_offset_in_bytes());
+  Address mark_addr(Roop, oopDesc::mark_offset_in_bytes());
 
   // The following move must be the first instruction of emitted since debug
   // information may be generated for it.
@@ -132,7 +132,7 @@
 
   Label done;
 
-  Address mark_addr(Roop, 0, oopDesc::mark_offset_in_bytes());
+  Address mark_addr(Roop, oopDesc::mark_offset_in_bytes());
   assert(mark_addr.disp() == 0, "cas must take a zero displacement");
 
   if (UseBiasedLocking) {
@@ -370,7 +370,7 @@
 
 void C1_MacroAssembler::verify_stack_oop(int stack_offset) {
   if (!VerifyOops) return;
-  verify_oop_addr(Address(SP, 0, stack_offset + STACK_BIAS));
+  verify_oop_addr(Address(SP, stack_offset + STACK_BIAS));
 }
 
 void C1_MacroAssembler::verify_not_null_oop(Register r) {
--- a/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -57,13 +57,13 @@
 
   // check for pending exceptions
   { Label L;
-    Address exception_addr(G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
+    Address exception_addr(G2_thread, Thread::pending_exception_offset());
     ld_ptr(exception_addr, Gtemp);
     br_null(Gtemp, false, pt, L);
     delayed()->nop();
-    Address vm_result_addr(G2_thread, 0, in_bytes(JavaThread::vm_result_offset()));
+    Address vm_result_addr(G2_thread, JavaThread::vm_result_offset());
     st_ptr(G0, vm_result_addr);
-    Address vm_result_addr_2(G2_thread, 0, in_bytes(JavaThread::vm_result_2_offset()));
+    Address vm_result_addr_2(G2_thread, JavaThread::vm_result_2_offset());
     st_ptr(G0, vm_result_addr_2);
 
     if (frame_size() == no_frame_size) {
@@ -73,8 +73,8 @@
     } else if (_stub_id == Runtime1::forward_exception_id) {
       should_not_reach_here();
     } else {
-      Address exc(G4, Runtime1::entry_for(Runtime1::forward_exception_id));
-      jump_to(exc, 0);
+      AddressLiteral exc(Runtime1::entry_for(Runtime1::forward_exception_id));
+      jump_to(exc, G4);
       delayed()->nop();
     }
     bind(L);
@@ -85,7 +85,7 @@
     get_vm_result  (oop_result1);
   } else {
     // be a little paranoid and clear the result
-    Address vm_result_addr(G2_thread, 0, in_bytes(JavaThread::vm_result_offset()));
+    Address vm_result_addr(G2_thread, JavaThread::vm_result_offset());
     st_ptr(G0, vm_result_addr);
   }
 
@@ -93,7 +93,7 @@
     get_vm_result_2(oop_result2);
   } else {
     // be a little paranoid and clear the result
-    Address vm_result_addr_2(G2_thread, 0, in_bytes(JavaThread::vm_result_2_offset()));
+    Address vm_result_addr_2(G2_thread, JavaThread::vm_result_2_offset());
     st_ptr(G0, vm_result_addr_2);
   }
 
@@ -479,8 +479,8 @@
         Register G4_length = G4; // Incoming
         Register O0_obj   = O0; // Outgoing
 
-        Address klass_lh(G5_klass, 0, ((klassOopDesc::header_size() * HeapWordSize)
-                                       + Klass::layout_helper_offset_in_bytes()));
+        Address klass_lh(G5_klass, ((klassOopDesc::header_size() * HeapWordSize)
+                                    + Klass::layout_helper_offset_in_bytes()));
         assert(Klass::_lh_header_size_shift % BitsPerByte == 0, "bytewise");
         assert(Klass::_lh_header_size_mask == 0xFF, "bytewise");
         // Use this offset to pick out an individual byte of the layout_helper:
@@ -902,8 +902,8 @@
         __ srl(addr, CardTableModRefBS::card_shift, addr);
 #endif
 
-        Address rs(cardtable, (address)byte_map_base);
-        __ load_address(rs); // cardtable := <card table base>
+        AddressLiteral rs(byte_map_base);
+        __ set(rs, cardtable);         // cardtable := <card table base>
         __ ldub(addr, cardtable, tmp); // tmp := [addr + cardtable]
 
         __ br_on_reg_cond(Assembler::rc_nz, /*annul*/false, Assembler::pt,
@@ -1022,8 +1022,8 @@
 
   __ restore();
 
-  Address exc(G4, Runtime1::entry_for(Runtime1::unwind_exception_id));
-  __ jump_to(exc, 0);
+  AddressLiteral exc(Runtime1::entry_for(Runtime1::unwind_exception_id));
+  __ jump_to(exc, G4);
   __ delayed()->nop();
 
 
--- a/hotspot/src/cpu/sparc/vm/dump_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/dump_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2004-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -106,8 +106,7 @@
   __ and3(L0, 255, L4);                 // Isolate L3 = method offset;.
   __ sll(L4, LogBytesPerWord, L4);
   __ ld_ptr(L3, L4, L4);                // Get address of correct virtual method
-  Address method(L4, 0);
-  __ jmpl(method, G0);                  // Jump to correct method.
+  __ jmpl(L4, 0, G0);                   // Jump to correct method.
   __ delayed()->restore();              // Restore registers.
 
   __ flush();
--- a/hotspot/src/cpu/sparc/vm/icBuffer_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/icBuffer_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -46,14 +46,13 @@
   // (1) the oop is old (i.e., doesn't matter for scavenges)
   // (2) these ICStubs are removed *before* a GC happens, so the roots disappear
   assert(cached_oop == NULL || cached_oop->is_perm(), "must be old oop");
-  Address cached_oop_addr(G5_inline_cache_reg, address(cached_oop));
-  // Force the sethi to generate the fixed sequence so next_instruction_address works
-  masm->sethi(cached_oop_addr, true /* ForceRelocatable */ );
-  masm->add(cached_oop_addr, G5_inline_cache_reg);
+  AddressLiteral cached_oop_addrlit(cached_oop, relocInfo::none);
+  // Force the set to generate the fixed sequence so next_instruction_address works
+  masm->patchable_set(cached_oop_addrlit, G5_inline_cache_reg);
   assert(G3_scratch != G5_method, "Do not clobber the method oop in the transition stub");
   assert(G3_scratch != G5_inline_cache_reg, "Do not clobber the inline cache register in the transition stub");
-  Address entry(G3_scratch, entry_point);
-  masm->JUMP(entry, 0);
+  AddressLiteral entry(entry_point);
+  masm->JUMP(entry, G3_scratch, 0);
   masm->delayed()->nop();
   masm->flush();
 }
--- a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -35,8 +35,8 @@
 
 // This file specializes the assember with interpreter-specific macros
 
-const Address InterpreterMacroAssembler::l_tmp( FP, 0,  (frame::interpreter_frame_l_scratch_fp_offset    * wordSize ) + STACK_BIAS);
-const Address InterpreterMacroAssembler::d_tmp( FP, 0,  (frame::interpreter_frame_d_scratch_fp_offset    * wordSize) + STACK_BIAS);
+const Address InterpreterMacroAssembler::l_tmp(FP, (frame::interpreter_frame_l_scratch_fp_offset * wordSize) + STACK_BIAS);
+const Address InterpreterMacroAssembler::d_tmp(FP, (frame::interpreter_frame_d_scratch_fp_offset * wordSize) + STACK_BIAS);
 
 #else // CC_INTERP
 #ifndef STATE
@@ -78,14 +78,12 @@
   sll(Lbyte_code, LogBytesPerWord, Lbyte_code);         // multiply by wordSize
   ld_ptr(IdispatchTables, Lbyte_code, IdispatchAddress);// get entry addr
 #else
-  ldub( Lbcp, bcp_incr, Lbyte_code);               // load next bytecode
+  ldub( Lbcp, bcp_incr, Lbyte_code);                    // load next bytecode
   // dispatch table to use
-  Address tbl(G3_scratch, (address)Interpreter::dispatch_table(state));
-
-  sethi(tbl);
-  sll(Lbyte_code, LogBytesPerWord, Lbyte_code);    // multiply by wordSize
-  add(tbl, tbl.base(), 0);
-  ld_ptr( G3_scratch, Lbyte_code, IdispatchAddress);     // get entry addr
+  AddressLiteral tbl(Interpreter::dispatch_table(state));
+  sll(Lbyte_code, LogBytesPerWord, Lbyte_code);         // multiply by wordSize
+  set(tbl, G3_scratch);                                 // compute addr of table
+  ld_ptr(G3_scratch, Lbyte_code, IdispatchAddress);     // get entry addr
 #endif
 }
 
@@ -165,8 +163,7 @@
     Label L;
 
     // Check the "pending popframe condition" flag in the current thread
-    Address popframe_condition_addr(G2_thread, 0, in_bytes(JavaThread::popframe_condition_offset()));
-    ld(popframe_condition_addr, scratch_reg);
+    ld(G2_thread, JavaThread::popframe_condition_offset(), scratch_reg);
 
     // Initiate popframe handling only if it is not already being processed.  If the flag
     // has the popframe_processing bit set, it means that this code is called *during* popframe
@@ -192,11 +189,10 @@
 
 void InterpreterMacroAssembler::load_earlyret_value(TosState state) {
   Register thr_state = G4_scratch;
-  ld_ptr(Address(G2_thread, 0, in_bytes(JavaThread::jvmti_thread_state_offset())),
-         thr_state);
-  const Address tos_addr(thr_state, 0, in_bytes(JvmtiThreadState::earlyret_tos_offset()));
-  const Address oop_addr(thr_state, 0, in_bytes(JvmtiThreadState::earlyret_oop_offset()));
-  const Address val_addr(thr_state, 0, in_bytes(JvmtiThreadState::earlyret_value_offset()));
+  ld_ptr(G2_thread, JavaThread::jvmti_thread_state_offset(), thr_state);
+  const Address tos_addr(thr_state, JvmtiThreadState::earlyret_tos_offset());
+  const Address oop_addr(thr_state, JvmtiThreadState::earlyret_oop_offset());
+  const Address val_addr(thr_state, JvmtiThreadState::earlyret_value_offset());
   switch (state) {
   case ltos: ld_long(val_addr, Otos_l);                   break;
   case atos: ld_ptr(oop_addr, Otos_l);
@@ -222,8 +218,7 @@
   if (JvmtiExport::can_force_early_return()) {
     Label L;
     Register thr_state = G3_scratch;
-    ld_ptr(Address(G2_thread, 0, in_bytes(JavaThread::jvmti_thread_state_offset())),
-           thr_state);
+    ld_ptr(G2_thread, JavaThread::jvmti_thread_state_offset(), thr_state);
     tst(thr_state);
     br(zero, false, pt, L); // if (thread->jvmti_thread_state() == NULL) exit;
     delayed()->nop();
@@ -231,16 +226,14 @@
     // Initiate earlyret handling only if it is not already being processed.
     // If the flag has the earlyret_processing bit set, it means that this code
     // is called *during* earlyret handling - we don't want to reenter.
-    ld(Address(thr_state, 0, in_bytes(JvmtiThreadState::earlyret_state_offset())),
-       G4_scratch);
+    ld(thr_state, JvmtiThreadState::earlyret_state_offset(), G4_scratch);
     cmp(G4_scratch, JvmtiThreadState::earlyret_pending);
     br(Assembler::notEqual, false, pt, L);
     delayed()->nop();
 
     // Call Interpreter::remove_activation_early_entry() to get the address of the
     // same-named entrypoint in the generated interpreter code
-    Address tos_addr(thr_state, 0, in_bytes(JvmtiThreadState::earlyret_tos_offset()));
-    ld(tos_addr, Otos_l1);
+    ld(thr_state, JvmtiThreadState::earlyret_tos_offset(), Otos_l1);
     call_VM_leaf(noreg, CAST_FROM_FN_PTR(address, Interpreter::remove_activation_early_entry), Otos_l1);
 
     // Jump to Interpreter::_remove_activation_early_entry
@@ -294,10 +287,9 @@
   } else {
 #endif
     // dispatch table to use
-    Address tbl(G3_scratch, (address)table);
-
+    AddressLiteral tbl(table);
     sll(Lbyte_code, LogBytesPerWord, Lbyte_code);       // multiply by wordSize
-    load_address(tbl);                                  // compute addr of table
+    set(tbl, G3_scratch);                               // compute addr of table
     ld_ptr(G3_scratch, Lbyte_code, G3_scratch);         // get entry addr
 #ifdef FAST_DISPATCH
   }
@@ -601,26 +593,17 @@
 
   // Reset SP by subtracting more space from Lesp.
   Label done;
-
-  const Address max_stack   (Lmethod, 0, in_bytes(methodOopDesc::max_stack_offset()));
-  const Address access_flags(Lmethod, 0, in_bytes(methodOopDesc::access_flags_offset()));
-
   verify_oop(Lmethod);
-
-
-  assert( G4_scratch    != Gframe_size,
-          "Only you can prevent register aliasing!");
+  assert(G4_scratch != Gframe_size, "Only you can prevent register aliasing!");
 
   // A native does not need to do this, since its callee does not change SP.
-  ld(access_flags, Gframe_size);
+  ld(Lmethod, methodOopDesc::access_flags_offset(), Gframe_size);  // Load access flags.
   btst(JVM_ACC_NATIVE, Gframe_size);
   br(Assembler::notZero, false, Assembler::pt, done);
   delayed()->nop();
 
-  //
   // Compute max expression stack+register save area
-  //
-  lduh( max_stack, Gframe_size );
+  lduh(Lmethod, in_bytes(methodOopDesc::max_stack_offset()), Gframe_size);  // Load max stack.
   if (TaggedStackInterpreter) sll ( Gframe_size, 1, Gframe_size);  // max_stack * 2 for TAGS
   add( Gframe_size, frame::memory_parameter_word_sp_offset, Gframe_size );
 
@@ -721,8 +704,7 @@
     verify_thread();
     Label skip_compiled_code;
 
-    const Address interp_only       (G2_thread, 0, in_bytes(JavaThread::interp_only_mode_offset()));
-
+    const Address interp_only(G2_thread, JavaThread::interp_only_mode_offset());
     ld(interp_only, scratch);
     tst(scratch);
     br(Assembler::notZero, true, Assembler::pn, skip_compiled_code);
@@ -916,8 +898,8 @@
                                                 Register Rscratch,
                                                 Label&   ok ) {
   assert(throw_entry_point != NULL, "entry point must be generated by now");
-  Address dest(Rscratch, throw_entry_point);
-  jump_to(dest);
+  AddressLiteral dest(throw_entry_point);
+  jump_to(dest, Rscratch);
   delayed()->nop();
   bind(ok);
 }
@@ -1035,18 +1017,18 @@
   Label unlocked, unlock, no_unlock;
 
   // get the value of _do_not_unlock_if_synchronized into G1_scratch
-  const Address do_not_unlock_if_synchronized(G2_thread, 0,
-    in_bytes(JavaThread::do_not_unlock_if_synchronized_offset()));
+  const Address do_not_unlock_if_synchronized(G2_thread,
+    JavaThread::do_not_unlock_if_synchronized_offset());
   ldbool(do_not_unlock_if_synchronized, G1_scratch);
   stbool(G0, do_not_unlock_if_synchronized); // reset the flag
 
   // check if synchronized method
-  const Address access_flags(Lmethod, 0, in_bytes(methodOopDesc::access_flags_offset()));
+  const Address access_flags(Lmethod, methodOopDesc::access_flags_offset());
   interp_verify_oop(Otos_i, state, __FILE__, __LINE__);
   push(state); // save tos
-  ld(access_flags, G3_scratch);
+  ld(access_flags, G3_scratch); // Load access flags.
   btst(JVM_ACC_SYNCHRONIZED, G3_scratch);
-  br( zero, false, pt, unlocked);
+  br(zero, false, pt, unlocked);
   delayed()->nop();
 
   // Don't unlock anything if the _do_not_unlock_if_synchronized flag
@@ -1236,8 +1218,8 @@
     Register obj_reg = Object;
     Register mark_reg = G4_scratch;
     Register temp_reg = G1_scratch;
-    Address  lock_addr = Address(lock_reg, 0, BasicObjectLock::lock_offset_in_bytes());
-    Address  mark_addr = Address(obj_reg, 0, oopDesc::mark_offset_in_bytes());
+    Address  lock_addr(lock_reg, BasicObjectLock::lock_offset_in_bytes());
+    Address  mark_addr(obj_reg, oopDesc::mark_offset_in_bytes());
     Label    done;
 
     Label slow_case;
@@ -1315,9 +1297,8 @@
     Register obj_reg = G3_scratch;
     Register mark_reg = G4_scratch;
     Register displaced_header_reg = G1_scratch;
-    Address  lock_addr = Address(lock_reg, 0, BasicObjectLock::lock_offset_in_bytes());
-    Address  lockobj_addr = Address(lock_reg, 0, BasicObjectLock::obj_offset_in_bytes());
-    Address  mark_addr = Address(obj_reg, 0, oopDesc::mark_offset_in_bytes());
+    Address  lockobj_addr(lock_reg, BasicObjectLock::obj_offset_in_bytes());
+    Address  mark_addr(obj_reg, oopDesc::mark_offset_in_bytes());
     Label    done;
 
     if (UseBiasedLocking) {
@@ -1328,7 +1309,8 @@
     }
 
     // Test first if we are in the fast recursive case
-    ld_ptr(lock_addr, displaced_header_reg, BasicLock::displaced_header_offset_in_bytes());
+    Address lock_addr(lock_reg, BasicObjectLock::lock_offset_in_bytes() + BasicLock::displaced_header_offset_in_bytes());
+    ld_ptr(lock_addr, displaced_header_reg);
     br_null(displaced_header_reg, true, Assembler::pn, done);
     delayed()->st_ptr(G0, lockobj_addr);  // free entry
 
@@ -1384,7 +1366,7 @@
   Label zero_continue;
 
   // Test MDO to avoid the call if it is NULL.
-  ld_ptr(Lmethod, in_bytes(methodOopDesc::method_data_offset()), ImethodDataPtr);
+  ld_ptr(Lmethod, methodOopDesc::method_data_offset(), ImethodDataPtr);
   test_method_data_pointer(zero_continue);
   call_VM_leaf(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::bcp_to_di), Lmethod, Lbcp);
   set_method_data_pointer_offset(O0);
@@ -1413,7 +1395,7 @@
   // If the mdp is valid, it will point to a DataLayout header which is
   // consistent with the bcp.  The converse is highly probable also.
   lduh(ImethodDataPtr, in_bytes(DataLayout::bci_offset()), G3_scratch);
-  ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::const_offset())), O5);
+  ld_ptr(Lmethod, methodOopDesc::const_offset(), O5);
   add(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()), G3_scratch);
   add(G3_scratch, O5, G3_scratch);
   cmp(Lbcp, G3_scratch);
@@ -1424,7 +1406,7 @@
   // %%% should use call_VM_leaf here?
   //call_VM_leaf(noreg, ..., Lmethod, Lbcp, ImethodDataPtr);
   save_frame_and_mov(sizeof(jdouble) / wordSize, Lmethod, O0, Lbcp, O1);
-  Address d_save(FP, 0, -sizeof(jdouble) + STACK_BIAS);
+  Address d_save(FP, -sizeof(jdouble) + STACK_BIAS);
   stf(FloatRegisterImpl::D, Ftos_d, d_save);
   mov(temp_reg->after_save(), O2);
   save_thread(L7_thread_cache);
@@ -1456,14 +1438,14 @@
 #endif
 
   // Test to see if we should create a method data oop
-  Address profile_limit(Rtmp, (address)&InvocationCounter::InterpreterProfileLimit);
+  AddressLiteral profile_limit((address) &InvocationCounter::InterpreterProfileLimit);
 #ifdef _LP64
   delayed()->nop();
-  sethi(profile_limit);
+  sethi(profile_limit, Rtmp);
 #else
-  delayed()->sethi(profile_limit);
+  delayed()->sethi(profile_limit, Rtmp);
 #endif
-  ld(profile_limit, Rtmp);
+  ld(Rtmp, profile_limit.low10(), Rtmp);
   cmp(invocation_count, Rtmp);
   br(Assembler::lessUnsigned, false, Assembler::pn, profile_continue);
   delayed()->nop();
@@ -1521,7 +1503,7 @@
                                                       Register bumped_count,
                                                       bool decrement) {
   // Locate the counter at a fixed offset from the mdp:
-  Address counter(ImethodDataPtr, 0, constant);
+  Address counter(ImethodDataPtr, constant);
   increment_mdp_data_at(counter, bumped_count, decrement);
 }
 
@@ -1535,7 +1517,7 @@
                                                       bool decrement) {
   // Add the constant to reg to get the offset.
   add(ImethodDataPtr, reg, scratch2);
-  Address counter(scratch2, 0, constant);
+  Address counter(scratch2, constant);
   increment_mdp_data_at(counter, bumped_count, decrement);
 }
 
@@ -2201,7 +2183,7 @@
 
 
 Address InterpreterMacroAssembler::top_most_monitor() {
-  return Address(FP, 0, top_most_monitor_byte_offset());
+  return Address(FP, top_most_monitor_byte_offset());
 }
 
 
@@ -2214,15 +2196,15 @@
 void InterpreterMacroAssembler::increment_invocation_counter( Register Rtmp, Register Rtmp2 ) {
   assert(UseCompiler, "incrementing must be useful");
 #ifdef CC_INTERP
-  Address inv_counter(G5_method, 0, in_bytes(methodOopDesc::invocation_counter_offset()
-                            + InvocationCounter::counter_offset()));
-  Address be_counter(G5_method, 0, in_bytes(methodOopDesc::backedge_counter_offset()
-                            + InvocationCounter::counter_offset()));
+  Address inv_counter(G5_method, methodOopDesc::invocation_counter_offset() +
+                                 InvocationCounter::counter_offset());
+  Address be_counter (G5_method, methodOopDesc::backedge_counter_offset() +
+                                 InvocationCounter::counter_offset());
 #else
-  Address inv_counter(Lmethod, 0, in_bytes(methodOopDesc::invocation_counter_offset()
-                            + InvocationCounter::counter_offset()));
-  Address be_counter(Lmethod, 0, in_bytes(methodOopDesc::backedge_counter_offset()
-                            + InvocationCounter::counter_offset()));
+  Address inv_counter(Lmethod, methodOopDesc::invocation_counter_offset() +
+                               InvocationCounter::counter_offset());
+  Address be_counter (Lmethod, methodOopDesc::backedge_counter_offset() +
+                               InvocationCounter::counter_offset());
 #endif /* CC_INTERP */
   int delta = InvocationCounter::count_increment;
 
@@ -2250,15 +2232,15 @@
 void InterpreterMacroAssembler::increment_backedge_counter( Register Rtmp, Register Rtmp2 ) {
   assert(UseCompiler, "incrementing must be useful");
 #ifdef CC_INTERP
-  Address be_counter(G5_method, 0, in_bytes(methodOopDesc::backedge_counter_offset()
-                            + InvocationCounter::counter_offset()));
-  Address inv_counter(G5_method, 0, in_bytes(methodOopDesc::invocation_counter_offset()
-                            +  InvocationCounter::counter_offset()));
+  Address be_counter (G5_method, methodOopDesc::backedge_counter_offset() +
+                                 InvocationCounter::counter_offset());
+  Address inv_counter(G5_method, methodOopDesc::invocation_counter_offset() +
+                                 InvocationCounter::counter_offset());
 #else
-  Address be_counter(Lmethod, 0, in_bytes(methodOopDesc::backedge_counter_offset()
-                            + InvocationCounter::counter_offset()));
-  Address inv_counter(Lmethod, 0, in_bytes(methodOopDesc::invocation_counter_offset()
-                            + InvocationCounter::counter_offset()));
+  Address be_counter (Lmethod, methodOopDesc::backedge_counter_offset() +
+                               InvocationCounter::counter_offset());
+  Address inv_counter(Lmethod, methodOopDesc::invocation_counter_offset() +
+                               InvocationCounter::counter_offset());
 #endif /* CC_INTERP */
   int delta = InvocationCounter::count_increment;
   // Load each counter in a register
@@ -2289,7 +2271,7 @@
   assert_different_registers(backedge_count, Rtmp, branch_bcp);
   assert(UseOnStackReplacement,"Must UseOnStackReplacement to test_backedge_count_for_osr");
 
-  Address limit(Rtmp, address(&InvocationCounter::InterpreterBackwardBranchLimit));
+  AddressLiteral limit(&InvocationCounter::InterpreterBackwardBranchLimit);
   load_contents(limit, Rtmp);
   cmp(backedge_count, Rtmp);
   br(Assembler::lessUnsigned, false, Assembler::pt, did_not_overflow);
@@ -2435,9 +2417,7 @@
   if (JvmtiExport::can_post_interpreter_events()) {
     Label L;
     Register temp_reg = O5;
-
-    const Address interp_only       (G2_thread, 0, in_bytes(JavaThread::interp_only_mode_offset()));
-
+    const Address interp_only(G2_thread, JavaThread::interp_only_mode_offset());
     ld(interp_only, temp_reg);
     tst(temp_reg);
     br(zero, false, pt, L);
@@ -2489,9 +2469,7 @@
   if (mode == NotifyJVMTI && JvmtiExport::can_post_interpreter_events()) {
     Label L;
     Register temp_reg = O5;
-
-    const Address interp_only       (G2_thread, 0, in_bytes(JavaThread::interp_only_mode_offset()));
-
+    const Address interp_only(G2_thread, JavaThread::interp_only_mode_offset());
     ld(interp_only, temp_reg);
     tst(temp_reg);
     br(zero, false, pt, L);
--- a/hotspot/src/cpu/sparc/vm/interpreterRT_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/interpreterRT_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -105,7 +105,7 @@
   // the handle for a receiver will never be null
   bool do_NULL_check = offset() != 0 || is_static();
 
-  Address     h_arg = Address(Llocals, 0, Interpreter::local_offset_in_bytes(offset()));
+  Address     h_arg = Address(Llocals, Interpreter::local_offset_in_bytes(offset()));
   __ ld_ptr(h_arg, Rtmp1);
 #ifdef ASSERT
   if (TaggedStackInterpreter) {
@@ -120,14 +120,14 @@
   }
 #endif // ASSERT
   if (!do_NULL_check) {
-    __ add(h_arg, Rtmp2);
+    __ add(h_arg.base(), h_arg.disp(), Rtmp2);
   } else {
     if (Rtmp1 == Rtmp2)
           __ tst(Rtmp1);
     else  __ addcc(G0, Rtmp1, Rtmp2); // optimize mov/test pair
     Label L;
     __ brx(Assembler::notZero, true, Assembler::pt, L);
-    __ delayed()->add(h_arg, Rtmp2);
+    __ delayed()->add(h_arg.base(), h_arg.disp(), Rtmp2);
     __ bind(L);
   }
   __ store_ptr_argument(Rtmp2, jni_arg);    // this is often a no-op
@@ -140,10 +140,10 @@
   iterate(fingerprint);
 
   // return result handler
-  Address result_handler(Lscratch, Interpreter::result_handler(method()->result_type()));
-  __ sethi(result_handler);
+  AddressLiteral result_handler(Interpreter::result_handler(method()->result_type()));
+  __ sethi(result_handler, Lscratch);
   __ retl();
-  __ delayed()->add(result_handler, result_handler.base());
+  __ delayed()->add(Lscratch, result_handler.low10(), Lscratch);
 
   __ flush();
 }
--- a/hotspot/src/cpu/sparc/vm/jniFastGetField_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/jniFastGetField_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2004-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -57,10 +57,10 @@
 
   Label label1, label2;
 
-  address cnt_addr = SafepointSynchronize::safepoint_counter_addr();
-  Address ca(O3, cnt_addr);
-  __ sethi (ca);
-  __ ld (ca, G4);
+  AddressLiteral cnt_addrlit(SafepointSynchronize::safepoint_counter_addr());
+  __ sethi (cnt_addrlit, O3);
+  Address cnt_addr(O3, cnt_addrlit.low10());
+  __ ld (cnt_addr, G4);
   __ andcc (G4, 1, G0);
   __ br (Assembler::notZero, false, Assembler::pn, label1);
   __ delayed()->srl (O2, 2, O4);
@@ -77,7 +77,7 @@
     default:        ShouldNotReachHere();
   }
 
-  __ ld (ca, O5);
+  __ ld (cnt_addr, O5);
   __ cmp (O5, G4);
   __ br (Assembler::notEqual, false, Assembler::pn, label2);
   __ delayed()->mov (O7, G1);
@@ -136,10 +136,10 @@
 
   Label label1, label2;
 
-  address cnt_addr = SafepointSynchronize::safepoint_counter_addr();
-  Address ca(G3, cnt_addr);
-  __ sethi (ca);
-  __ ld (ca, G4);
+  AddressLiteral cnt_addrlit(SafepointSynchronize::safepoint_counter_addr());
+  __ sethi (cnt_addrlit, G3);
+  Address cnt_addr(G3, cnt_addrlit.low10());
+  __ ld (cnt_addr, G4);
   __ andcc (G4, 1, G0);
   __ br (Assembler::notZero, false, Assembler::pn, label1);
   __ delayed()->srl (O2, 2, O4);
@@ -159,7 +159,7 @@
   __ ldx (O5, 0, O3);
 #endif
 
-  __ ld (ca, G1);
+  __ ld (cnt_addr, G1);
   __ cmp (G1, G4);
   __ br (Assembler::notEqual, false, Assembler::pn, label2);
   __ delayed()->mov (O7, G1);
@@ -208,10 +208,10 @@
 
   Label label1, label2;
 
-  address cnt_addr = SafepointSynchronize::safepoint_counter_addr();
-  Address ca(O3, cnt_addr);
-  __ sethi (ca);
-  __ ld (ca, G4);
+  AddressLiteral cnt_addrlit(SafepointSynchronize::safepoint_counter_addr());
+  __ sethi (cnt_addrlit, O3);
+  Address cnt_addr(O3, cnt_addrlit.low10());
+  __ ld (cnt_addr, G4);
   __ andcc (G4, 1, G0);
   __ br (Assembler::notZero, false, Assembler::pn, label1);
   __ delayed()->srl (O2, 2, O4);
@@ -225,7 +225,7 @@
     default:       ShouldNotReachHere();
   }
 
-  __ ld (ca, O5);
+  __ ld (cnt_addr, O5);
   __ cmp (O5, G4);
   __ br (Assembler::notEqual, false, Assembler::pn, label2);
   __ delayed()->mov (O7, G1);
--- a/hotspot/src/cpu/sparc/vm/nativeInst_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/nativeInst_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,8 +38,7 @@
 
   destreg = inv_rd(*(unsigned int *)instaddr);
   // Generate a the new sequence
-  Address dest( destreg, (address)x );
-  _masm->sethi( dest, true );
+  _masm->patchable_sethi(x, destreg);
   ICache::invalidate_range(instaddr, 7 * BytesPerInstWord);
 }
 
@@ -227,8 +226,8 @@
   CodeBuffer buf(addr_at(0), instruction_size + 1);
   MacroAssembler* _masm = new MacroAssembler(&buf);
   // Generate the new sequence
-  Address(O7, dest);
-  _masm->jumpl_to(dest, O7);
+  AddressLiteral(dest);
+  _masm->jumpl_to(dest, O7, O7);
   ICache::invalidate_range(addr_at(0), instruction_size );
 #endif
 }
@@ -361,10 +360,12 @@
 
   VM_Version::allow_all();
 
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none);
-  a->add(I3, low10(0xaaaabbbb), I3);
-  a->sethi(0xccccdddd, O2, true, RelocationHolder::none);
-  a->add(O2, low10(0xccccdddd), O2);
+  AddressLiteral al1(0xaaaabbbb, relocInfo::external_word_type);
+  a->sethi(al1, I3);
+  a->add(I3, al1.low10(), I3);
+  AddressLiteral al2(0xccccdddd, relocInfo::external_word_type);
+  a->sethi(al2, O2);
+  a->add(O2, al2.low10(), O2);
 
   nm = nativeMovConstReg_at( cb.code_begin() );
   nm->print();
@@ -468,12 +469,14 @@
 
   VM_Version::allow_all();
 
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none);
+  AddressLiteral al1(0xaaaabbbb, relocInfo::external_word_type);
+  a->sethi(al1, I3);
   a->nop();
-  a->add(I3, low10(0xaaaabbbb), I3);
-  a->sethi(0xccccdddd, O2, true, RelocationHolder::none);
+  a->add(I3, al1.low10(), I3);
+  AddressLiteral al2(0xccccdddd, relocInfo::external_word_type);
+  a->sethi(al2, O2);
   a->nop();
-  a->add(O2, low10(0xccccdddd), O2);
+  a->add(O2, al2.low10(), O2);
 
   nm = nativeMovConstRegPatching_at( cb.code_begin() );
   nm->print();
@@ -562,51 +565,53 @@
 
   VM_Version::allow_all();
 
-  a->ldsw( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  AddressLiteral al1(0xffffffff, relocInfo::external_word_type);
+  AddressLiteral al2(0xaaaabbbb, relocInfo::external_word_type);
+  a->ldsw( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldsw( G5, I3, G4 ); idx++;
-  a->ldsb( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldsb( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldsb( G5, I3, G4 ); idx++;
-  a->ldsh( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldsh( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldsh( G5, I3, G4 ); idx++;
-  a->lduw( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->lduw( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->lduw( G5, I3, G4 ); idx++;
-  a->ldub( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldub( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldub( G5, I3, G4 ); idx++;
-  a->lduh( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->lduh( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->lduh( G5, I3, G4 ); idx++;
-  a->ldx( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldx( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldx( G5, I3, G4 ); idx++;
-  a->ldd( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldd( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldd( G5, I3, G4 ); idx++;
   a->ldf( FloatRegisterImpl::D, O2, -1, F14 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldf( FloatRegisterImpl::S, O0, I3, F15 ); idx++;
 
-  a->stw( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->stw( G5, G4, al1.low10() ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->stw( G5, G4, I3 ); idx++;
-  a->stb( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->stb( G5, G4, al1.low10() ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->stb( G5, G4, I3 ); idx++;
-  a->sth( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->sth( G5, G4, al1.low10() ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->sth( G5, G4, I3 ); idx++;
-  a->stx( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->stx( G5, G4, al1.low10() ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->stx( G5, G4, I3 ); idx++;
-  a->std( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->std( G5, G4, al1.low10() ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->std( G5, G4, I3 ); idx++;
   a->stf( FloatRegisterImpl::S, F18, O2, -1 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->stf( FloatRegisterImpl::S, F15, O0, I3 ); idx++;
 
   nm = nativeMovRegMem_at( cb.code_begin() );
@@ -705,51 +710,52 @@
 
   VM_Version::allow_all();
 
-  a->ldsw( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  AddressLiteral al(0xffffffff, relocInfo::external_word_type);
+  a->ldsw( G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->ldsw( G5, I3, G4 ); idx++;
-  a->ldsb( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldsb( G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->ldsb( G5, I3, G4 ); idx++;
-  a->ldsh( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldsh( G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->ldsh( G5, I3, G4 ); idx++;
-  a->lduw( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->lduw( G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->lduw( G5, I3, G4 ); idx++;
-  a->ldub( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldub( G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->ldub( G5, I3, G4 ); idx++;
-  a->lduh( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->lduh( G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->lduh( G5, I3, G4 ); idx++;
-  a->ldx( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
-  a->ldx( G5, I3, G4 ); idx++;
-  a->ldd( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
-  a->ldd( G5, I3, G4 ); idx++;
-  a->ldf( FloatRegisterImpl::D, O2, -1, F14 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
-  a->ldf( FloatRegisterImpl::S, O0, I3, F15 ); idx++;
+  a->ldx(  G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
+  a->ldx(  G5, I3, G4 ); idx++;
+  a->ldd(  G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
+  a->ldd(  G5, I3, G4 ); idx++;
+  a->ldf(  FloatRegisterImpl::D, O2, -1, F14 ); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
+  a->ldf(  FloatRegisterImpl::S, O0, I3, F15 ); idx++;
 
-  a->stw( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->stw( G5, G4, al.low10()); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->stw( G5, G4, I3 ); idx++;
-  a->stb( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->stb( G5, G4, al.low10()); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->stb( G5, G4, I3 ); idx++;
-  a->sth( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->sth( G5, G4, al.low10()); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->sth( G5, G4, I3 ); idx++;
-  a->stx( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->stx( G5, G4, al.low10()); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->stx( G5, G4, I3 ); idx++;
-  a->std( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->std( G5, G4, al.low10()); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->std( G5, G4, I3 ); idx++;
   a->stf( FloatRegisterImpl::S, F18, O2, -1 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->stf( FloatRegisterImpl::S, F15, O0, I3 ); idx++;
 
   nm = nativeMovRegMemPatching_at( cb.code_begin() );
@@ -833,11 +839,12 @@
 
   VM_Version::allow_all();
 
-  a->sethi(0x7fffbbbb, I3, true, RelocationHolder::none);
-  a->jmpl(I3, low10(0x7fffbbbb), G0, RelocationHolder::none);
+  AddressLiteral al(0x7fffbbbb, relocInfo::external_word_type);
+  a->sethi(al, I3);
+  a->jmpl(I3, al.low10(), G0, RelocationHolder::none);
   a->delayed()->nop();
-  a->sethi(0x7fffbbbb, I3, true, RelocationHolder::none);
-  a->jmpl(I3, low10(0x7fffbbbb), L3, RelocationHolder::none);
+  a->sethi(al, I3);
+  a->jmpl(I3, al.low10(), L3, RelocationHolder::none);
   a->delayed()->nop();
 
   nj = nativeJump_at( cb.code_begin() );
--- a/hotspot/src/cpu/sparc/vm/relocInfo_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/relocInfo_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -99,13 +99,6 @@
       break;
     }
     ip->set_data64_sethi( ip->addr_at(0), (intptr_t)x );
-#ifdef COMPILER2
-    // [RGV] Someone must have missed putting in a reloc entry for the
-    // add in compiler2.
-    inst2 = ip->long_at( NativeMovConstReg::add_offset );
-    guarantee(Assembler::inv_op(inst2)==Assembler::arith_op, "arith op");
-    ip->set_long_at(NativeMovConstReg::add_offset,ip->set_data32_simm13( inst2, (intptr_t)x+o));
-#endif
 #else
     guarantee(Assembler::inv_op2(inst)==Assembler::sethi_op2, "must be sethi");
     inst &= ~Assembler::hi22(     -1);
--- a/hotspot/src/cpu/sparc/vm/runtime_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/runtime_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -74,8 +74,8 @@
   int start = __ offset();
 
   __ verify_thread();
-  __ st_ptr(Oexception,  Address(G2_thread, 0, in_bytes(JavaThread::exception_oop_offset())));
-  __ st_ptr(Oissuing_pc, Address(G2_thread, 0, in_bytes(JavaThread::exception_pc_offset())));
+  __ st_ptr(Oexception,  G2_thread, JavaThread::exception_oop_offset());
+  __ st_ptr(Oissuing_pc, G2_thread, JavaThread::exception_pc_offset());
 
   // This call does all the hard work. It checks if an exception catch
   // exists in the method.
@@ -120,19 +120,19 @@
   // Since this may be the deopt blob we must set O7 to look like we returned
   // from the original pc that threw the exception
 
-  __ ld_ptr(Address(G2_thread, 0, in_bytes(JavaThread::exception_pc_offset())), O7);
+  __ ld_ptr(G2_thread, JavaThread::exception_pc_offset(), O7);
   __ sub(O7, frame::pc_return_offset, O7);
 
 
   assert(Assembler::is_simm13(in_bytes(JavaThread::exception_oop_offset())), "exception offset overflows simm13, following ld instruction cannot be in delay slot");
-  __ ld_ptr(Address(G2_thread, 0, in_bytes(JavaThread::exception_oop_offset())), Oexception); // O0
+  __ ld_ptr(G2_thread, JavaThread::exception_oop_offset(), Oexception); // O0
 #ifdef ASSERT
-  __ st_ptr(G0, Address(G2_thread, 0, in_bytes(JavaThread::exception_handler_pc_offset())));
-  __ st_ptr(G0, Address(G2_thread, 0, in_bytes(JavaThread::exception_pc_offset())));
+  __ st_ptr(G0, G2_thread, JavaThread::exception_handler_pc_offset());
+  __ st_ptr(G0, G2_thread, JavaThread::exception_pc_offset());
 #endif
   __ JMP(G3_scratch, 0);
   // Clear the exception oop so GC no longer processes it as a root.
-  __ delayed()->st_ptr(G0, Address(G2_thread, 0, in_bytes(JavaThread::exception_oop_offset())));
+  __ delayed()->st_ptr(G0, G2_thread, JavaThread::exception_oop_offset());
 
   // -------------
   // make sure all code is generated
--- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -625,9 +625,9 @@
   __ mov(I7, O1);                // VM needs caller's callsite
   // Must be a leaf call...
   // can be very far once the blob has been relocated
-  Address dest(O7, CAST_FROM_FN_PTR(address, SharedRuntime::fixup_callers_callsite));
+  AddressLiteral dest(CAST_FROM_FN_PTR(address, SharedRuntime::fixup_callers_callsite));
   __ relocate(relocInfo::runtime_call_type);
-  __ jumpl_to(dest, O7);
+  __ jumpl_to(dest, O7, O7);
   __ delayed()->mov(G2_thread, L7_thread_cache);
   __ mov(L7_thread_cache, G2_thread);
   __ mov(L1, G1);
@@ -1152,7 +1152,7 @@
 #ifndef _LP64
     if (g3_crushed) {
       // Rats load was wasted, at least it is in cache...
-      __ ld_ptr(G5_method, in_bytes(methodOopDesc::from_compiled_offset()), G3);
+      __ ld_ptr(G5_method, methodOopDesc::from_compiled_offset(), G3);
     }
 #endif /* _LP64 */
 
@@ -1165,7 +1165,7 @@
     // we try and find the callee by normal means a safepoint
     // is possible. So we stash the desired callee in the thread
     // and the vm will find there should this case occur.
-    Address callee_target_addr(G2_thread, 0, in_bytes(JavaThread::callee_target_offset()));
+    Address callee_target_addr(G2_thread, JavaThread::callee_target_offset());
     __ st_ptr(G5_method, callee_target_addr);
 
     if (StressNonEntrant) {
@@ -1218,7 +1218,7 @@
     Register R_temp   = G1;   // another scratch register
 #endif
 
-    Address ic_miss(G3_scratch, SharedRuntime::get_ic_miss_stub());
+    AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
 
     __ verify_oop(O0);
     __ verify_oop(G5_method);
@@ -1240,7 +1240,7 @@
     Label ok, ok2;
     __ brx(Assembler::equal, false, Assembler::pt, ok);
     __ delayed()->ld_ptr(G5_method, compiledICHolderOopDesc::holder_method_offset(), G5_method);
-    __ jump_to(ic_miss);
+    __ jump_to(ic_miss, G3_scratch);
     __ delayed()->nop();
 
     __ bind(ok);
@@ -1251,7 +1251,7 @@
     __ bind(ok2);
     __ br_null(G3_scratch, false, __ pt, skip_fixup);
     __ delayed()->ld_ptr(G5_method, in_bytes(methodOopDesc::interpreter_entry_offset()), G3_scratch);
-    __ jump_to(ic_miss);
+    __ jump_to(ic_miss, G3_scratch);
     __ delayed()->nop();
 
   }
@@ -1444,8 +1444,8 @@
   // without calling into the VM: it's the empty function.  Just pop this
   // frame and then jump to forward_exception_entry; O7 will contain the
   // native caller's return PC.
-  Address exception_entry(G3_scratch, StubRoutines::forward_exception_entry());
-  __ jump_to(exception_entry);
+ AddressLiteral exception_entry(StubRoutines::forward_exception_entry());
+  __ jump_to(exception_entry, G3_scratch);
   __ delayed()->restore();      // Pop this frame off.
   __ bind(L);
 }
@@ -1822,14 +1822,14 @@
   {
     Label L;
     const Register temp_reg = G3_scratch;
-    Address ic_miss(temp_reg, SharedRuntime::get_ic_miss_stub());
+    AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
     __ verify_oop(O0);
     __ load_klass(O0, temp_reg);
     __ cmp(temp_reg, G5_inline_cache_reg);
     __ brx(Assembler::equal, true, Assembler::pt, L);
     __ delayed()->nop();
 
-    __ jump_to(ic_miss, 0);
+    __ jump_to(ic_miss, temp_reg);
     __ delayed()->nop();
     __ align(CodeEntryAlignment);
     __ bind(L);
@@ -2261,21 +2261,19 @@
 
   // Transition from _thread_in_Java to _thread_in_native.
   __ set(_thread_in_native, G3_scratch);
-  __ st(G3_scratch, G2_thread, in_bytes(JavaThread::thread_state_offset()));
+  __ st(G3_scratch, G2_thread, JavaThread::thread_state_offset());
 
   // We flushed the windows ages ago now mark them as flushed
 
   // mark windows as flushed
   __ set(JavaFrameAnchor::flushed, G3_scratch);
 
-  Address flags(G2_thread,
-                0,
-                in_bytes(JavaThread::frame_anchor_offset()) + in_bytes(JavaFrameAnchor::flags_offset()));
+  Address flags(G2_thread, JavaThread::frame_anchor_offset() + JavaFrameAnchor::flags_offset());
 
 #ifdef _LP64
-  Address dest(O7, method->native_function());
+  AddressLiteral dest(method->native_function());
   __ relocate(relocInfo::runtime_call_type);
-  __ jumpl_to(dest, O7);
+  __ jumpl_to(dest, O7, O7);
 #else
   __ call(method->native_function(), relocInfo::runtime_call_type);
 #endif
@@ -2316,7 +2314,7 @@
   // Block, if necessary, before resuming in _thread_in_Java state.
   // In order for GC to work, don't clear the last_Java_sp until after blocking.
   { Label no_block;
-    Address sync_state(G3_scratch, SafepointSynchronize::address_of_state());
+    AddressLiteral sync_state(SafepointSynchronize::address_of_state());
 
     // Switch thread to "native transition" state before reading the synchronization state.
     // This additional state is necessary because reading and testing the synchronization
@@ -2326,7 +2324,7 @@
     //     Thread A is resumed to finish this native method, but doesn't block here since it
     //     didn't see any synchronization is progress, and escapes.
     __ set(_thread_in_native_trans, G3_scratch);
-    __ st(G3_scratch, G2_thread, in_bytes(JavaThread::thread_state_offset()));
+    __ st(G3_scratch, G2_thread, JavaThread::thread_state_offset());
     if(os::is_MP()) {
       if (UseMembar) {
         // Force this write out before the read below
@@ -2343,10 +2341,9 @@
     __ cmp(G3_scratch, SafepointSynchronize::_not_synchronized);
 
     Label L;
-    Address suspend_state(G2_thread, 0, in_bytes(JavaThread::suspend_flags_offset()));
+    Address suspend_state(G2_thread, JavaThread::suspend_flags_offset());
     __ br(Assembler::notEqual, false, Assembler::pn, L);
-    __ delayed()->
-      ld(suspend_state, G3_scratch);
+    __ delayed()->ld(suspend_state, G3_scratch);
     __ cmp(G3_scratch, 0);
     __ br(Assembler::equal, false, Assembler::pt, no_block);
     __ delayed()->nop();
@@ -2372,11 +2369,11 @@
 
 
   __ set(_thread_in_Java, G3_scratch);
-  __ st(G3_scratch, G2_thread, in_bytes(JavaThread::thread_state_offset()));
+  __ st(G3_scratch, G2_thread, JavaThread::thread_state_offset());
 
 
   Label no_reguard;
-  __ ld(G2_thread, in_bytes(JavaThread::stack_guard_state_offset()), G3_scratch);
+  __ ld(G2_thread, JavaThread::stack_guard_state_offset(), G3_scratch);
   __ cmp(G3_scratch, JavaThread::stack_guard_yellow_disabled);
   __ br(Assembler::notEqual, false, Assembler::pt, no_reguard);
   __ delayed()->nop();
@@ -2684,14 +2681,14 @@
   {
     Label L;
     const Register temp_reg = G3_scratch;
-    Address ic_miss(temp_reg, SharedRuntime::get_ic_miss_stub());
+    AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
     __ verify_oop(O0);
     __ ld_ptr(O0, oopDesc::klass_offset_in_bytes(), temp_reg);
     __ cmp(temp_reg, G5_inline_cache_reg);
     __ brx(Assembler::equal, true, Assembler::pt, L);
     __ delayed()->nop();
 
-    __ jump_to(ic_miss, 0);
+    __ jump_to(ic_miss, temp_reg);
     __ delayed()->nop();
     __ align(CodeEntryAlignment);
     __ bind(L);
@@ -3155,15 +3152,13 @@
   // Do this after the caller's return address is on top of stack
   if (UseStackBanging) {
     // Get total frame size for interpreted frames
-    __ ld(Address(O2UnrollBlock, 0,
-         Deoptimization::UnrollBlock::total_frame_sizes_offset_in_bytes()), O4);
+    __ ld(O2UnrollBlock, Deoptimization::UnrollBlock::total_frame_sizes_offset_in_bytes(), O4);
     __ bang_stack_size(O4, O3, G3_scratch);
   }
 
-  __ ld(Address(O2UnrollBlock, 0, Deoptimization::UnrollBlock::number_of_frames_offset_in_bytes()), O4array_size);
-  __ ld_ptr(Address(O2UnrollBlock, 0, Deoptimization::UnrollBlock::frame_pcs_offset_in_bytes()), G3pcs);
-
-  __ ld_ptr(Address(O2UnrollBlock, 0, Deoptimization::UnrollBlock::frame_sizes_offset_in_bytes()), O3array);
+  __ ld(O2UnrollBlock, Deoptimization::UnrollBlock::number_of_frames_offset_in_bytes(), O4array_size);
+  __ ld_ptr(O2UnrollBlock, Deoptimization::UnrollBlock::frame_pcs_offset_in_bytes(), G3pcs);
+  __ ld_ptr(O2UnrollBlock, Deoptimization::UnrollBlock::frame_sizes_offset_in_bytes(), O3array);
 
   // Adjust old interpreter frame to make space for new frame's extra java locals
   //
@@ -3176,7 +3171,7 @@
   // for each frame we create and keep up the illusion every where.
   //
 
-  __ ld(Address(O2UnrollBlock, 0, Deoptimization::UnrollBlock::caller_adjustment_offset_in_bytes()), O7);
+  __ ld(O2UnrollBlock, Deoptimization::UnrollBlock::caller_adjustment_offset_in_bytes(), O7);
   __ mov(SP, O5_savedSP);       // remember initial sender's original sp before adjustment
   __ sub(SP, O7, SP);
 
@@ -3225,9 +3220,9 @@
   Register        I5exception_tmp    = I5;
   Register        G4exception_tmp    = G4_scratch;
   int             frame_size_words;
-  Address         saved_Freturn0_addr(FP, 0, -sizeof(double) + STACK_BIAS);
+  Address         saved_Freturn0_addr(FP, -sizeof(double) + STACK_BIAS);
 #if !defined(_LP64) && defined(COMPILER2)
-  Address         saved_Greturn1_addr(FP, 0, -sizeof(double) -sizeof(jlong) + STACK_BIAS);
+  Address         saved_Greturn1_addr(FP, -sizeof(double) -sizeof(jlong) + STACK_BIAS);
 #endif
   Label           cont;
 
@@ -3289,7 +3284,7 @@
   // save exception oop in JavaThread and fall through into the
   // exception_in_tls case since they are handled in same way except
   // for where the pending exception is kept.
-  __ st_ptr(Oexception, G2_thread, in_bytes(JavaThread::exception_oop_offset()));
+  __ st_ptr(Oexception, G2_thread, JavaThread::exception_oop_offset());
 
   //
   // Vanilla deoptimization with an exception pending in exception_oop
@@ -3306,7 +3301,7 @@
   {
     // verify that there is really an exception oop in exception_oop
     Label has_exception;
-    __ ld_ptr(G2_thread, in_bytes(JavaThread::exception_oop_offset()), Oexception);
+    __ ld_ptr(G2_thread, JavaThread::exception_oop_offset(), Oexception);
     __ br_notnull(Oexception, false, Assembler::pt, has_exception);
     __ delayed()-> nop();
     __ stop("no exception in thread");
@@ -3314,7 +3309,7 @@
 
     // verify that there is no pending exception
     Label no_pending_exception;
-    Address exception_addr(G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
+    Address exception_addr(G2_thread, Thread::pending_exception_offset());
     __ ld_ptr(exception_addr, Oexception);
     __ br_null(Oexception, false, Assembler::pt, no_pending_exception);
     __ delayed()->nop();
--- a/hotspot/src/cpu/sparc/vm/sparc.ad	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/sparc.ad	Wed Jul 05 16:52:18 2017 +0200
@@ -980,8 +980,8 @@
   // This code sequence is relocatable to any address, even on LP64.
   if ( force_far_call ) {
     __ relocate(rtype);
-    Address dest(O7, (address)entry_point);
-    __ jumpl_to(dest, O7);
+    AddressLiteral dest(entry_point);
+    __ jumpl_to(dest, O7, O7);
   }
   else
 #endif
@@ -1031,17 +1031,6 @@
 void emit_lo(CodeBuffer &cbuf, int val) {  }
 void emit_hi(CodeBuffer &cbuf, int val) {  }
 
-void emit_ptr(CodeBuffer &cbuf, intptr_t val, Register reg, bool ForceRelocatable) {
-  MacroAssembler _masm(&cbuf);
-  if (ForceRelocatable) {
-    Address addr(reg, (address)val);
-    __ sethi(addr, ForceRelocatable);
-    __ add(addr, reg);
-  } else {
-    __ set(val, reg);
-  }
-}
-
 
 //=============================================================================
 
@@ -1149,8 +1138,8 @@
 
   // If this does safepoint polling, then do it here
   if( do_polling() && ra_->C->is_method_compilation() ) {
-    Address polling_page(L0, (address)os::get_polling_page());
-    __ sethi(polling_page, false);
+    AddressLiteral polling_page(os::get_polling_page());
+    __ sethi(polling_page, L0);
     __ relocate(relocInfo::poll_return_type);
     __ ld_ptr( L0, 0, G0 );
   }
@@ -1576,8 +1565,8 @@
   __ set_oop(NULL, reg_to_register_object(Matcher::inline_cache_reg_encode()));
 
   __ set_inst_mark();
-  Address a(G3, (address)-1);
-  __ JUMP(a, 0);
+  AddressLiteral addrlit(-1);
+  __ JUMP(addrlit, G3, 0);
 
   __ delayed()->nop();
 
@@ -1662,7 +1651,7 @@
 // Emit exception handler code.
 int emit_exception_handler(CodeBuffer& cbuf) {
   Register temp_reg = G3;
-  Address exception_blob(temp_reg, OptoRuntime::exception_blob()->instructions_begin());
+  AddressLiteral exception_blob(OptoRuntime::exception_blob()->instructions_begin());
   MacroAssembler _masm(&cbuf);
 
   address base =
@@ -1671,7 +1660,7 @@
 
   int offset = __ offset();
 
-  __ JUMP(exception_blob, 0); // sethi;jmp
+  __ JUMP(exception_blob, temp_reg, 0); // sethi;jmp
   __ delayed()->nop();
 
   assert(__ offset() - offset <= (int) size_exception_handler(), "overflow");
@@ -1685,7 +1674,7 @@
   // Can't use any of the current frame's registers as we may have deopted
   // at a poll and everything (including G3) can be live.
   Register temp_reg = L0;
-  Address deopt_blob(temp_reg, SharedRuntime::deopt_blob()->unpack());
+  AddressLiteral deopt_blob(SharedRuntime::deopt_blob()->unpack());
   MacroAssembler _masm(&cbuf);
 
   address base =
@@ -1694,7 +1683,7 @@
 
   int offset = __ offset();
   __ save_frame(0);
-  __ JUMP(deopt_blob, 0); // sethi;jmp
+  __ JUMP(deopt_blob, temp_reg, 0); // sethi;jmp
   __ delayed()->restore();
 
   assert(__ offset() - offset <= (int) size_deopt_handler(), "overflow");
@@ -2261,9 +2250,8 @@
     address table_base = __ address_table_constant(_index2label);
     RelocationHolder rspec = internal_word_Relocation::spec(table_base);
 
-    // Load table address
-    Address the_pc(table_reg, table_base, rspec);
-    __ load_address(the_pc);
+    // Move table address into a register.
+    __ set(table_base, table_reg, rspec);
 
     // Jump to base address + switch value
     __ ld_ptr(table_reg, switch_reg, table_reg);
@@ -2402,13 +2390,13 @@
   // The 64 bit pointer is stored in the generated code stream
   enc_class SetPtr( immP src, iRegP rd ) %{
     Register dest = reg_to_register_object($rd$$reg);
+    MacroAssembler _masm(&cbuf);
     // [RGV] This next line should be generated from ADLC
     if ( _opnds[1]->constant_is_oop() ) {
       intptr_t val = $src$$constant;
-      MacroAssembler _masm(&cbuf);
       __ set_oop_constant((jobject)val, dest);
     } else {          // non-oop pointers, e.g. card mark base, heap top
-      emit_ptr(cbuf, $src$$constant, dest, /*ForceRelocatable=*/ false);
+      __ set($src$$constant, dest);
     }
   %}
 
@@ -2789,46 +2777,6 @@
     __ set64( $src$$constant, dest, temp );
   %}
 
-  enc_class LdImmF(immF src, regF dst, o7RegP tmp) %{    // Load Immediate
-    address float_address = MacroAssembler(&cbuf).float_constant($src$$constant);
-    RelocationHolder rspec = internal_word_Relocation::spec(float_address);
-#ifdef _LP64
-    Register   tmp_reg = reg_to_register_object($tmp$$reg);
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit_ptr(cbuf, (intptr_t)float_address, tmp_reg, /*ForceRelocatable=*/ true);
-    emit3_simm10( cbuf, Assembler::ldst_op, $dst$$reg, Assembler::ldf_op3, $tmp$$reg, 0 );
-#else  // _LP64
-    uint *code;
-    int tmp_reg = $tmp$$reg;
-
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit2_22( cbuf, Assembler::branch_op, tmp_reg, Assembler::sethi_op2, (intptr_t) float_address );
-
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit3_simm10( cbuf, Assembler::ldst_op, $dst$$reg, Assembler::ldf_op3, tmp_reg, (intptr_t) float_address );
-#endif // _LP64
-  %}
-
-  enc_class LdImmD(immD src, regD dst, o7RegP tmp) %{    // Load Immediate
-    address double_address = MacroAssembler(&cbuf).double_constant($src$$constant);
-    RelocationHolder rspec = internal_word_Relocation::spec(double_address);
-#ifdef _LP64
-    Register   tmp_reg = reg_to_register_object($tmp$$reg);
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit_ptr(cbuf, (intptr_t)double_address, tmp_reg, /*ForceRelocatable=*/ true);
-    emit3_simm10( cbuf, Assembler::ldst_op, $dst$$reg, Assembler::lddf_op3, $tmp$$reg, 0 );
-#else // _LP64
-    uint *code;
-    int tmp_reg = $tmp$$reg;
-
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit2_22( cbuf, Assembler::branch_op, tmp_reg, Assembler::sethi_op2, (intptr_t) double_address );
-
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit3_simm10( cbuf, Assembler::ldst_op, $dst$$reg, Assembler::lddf_op3, tmp_reg, (intptr_t) double_address );
-#endif // _LP64
-  %}
-
   enc_class LdReplImmI(immI src, regD dst, o7RegP tmp, int count, int width) %{
     // Load a constant replicated "count" times with width "width"
     int bit_width = $width$$constant * 8;
@@ -2840,28 +2788,15 @@
         val |= elt_val;
     }
     jdouble dval = *(jdouble*)&val; // coerce to double type
-    address double_address = MacroAssembler(&cbuf).double_constant(dval);
+    MacroAssembler _masm(&cbuf);
+    address double_address = __ double_constant(dval);
     RelocationHolder rspec = internal_word_Relocation::spec(double_address);
-#ifdef _LP64
-    Register   tmp_reg = reg_to_register_object($tmp$$reg);
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit_ptr(cbuf, (intptr_t)double_address, tmp_reg, /*ForceRelocatable=*/ true);
-    emit3_simm10( cbuf, Assembler::ldst_op, $dst$$reg, Assembler::lddf_op3, $tmp$$reg, 0 );
-#else // _LP64
-    uint *code;
-    int tmp_reg = $tmp$$reg;
-
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit2_22( cbuf, Assembler::branch_op, tmp_reg, Assembler::sethi_op2, (intptr_t) double_address );
-
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit3_simm10( cbuf, Assembler::ldst_op, $dst$$reg, Assembler::lddf_op3, tmp_reg, (intptr_t) double_address );
-#endif // _LP64
-  %}
-
-
-  enc_class ShouldNotEncodeThis ( ) %{
-    ShouldNotCallThis();
+    AddressLiteral addrlit(double_address, rspec);
+
+    __ sethi(addrlit, $tmp$$Register);
+    // XXX This is a quick fix for 6833573.
+    //__ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), $dst$$FloatRegister, rspec);
+    __ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), as_DoubleFloatRegister($dst$$reg), rspec);
   %}
 
   // Compiler ensures base is doubleword aligned and cnt is count of doublewords
@@ -2901,19 +2836,19 @@
     int  count_offset = java_lang_String:: count_offset_in_bytes();
 
     // load str1 (jchar*) base address into tmp1_reg
-    __ load_heap_oop(Address(str1_reg, 0,  value_offset), tmp1_reg);
-    __ ld(Address(str1_reg, 0, offset_offset), result_reg);
+    __ load_heap_oop(str1_reg, value_offset, tmp1_reg);
+    __ ld(str1_reg, offset_offset, result_reg);
     __ add(tmp1_reg, arrayOopDesc::base_offset_in_bytes(T_CHAR), tmp1_reg);
-    __    ld(Address(str1_reg, 0, count_offset), str1_reg); // hoisted
+    __   ld(str1_reg, count_offset, str1_reg); // hoisted
     __ sll(result_reg, exact_log2(sizeof(jchar)), result_reg);
-    __    load_heap_oop(Address(str2_reg, 0,  value_offset), tmp2_reg); // hoisted
+    __   load_heap_oop(str2_reg, value_offset, tmp2_reg); // hoisted
     __ add(result_reg, tmp1_reg, tmp1_reg);
 
     // load str2 (jchar*) base address into tmp2_reg
-    // __ ld_ptr(Address(str2_reg, 0,  value_offset), tmp2_reg); // hoisted
-    __ ld(Address(str2_reg, 0, offset_offset), result_reg);
+    // __ ld_ptr(str2_reg, value_offset, tmp2_reg); // hoisted
+    __ ld(str2_reg, offset_offset, result_reg);
     __ add(tmp2_reg, arrayOopDesc::base_offset_in_bytes(T_CHAR), tmp2_reg);
-    __    ld(Address(str2_reg, 0, count_offset), str2_reg); // hoisted
+    __   ld(str2_reg, count_offset, str2_reg); // hoisted
     __ sll(result_reg, exact_log2(sizeof(jchar)), result_reg);
     __   subcc(str1_reg, str2_reg, O7); // hoisted
     __ add(result_reg, tmp2_reg, tmp2_reg);
@@ -2922,8 +2857,8 @@
     // difference of the string lengths (stack)
 
     // discard string base pointers, after loading up the lengths
-    // __ ld(Address(str1_reg, 0, count_offset), str1_reg); // hoisted
-    // __ ld(Address(str2_reg, 0, count_offset), str2_reg); // hoisted
+    // __ ld(str1_reg, count_offset, str1_reg); // hoisted
+    // __ ld(str2_reg, count_offset, str2_reg); // hoisted
 
     // See if the lengths are different, and calculate min in str1_reg.
     // Stash diff in O7 in case we need it for a tie-breaker.
@@ -3020,19 +2955,19 @@
     int  count_offset = java_lang_String:: count_offset_in_bytes();
 
     // load str1 (jchar*) base address into tmp1_reg
-    __ load_heap_oop(Address(str1_reg, 0,  value_offset), tmp1_reg);
-    __ ld(Address(str1_reg, 0, offset_offset), result_reg);
+    __ load_heap_oop(Address(str1_reg, value_offset), tmp1_reg);
+    __ ld(Address(str1_reg, offset_offset), result_reg);
     __ add(tmp1_reg, arrayOopDesc::base_offset_in_bytes(T_CHAR), tmp1_reg);
-    __    ld(Address(str1_reg, 0, count_offset), str1_reg); // hoisted
+    __    ld(Address(str1_reg, count_offset), str1_reg); // hoisted
     __ sll(result_reg, exact_log2(sizeof(jchar)), result_reg);
-    __    load_heap_oop(Address(str2_reg, 0,  value_offset), tmp2_reg); // hoisted
+    __    load_heap_oop(Address(str2_reg, value_offset), tmp2_reg); // hoisted
     __ add(result_reg, tmp1_reg, tmp1_reg);
 
     // load str2 (jchar*) base address into tmp2_reg
-    // __ ld_ptr(Address(str2_reg, 0,  value_offset), tmp2_reg); // hoisted
-    __ ld(Address(str2_reg, 0, offset_offset), result_reg);
+    // __ ld_ptr(Address(str2_reg, value_offset), tmp2_reg); // hoisted
+    __ ld(Address(str2_reg, offset_offset), result_reg);
     __ add(tmp2_reg, arrayOopDesc::base_offset_in_bytes(T_CHAR), tmp2_reg);
-    __    ld(Address(str2_reg, 0, count_offset), str2_reg); // hoisted
+    __    ld(Address(str2_reg, count_offset), str2_reg); // hoisted
     __ sll(result_reg, exact_log2(sizeof(jchar)), result_reg);
     __   cmp(str1_reg, str2_reg); // hoisted
     __ add(result_reg, tmp2_reg, tmp2_reg);
@@ -3139,8 +3074,8 @@
     __ delayed()->mov(G0, result_reg);    // not equal
 
     //load the lengths of arrays
-    __ ld(Address(ary1_reg, 0, length_offset), tmp1_reg);
-    __ ld(Address(ary2_reg, 0, length_offset), tmp2_reg);
+    __ ld(Address(ary1_reg, length_offset), tmp1_reg);
+    __ ld(Address(ary2_reg, length_offset), tmp2_reg);
 
     // return false if the two arrays are not equal length
     __ cmp(tmp1_reg, tmp2_reg);
@@ -3202,19 +3137,20 @@
   enc_class enc_rethrow() %{
     cbuf.set_inst_mark();
     Register temp_reg = G3;
-    Address rethrow_stub(temp_reg, OptoRuntime::rethrow_stub());
+    AddressLiteral rethrow_stub(OptoRuntime::rethrow_stub());
     assert(temp_reg != reg_to_register_object(R_I0_num), "temp must not break oop_reg");
     MacroAssembler _masm(&cbuf);
 #ifdef ASSERT
     __ save_frame(0);
-    Address last_rethrow_addr(L1, (address)&last_rethrow);
-    __ sethi(last_rethrow_addr);
+    AddressLiteral last_rethrow_addrlit(&last_rethrow);
+    __ sethi(last_rethrow_addrlit, L1);
+    Address addr(L1, last_rethrow_addrlit.low10());
     __ get_pc(L2);
     __ inc(L2, 3 * BytesPerInstWord);  // skip this & 2 more insns to point at jump_to
-    __ st_ptr(L2, last_rethrow_addr);
+    __ st_ptr(L2, addr);
     __ restore();
 #endif
-    __ JUMP(rethrow_stub, 0); // sethi;jmp
+    __ JUMP(rethrow_stub, temp_reg, 0); // sethi;jmp
     __ delayed()->nop();
   %}
 
@@ -5493,8 +5429,9 @@
 
   size(4);
   format %{ "LDSB   $mem,$dst\t! byte" %}
-  opcode(Assembler::ldsb_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ ldsb($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mask_mem);
 %}
 
@@ -5505,8 +5442,9 @@
 
   size(4);
   format %{ "LDSB   $mem,$dst\t! byte -> long" %}
-  opcode(Assembler::ldsb_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ ldsb($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mask_mem);
 %}
 
@@ -5517,8 +5455,9 @@
 
   size(4);
   format %{ "LDUB   $mem,$dst\t! ubyte" %}
-  opcode(Assembler::ldub_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ ldub($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mask_mem);
 %}
 
@@ -5529,8 +5468,9 @@
 
   size(4);
   format %{ "LDUB   $mem,$dst\t! ubyte -> long" %}
-  opcode(Assembler::ldub_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ ldub($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mask_mem);
 %}
 
@@ -5541,8 +5481,9 @@
 
   size(4);
   format %{ "LDSH   $mem,$dst\t! short" %}
-  opcode(Assembler::ldsh_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ ldsh($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mask_mem);
 %}
 
@@ -5553,8 +5494,9 @@
 
   size(4);
   format %{ "LDSH   $mem,$dst\t! short -> long" %}
-  opcode(Assembler::ldsh_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ ldsh($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mask_mem);
 %}
 
@@ -5565,8 +5507,9 @@
 
   size(4);
   format %{ "LDUH   $mem,$dst\t! ushort/char" %}
-  opcode(Assembler::lduh_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ lduh($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mask_mem);
 %}
 
@@ -5577,8 +5520,9 @@
 
   size(4);
   format %{ "LDUH   $mem,$dst\t! ushort/char -> long" %}
-  opcode(Assembler::lduh_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ lduh($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mask_mem);
 %}
 
@@ -5589,8 +5533,9 @@
 
   size(4);
   format %{ "LDUW   $mem,$dst\t! int" %}
-  opcode(Assembler::lduw_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ lduw($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mem);
 %}
 
@@ -5601,8 +5546,9 @@
 
   size(4);
   format %{ "LDSW   $mem,$dst\t! int -> long" %}
-  opcode(Assembler::ldsw_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ ldsw($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mem);
 %}
 
@@ -5613,8 +5559,9 @@
 
   size(4);
   format %{ "LDUW   $mem,$dst\t! uint -> long" %}
-  opcode(Assembler::lduw_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ lduw($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mem);
 %}
 
@@ -5625,8 +5572,9 @@
 
   size(4);
   format %{ "LDX    $mem,$dst\t! long" %}
-  opcode(Assembler::ldx_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ ldx($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mem);
 %}
 
@@ -5721,31 +5669,29 @@
 
 #ifndef _LP64
   format %{ "LDUW   $mem,$dst\t! ptr" %}
-  opcode(Assembler::lduw_op3, 0, REGP_OP);
+  ins_encode %{
+    __ lduw($mem$$Address, $dst$$Register);
+  %}
 #else
   format %{ "LDX    $mem,$dst\t! ptr" %}
-  opcode(Assembler::ldx_op3, 0, REGP_OP);
+  ins_encode %{
+    __ ldx($mem$$Address, $dst$$Register);
+  %}
 #endif
-  ins_encode( form3_mem_reg( mem, dst ) );
   ins_pipe(iload_mem);
 %}
 
 // Load Compressed Pointer
 instruct loadN(iRegN dst, memory mem) %{
-   match(Set dst (LoadN mem));
-   ins_cost(MEMORY_REF_COST);
-   size(4);
-
-   format %{ "LDUW   $mem,$dst\t! compressed ptr" %}
-   ins_encode %{
-     Register index = $mem$$index$$Register;
-     if (index != G0) {
-       __ lduw($mem$$base$$Register, index, $dst$$Register);
-     } else {
-       __ lduw($mem$$base$$Register, $mem$$disp, $dst$$Register);
-     }
-   %}
-   ins_pipe(iload_mem);
+  match(Set dst (LoadN mem));
+  ins_cost(MEMORY_REF_COST);
+  size(4);
+
+  format %{ "LDUW   $mem,$dst\t! compressed ptr" %}
+  ins_encode %{
+    __ lduw($mem$$Address, $dst$$Register);
+  %}
+  ins_pipe(iload_mem);
 %}
 
 // Load Klass Pointer
@@ -5756,12 +5702,15 @@
 
 #ifndef _LP64
   format %{ "LDUW   $mem,$dst\t! klass ptr" %}
-  opcode(Assembler::lduw_op3, 0, REGP_OP);
+  ins_encode %{
+    __ lduw($mem$$Address, $dst$$Register);
+  %}
 #else
   format %{ "LDX    $mem,$dst\t! klass ptr" %}
-  opcode(Assembler::ldx_op3, 0, REGP_OP);
+  ins_encode %{
+    __ ldx($mem$$Address, $dst$$Register);
+  %}
 #endif
-  ins_encode( form3_mem_reg( mem, dst ) );
   ins_pipe(iload_mem);
 %}
 
@@ -5772,16 +5721,8 @@
   size(4);
 
   format %{ "LDUW   $mem,$dst\t! compressed klass ptr" %}
-
   ins_encode %{
-     Register base = as_Register($mem$$base);
-     Register index = as_Register($mem$$index);
-     Register dst = $dst$$Register;
-     if (index != G0) {
-       __ lduw(base, index, dst);
-     } else {
-       __ lduw(base, $mem$$disp, dst);
-     }
+    __ lduw($mem$$Address, $dst$$Register);
   %}
   ins_pipe(iload_mem);
 %}
@@ -5867,8 +5808,8 @@
   ins_cost(DEFAULT_COST);
   format %{ "SET    $src,$dst\t!ptr" %}
   ins_encode %{
-    Address polling_page(reg_to_register_object($dst$$reg), (address)os::get_polling_page());
-    __ sethi(polling_page, false );
+    AddressLiteral polling_page(os::get_polling_page());
+    __ sethi(polling_page, reg_to_register_object($dst$$reg));
   %}
   ins_pipe(loadConP_poll);
 %}
@@ -5927,14 +5868,21 @@
   effect(KILL tmp);
 
 #ifdef _LP64
-  size(36);
+  size(8*4);
 #else
-  size(8);
+  size(2*4);
 #endif
 
   format %{ "SETHI  hi(&$src),$tmp\t!get float $src from table\n\t"
             "LDF    [$tmp+lo(&$src)],$dst" %}
-  ins_encode( LdImmF(src, dst, tmp) );
+  ins_encode %{
+    address float_address = __ float_constant($src$$constant);
+    RelocationHolder rspec = internal_word_Relocation::spec(float_address);
+    AddressLiteral addrlit(float_address, rspec);
+
+    __ sethi(addrlit, $tmp$$Register);
+    __ ldf(FloatRegisterImpl::S, $tmp$$Register, addrlit.low10(), $dst$$FloatRegister, rspec);
+  %}
   ins_pipe(loadConFD);
 %}
 
@@ -5943,14 +5891,23 @@
   effect(KILL tmp);
 
 #ifdef _LP64
-  size(36);
+  size(8*4);
 #else
-  size(8);
+  size(2*4);
 #endif
 
   format %{ "SETHI  hi(&$src),$tmp\t!get double $src from table\n\t"
             "LDDF   [$tmp+lo(&$src)],$dst" %}
-  ins_encode( LdImmD(src, dst, tmp) );
+  ins_encode %{
+    address double_address = __ double_constant($src$$constant);
+    RelocationHolder rspec = internal_word_Relocation::spec(double_address);
+    AddressLiteral addrlit(double_address, rspec);
+
+    __ sethi(addrlit, $tmp$$Register);
+    // XXX This is a quick fix for 6833573.
+    //__ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), $dst$$FloatRegister, rspec);
+    __ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), as_DoubleFloatRegister($dst$$reg), rspec);
+  %}
   ins_pipe(loadConFD);
 %}
 
--- a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -68,16 +68,9 @@
 #ifdef PRODUCT
 #define inc_counter_np(a,b,c) (0)
 #else
-  void inc_counter_np_(int& counter, Register t1, Register t2) {
-    Address counter_addr(t2, (address) &counter);
-    __ sethi(counter_addr);
-    __ ld(counter_addr, t1);
-    __ inc(t1);
-    __ st(t1, counter_addr);
-  }
 #define inc_counter_np(counter, t1, t2) \
   BLOCK_COMMENT("inc_counter " #counter); \
-  inc_counter_np_(counter, t1, t2);
+  __ inc_counter(&counter, t1, t2);
 #endif
 
   //----------------------------------------------------------------------------------------------------
@@ -325,9 +318,9 @@
     __ verify_thread();
 
     const Register& temp_reg = Gtemp;
-    Address pending_exception_addr    (G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
-    Address exception_file_offset_addr(G2_thread, 0, in_bytes(Thread::exception_file_offset   ()));
-    Address exception_line_offset_addr(G2_thread, 0, in_bytes(Thread::exception_line_offset   ()));
+    Address pending_exception_addr    (G2_thread, Thread::pending_exception_offset());
+    Address exception_file_offset_addr(G2_thread, Thread::exception_file_offset   ());
+    Address exception_line_offset_addr(G2_thread, Thread::exception_line_offset   ());
 
     // set pending exception
     __ verify_oop(Oexception);
@@ -340,8 +333,8 @@
     // complete return to VM
     assert(StubRoutines::_call_stub_return_address != NULL, "must have been generated before");
 
-    Address stub_ret(temp_reg, StubRoutines::_call_stub_return_address);
-    __ jump_to(stub_ret);
+    AddressLiteral stub_ret(StubRoutines::_call_stub_return_address);
+    __ jump_to(stub_ret, temp_reg);
     __ delayed()->nop();
 
     return start;
@@ -366,7 +359,7 @@
 
     const Register& handler_reg = Gtemp;
 
-    Address exception_addr (G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
+    Address exception_addr(G2_thread, Thread::pending_exception_offset());
 
 #ifdef ASSERT
     // make sure that this code is only executed if there is a pending exception
@@ -456,8 +449,7 @@
     int frame_complete = __ offset();
 
     if (restore_saved_exception_pc) {
-      Address saved_exception_pc(G2_thread, 0, in_bytes(JavaThread::saved_exception_pc_offset()));
-      __ ld_ptr(saved_exception_pc, I7);
+      __ ld_ptr(G2_thread, JavaThread::saved_exception_pc_offset(), I7);
       __ sub(I7, frame::pc_return_offset, I7);
     }
 
@@ -481,7 +473,7 @@
 #ifdef ASSERT
     Label L;
 
-    Address exception_addr(G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
+    Address exception_addr(G2_thread, Thread::pending_exception_offset());
     Register scratch_reg = Gtemp;
     __ ld_ptr(exception_addr, scratch_reg);
     __ br_notnull(scratch_reg, false, Assembler::pt, L);
@@ -835,7 +827,7 @@
     address start = __ pc();
 
     const int preserve_register_words = (64 * 2);
-    Address preserve_addr(FP, 0, (-preserve_register_words * wordSize) + STACK_BIAS);
+    Address preserve_addr(FP, (-preserve_register_words * wordSize) + STACK_BIAS);
 
     Register Lthread = L7_thread_cache;
     int i;
@@ -1106,21 +1098,19 @@
           __ srl_ptr(addr, CardTableModRefBS::card_shift, addr);
           __ srl_ptr(count, CardTableModRefBS::card_shift, count);
           __ sub(count, addr, count);
-          Address rs(tmp, (address)ct->byte_map_base);
-          __ load_address(rs);
+          AddressLiteral rs(ct->byte_map_base);
+          __ set(rs, tmp);
         __ BIND(L_loop);
-          __ stb(G0, rs.base(), addr);
+          __ stb(G0, tmp, addr);
           __ subcc(count, 1, count);
           __ brx(Assembler::greaterEqual, false, Assembler::pt, L_loop);
           __ delayed()->add(addr, 1, addr);
-
-          }
+        }
         break;
       case BarrierSet::ModRef:
         break;
-      default      :
+      default:
         ShouldNotReachHere();
-
     }
   }
 
--- a/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -87,8 +87,8 @@
   }
   // throw exception
   assert(Interpreter::throw_exception_entry() != NULL, "generate it first");
-  Address thrower(G3_scratch, Interpreter::throw_exception_entry());
-  __ jump_to (thrower);
+  AddressLiteral thrower(Interpreter::throw_exception_entry());
+  __ jump_to(thrower, G3_scratch);
   __ delayed()->nop();
   return entry;
 }
@@ -150,7 +150,8 @@
 }
 
 
-address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step) {
+address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, bool unbox) {
+  assert(!unbox, "NYI");//6815692//
   address compiled_entry = __ pc();
   Label cont;
 
@@ -186,8 +187,8 @@
   const Register cache = G3_scratch;
   const Register size  = G1_scratch;
   __ get_cache_and_index_at_bcp(cache, G1_scratch, 1);
-  __ ld_ptr(Address(cache, 0, in_bytes(constantPoolCacheOopDesc::base_offset()) +
-                    in_bytes(ConstantPoolCacheEntry::flags_offset())), size);
+  __ ld_ptr(cache, constantPoolCacheOopDesc::base_offset() +
+                   ConstantPoolCacheEntry::flags_offset(), size);
   __ and3(size, 0xFF, size);                   // argument size in words
   __ sll(size, Interpreter::logStackElementSize(), size); // each argument size in bytes
   __ add(Lesp, size, Lesp);                    // pop arguments
@@ -201,9 +202,8 @@
   address entry = __ pc();
   __ get_constant_pool_cache(LcpoolCache); // load LcpoolCache
   { Label L;
-    Address exception_addr (G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
-
-    __ ld_ptr(exception_addr, Gtemp);
+    Address exception_addr(G2_thread, Thread::pending_exception_offset());
+    __ ld_ptr(exception_addr, Gtemp);  // Load pending exception.
     __ tst(Gtemp);
     __ brx(Assembler::equal, false, Assembler::pt, L);
     __ delayed()->nop();
@@ -282,7 +282,7 @@
   // Update standard invocation counters
   __ increment_invocation_counter(O0, G3_scratch);
   if (ProfileInterpreter) {  // %%% Merge this into methodDataOop
-    Address interpreter_invocation_counter(Lmethod, 0, in_bytes(methodOopDesc::interpreter_invocation_counter_offset()));
+    Address interpreter_invocation_counter(Lmethod, methodOopDesc::interpreter_invocation_counter_offset());
     __ ld(interpreter_invocation_counter, G3_scratch);
     __ inc(G3_scratch);
     __ st(G3_scratch, interpreter_invocation_counter);
@@ -290,9 +290,9 @@
 
   if (ProfileInterpreter && profile_method != NULL) {
     // Test to see if we should create a method data oop
-    Address profile_limit(G3_scratch, (address)&InvocationCounter::InterpreterProfileLimit);
-    __ sethi(profile_limit);
-    __ ld(profile_limit, G3_scratch);
+    AddressLiteral profile_limit(&InvocationCounter::InterpreterProfileLimit);
+    __ sethi(profile_limit, G3_scratch);
+    __ ld(G3_scratch, profile_limit.low10(), G3_scratch);
     __ cmp(O0, G3_scratch);
     __ br(Assembler::lessUnsigned, false, Assembler::pn, *profile_method_continue);
     __ delayed()->nop();
@@ -301,9 +301,9 @@
     __ test_method_data_pointer(*profile_method);
   }
 
-  Address invocation_limit(G3_scratch, (address)&InvocationCounter::InterpreterInvocationLimit);
-  __ sethi(invocation_limit);
-  __ ld(invocation_limit, G3_scratch);
+  AddressLiteral invocation_limit(&InvocationCounter::InterpreterInvocationLimit);
+  __ sethi(invocation_limit, G3_scratch);
+  __ ld(G3_scratch, invocation_limit.low10(), G3_scratch);
   __ cmp(O0, G3_scratch);
   __ br(Assembler::greaterEqualUnsigned, false, Assembler::pn, *overflow);
   __ delayed()->nop();
@@ -314,8 +314,7 @@
 // ebx - methodOop
 //
 void InterpreterGenerator::lock_method(void) {
-  const Address access_flags      (Lmethod, 0, in_bytes(methodOopDesc::access_flags_offset()));
-  __ ld(access_flags, O0);
+  __ ld(Lmethod, in_bytes(methodOopDesc::access_flags_offset()), O0);  // Load access flags.
 
 #ifdef ASSERT
  { Label ok;
@@ -359,8 +358,7 @@
                                                          Register Rscratch,
                                                          Register Rscratch2) {
   const int page_size = os::vm_page_size();
-  Address saved_exception_pc(G2_thread, 0,
-                             in_bytes(JavaThread::saved_exception_pc_offset()));
+  Address saved_exception_pc(G2_thread, JavaThread::saved_exception_pc_offset());
   Label after_frame_check;
 
   assert_different_registers(Rframe_size, Rscratch, Rscratch2);
@@ -372,7 +370,7 @@
   __ delayed()->nop();
 
   // get the stack base, and in debug, verify it is non-zero
-  __ ld_ptr( G2_thread, in_bytes(Thread::stack_base_offset()), Rscratch );
+  __ ld_ptr( G2_thread, Thread::stack_base_offset(), Rscratch );
 #ifdef ASSERT
   Label base_not_zero;
   __ cmp( Rscratch, G0 );
@@ -384,7 +382,7 @@
 
   // get the stack size, and in debug, verify it is non-zero
   assert( sizeof(size_t) == sizeof(intptr_t), "wrong load size" );
-  __ ld_ptr( G2_thread, in_bytes(Thread::stack_size_offset()), Rscratch2 );
+  __ ld_ptr( G2_thread, Thread::stack_size_offset(), Rscratch2 );
 #ifdef ASSERT
   Label size_not_zero;
   __ cmp( Rscratch2, G0 );
@@ -459,9 +457,9 @@
   // (gri - 2/25/2000)
 
 
-  const Address size_of_parameters(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset()));
-  const Address size_of_locals    (G5_method, 0, in_bytes(methodOopDesc::size_of_locals_offset()));
-  const Address max_stack         (G5_method, 0, in_bytes(methodOopDesc::max_stack_offset()));
+  const Address size_of_parameters(G5_method, methodOopDesc::size_of_parameters_offset());
+  const Address size_of_locals    (G5_method, methodOopDesc::size_of_locals_offset());
+  const Address max_stack         (G5_method, methodOopDesc::max_stack_offset());
   int rounded_vm_local_words = round_to( frame::interpreter_frame_vm_local_words, WordsPerLong );
 
   const int extra_space =
@@ -538,8 +536,8 @@
   if (native_call) {
     __ mov(G0, Lbcp);
   } else {
-    __ ld_ptr(Address(G5_method, 0, in_bytes(methodOopDesc::const_offset())), Lbcp );
-    __ add(Address(Lbcp, 0, in_bytes(constMethodOopDesc::codes_offset())), Lbcp );
+    __ ld_ptr(G5_method, methodOopDesc::const_offset(), Lbcp);
+    __ add(Lbcp, in_bytes(constMethodOopDesc::codes_offset()), Lbcp);
   }
   __ mov( G5_method, Lmethod);                 // set Lmethod
   __ get_constant_pool_cache( LcpoolCache );   // set LcpoolCache
@@ -577,8 +575,8 @@
   // do nothing for empty methods (do not even increment invocation counter)
   if ( UseFastEmptyMethods) {
     // If we need a safepoint check, generate full interpreter entry.
-    Address sync_state(G3_scratch, SafepointSynchronize::address_of_state());
-    __ load_contents(sync_state, G3_scratch);
+    AddressLiteral sync_state(SafepointSynchronize::address_of_state());
+    __ set(sync_state, G3_scratch);
     __ cmp(G3_scratch, SafepointSynchronize::_not_synchronized);
     __ br(Assembler::notEqual, false, Assembler::pn, slow_path);
     __ delayed()->nop();
@@ -616,7 +614,7 @@
   if ( UseFastAccessorMethods && !UseCompressedOops ) {
     // Check if we need to reach a safepoint and generate full interpreter
     // frame if so.
-    Address sync_state(G3_scratch, SafepointSynchronize::address_of_state());
+    AddressLiteral sync_state(SafepointSynchronize::address_of_state());
     __ load_contents(sync_state, G3_scratch);
     __ cmp(G3_scratch, SafepointSynchronize::_not_synchronized);
     __ br(Assembler::notEqual, false, Assembler::pn, slow_path);
@@ -631,8 +629,8 @@
 
     // read first instruction word and extract bytecode @ 1 and index @ 2
     // get first 4 bytes of the bytecodes (big endian!)
-    __ ld_ptr(Address(G5_method, 0, in_bytes(methodOopDesc::const_offset())), G1_scratch);
-    __ ld(Address(G1_scratch, 0, in_bytes(constMethodOopDesc::codes_offset())), G1_scratch);
+    __ ld_ptr(G5_method, methodOopDesc::const_offset(), G1_scratch);
+    __ ld(G1_scratch, constMethodOopDesc::codes_offset(), G1_scratch);
 
     // move index @ 2 far left then to the right most two bytes.
     __ sll(G1_scratch, 2*BitsPerByte, G1_scratch);
@@ -640,7 +638,7 @@
                       ConstantPoolCacheEntry::size()) * BytesPerWord), G1_scratch);
 
     // get constant pool cache
-    __ ld_ptr(G5_method, in_bytes(methodOopDesc::constants_offset()), G3_scratch);
+    __ ld_ptr(G5_method, methodOopDesc::constants_offset(), G3_scratch);
     __ ld_ptr(G3_scratch, constantPoolOopDesc::cache_offset_in_bytes(), G3_scratch);
 
     // get specific constant pool cache entry
@@ -649,7 +647,7 @@
     // Check the constant Pool cache entry to see if it has been resolved.
     // If not, need the slow path.
     ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
-    __ ld_ptr(G3_scratch, in_bytes(cp_base_offset + ConstantPoolCacheEntry::indices_offset()), G1_scratch);
+    __ ld_ptr(G3_scratch, cp_base_offset + ConstantPoolCacheEntry::indices_offset(), G1_scratch);
     __ srl(G1_scratch, 2*BitsPerByte, G1_scratch);
     __ and3(G1_scratch, 0xFF, G1_scratch);
     __ cmp(G1_scratch, Bytecodes::_getfield);
@@ -657,8 +655,8 @@
     __ delayed()->nop();
 
     // Get the type and return field offset from the constant pool cache
-    __ ld_ptr(G3_scratch, in_bytes(cp_base_offset + ConstantPoolCacheEntry::flags_offset()), G1_scratch);
-    __ ld_ptr(G3_scratch, in_bytes(cp_base_offset + ConstantPoolCacheEntry::f2_offset()), G3_scratch);
+    __ ld_ptr(G3_scratch, cp_base_offset + ConstantPoolCacheEntry::flags_offset(), G1_scratch);
+    __ ld_ptr(G3_scratch, cp_base_offset + ConstantPoolCacheEntry::f2_offset(), G3_scratch);
 
     Label xreturn_path;
     // Need to differentiate between igetfield, agetfield, bgetfield etc.
@@ -717,7 +715,7 @@
   // make sure registers are different!
   assert_different_registers(G2_thread, G5_method, Gargs, Gtmp1, Gtmp2);
 
-  const Address Laccess_flags     (Lmethod, 0, in_bytes(methodOopDesc::access_flags_offset()));
+  const Address Laccess_flags(Lmethod, methodOopDesc::access_flags_offset());
 
   __ verify_oop(G5_method);
 
@@ -727,7 +725,7 @@
   // make sure method is native & not abstract
   // rethink these assertions - they can be simplified and shared (gri 2/25/2000)
 #ifdef ASSERT
-  __ ld(G5_method, in_bytes(methodOopDesc::access_flags_offset()), Gtmp1);
+  __ ld(G5_method, methodOopDesc::access_flags_offset(), Gtmp1);
   {
     Label L;
     __ btst(JVM_ACC_NATIVE, Gtmp1);
@@ -754,10 +752,10 @@
 
   // this slot will be set later, we initialize it to null here just in
   // case we get a GC before the actual value is stored later
-  __ st_ptr(G0, Address(FP, 0, (frame::interpreter_frame_oop_temp_offset*wordSize) + STACK_BIAS));
+  __ st_ptr(G0, FP, (frame::interpreter_frame_oop_temp_offset * wordSize) + STACK_BIAS);
 
-  const Address do_not_unlock_if_synchronized(G2_thread, 0,
-      in_bytes(JavaThread::do_not_unlock_if_synchronized_offset()));
+  const Address do_not_unlock_if_synchronized(G2_thread,
+    JavaThread::do_not_unlock_if_synchronized_offset());
   // Since at this point in the method invocation the exception handler
   // would try to exit the monitor of synchronized methods which hasn't
   // been entered yet, we set the thread local variable
@@ -824,12 +822,13 @@
 
   // get signature handler
   { Label L;
-    __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::signature_handler_offset())), G3_scratch);
+    Address signature_handler(Lmethod, methodOopDesc::signature_handler_offset());
+    __ ld_ptr(signature_handler, G3_scratch);
     __ tst(G3_scratch);
     __ brx(Assembler::notZero, false, Assembler::pt, L);
     __ delayed()->nop();
     __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::prepare_native_call), Lmethod);
-    __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::signature_handler_offset())), G3_scratch);
+    __ ld_ptr(signature_handler, G3_scratch);
     __ bind(L);
   }
 
@@ -842,10 +841,9 @@
   // Flush the method pointer to the register save area
   __ st_ptr(Lmethod, SP, (Lmethod->sp_offset_in_saved_window() * wordSize) + STACK_BIAS);
   __ mov(Llocals, O1);
+
   // calculate where the mirror handle body is allocated in the interpreter frame:
-
-  Address mirror(FP, 0, (frame::interpreter_frame_oop_temp_offset*wordSize) + STACK_BIAS);
-  __ add(mirror, O2);
+  __ add(FP, (frame::interpreter_frame_oop_temp_offset * wordSize) + STACK_BIAS, O2);
 
   // Calculate current frame size
   __ sub(SP, FP, O3);         // Calculate negative of current frame size
@@ -882,14 +880,13 @@
     __ ld(Laccess_flags, O0);
     __ btst(JVM_ACC_STATIC, O0);
     __ br( Assembler::zero, false, Assembler::pt, not_static);
-    __ delayed()->
-      // get native function entry point(O0 is a good temp until the very end)
-       ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::native_function_offset())), O0);
+    // get native function entry point(O0 is a good temp until the very end)
+    __ delayed()->ld_ptr(Lmethod, in_bytes(methodOopDesc::native_function_offset()), O0);
     // for static methods insert the mirror argument
     const int mirror_offset = klassOopDesc::klass_part_offset_in_bytes() + Klass::java_mirror_offset_in_bytes();
 
-    __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc:: constants_offset())), O1);
-    __ ld_ptr(Address(O1, 0, constantPoolOopDesc::pool_holder_offset_in_bytes()), O1);
+    __ ld_ptr(Lmethod, methodOopDesc:: constants_offset(), O1);
+    __ ld_ptr(O1, constantPoolOopDesc::pool_holder_offset_in_bytes(), O1);
     __ ld_ptr(O1, mirror_offset, O1);
 #ifdef ASSERT
     if (!PrintSignatureHandlers)  // do not dirty the output with this
@@ -944,15 +941,13 @@
   __ flush_windows();
 
   // mark windows as flushed
-  Address flags(G2_thread,
-                0,
-                in_bytes(JavaThread::frame_anchor_offset()) + in_bytes(JavaFrameAnchor::flags_offset()));
+  Address flags(G2_thread, JavaThread::frame_anchor_offset() + JavaFrameAnchor::flags_offset());
   __ set(JavaFrameAnchor::flushed, G3_scratch);
   __ st(G3_scratch, flags);
 
   // Transition from _thread_in_Java to _thread_in_native. We are already safepoint ready.
 
-  Address thread_state(G2_thread, 0, in_bytes(JavaThread::thread_state_offset()));
+  Address thread_state(G2_thread, JavaThread::thread_state_offset());
 #ifdef ASSERT
   { Label L;
     __ ld(thread_state, G3_scratch);
@@ -982,7 +977,7 @@
   // Block, if necessary, before resuming in _thread_in_Java state.
   // In order for GC to work, don't clear the last_Java_sp until after blocking.
   { Label no_block;
-    Address sync_state(G3_scratch, SafepointSynchronize::address_of_state());
+    AddressLiteral sync_state(SafepointSynchronize::address_of_state());
 
     // Switch thread to "native transition" state before reading the synchronization state.
     // This additional state is necessary because reading and testing the synchronization
@@ -1009,10 +1004,8 @@
     __ cmp(G3_scratch, SafepointSynchronize::_not_synchronized);
 
     Label L;
-    Address suspend_state(G2_thread, 0, in_bytes(JavaThread::suspend_flags_offset()));
     __ br(Assembler::notEqual, false, Assembler::pn, L);
-    __ delayed()->
-      ld(suspend_state, G3_scratch);
+    __ delayed()->ld(G2_thread, JavaThread::suspend_flags_offset(), G3_scratch);
     __ cmp(G3_scratch, 0);
     __ br(Assembler::equal, false, Assembler::pt, no_block);
     __ delayed()->nop();
@@ -1054,7 +1047,7 @@
   __ st(G3_scratch, thread_state);
 
   // reset handle block
-  __ ld_ptr(G2_thread, in_bytes(JavaThread::active_handles_offset()), G3_scratch);
+  __ ld_ptr(G2_thread, JavaThread::active_handles_offset(), G3_scratch);
   __ st_ptr(G0, G3_scratch, JNIHandleBlock::top_offset_in_bytes());
 
   // If we have an oop result store it where it will be safe for any further gc
@@ -1083,8 +1076,7 @@
 
   // handle exceptions (exception handling will handle unlocking!)
   { Label L;
-    Address exception_addr (G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
-
+    Address exception_addr(G2_thread, Thread::pending_exception_offset());
     __ ld_ptr(exception_addr, Gtemp);
     __ tst(Gtemp);
     __ brx(Assembler::equal, false, Assembler::pt, L);
@@ -1170,11 +1162,11 @@
   // make sure registers are different!
   assert_different_registers(G2_thread, G5_method, Gargs, Gtmp1, Gtmp2);
 
-  const Address size_of_parameters(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset()));
-  const Address size_of_locals    (G5_method, 0, in_bytes(methodOopDesc::size_of_locals_offset()));
+  const Address size_of_parameters(G5_method, methodOopDesc::size_of_parameters_offset());
+  const Address size_of_locals    (G5_method, methodOopDesc::size_of_locals_offset());
   // Seems like G5_method is live at the point this is used. So we could make this look consistent
   // and use in the asserts.
-  const Address access_flags      (Lmethod, 0, in_bytes(methodOopDesc::access_flags_offset()));
+  const Address access_flags      (Lmethod,   methodOopDesc::access_flags_offset());
 
   __ verify_oop(G5_method);
 
@@ -1184,7 +1176,7 @@
   // make sure method is not native & not abstract
   // rethink these assertions - they can be simplified and shared (gri 2/25/2000)
 #ifdef ASSERT
-  __ ld(G5_method, in_bytes(methodOopDesc::access_flags_offset()), Gtmp1);
+  __ ld(G5_method, methodOopDesc::access_flags_offset(), Gtmp1);
   {
     Label L;
     __ btst(JVM_ACC_NATIVE, Gtmp1);
@@ -1239,8 +1231,8 @@
   __ brx( Assembler::lessEqualUnsigned, true, Assembler::pt, clear_loop );
   __ delayed()->st_ptr( init_value, O2, 0 );
 
-  const Address do_not_unlock_if_synchronized(G2_thread, 0,
-        in_bytes(JavaThread::do_not_unlock_if_synchronized_offset()));
+  const Address do_not_unlock_if_synchronized(G2_thread,
+    JavaThread::do_not_unlock_if_synchronized_offset());
   // Since at this point in the method invocation the exception handler
   // would try to exit the monitor of synchronized methods which hasn't
   // been entered yet, we set the thread local variable
@@ -1716,7 +1708,7 @@
   //
 
   Interpreter::_remove_activation_preserving_args_entry = __ pc();
-  Address popframe_condition_addr (G2_thread, 0, in_bytes(JavaThread::popframe_condition_offset()));
+  Address popframe_condition_addr(G2_thread, JavaThread::popframe_condition_offset());
   // Set the popframe_processing bit in popframe_condition indicating that we are
   // currently handling popframe, so that call_VMs that may happen later do not trigger new
   // popframe handling cycles.
@@ -1758,7 +1750,7 @@
     __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, Deoptimization::popframe_preserve_args), G2_thread, Gtmp1, Gtmp2);
     // Inform deoptimization that it is responsible for restoring these arguments
     __ set(JavaThread::popframe_force_deopt_reexecution_bit, Gtmp1);
-    Address popframe_condition_addr(G2_thread, 0, in_bytes(JavaThread::popframe_condition_offset()));
+    Address popframe_condition_addr(G2_thread, JavaThread::popframe_condition_offset());
     __ st(Gtmp1, popframe_condition_addr);
 
     // Return from the current method
@@ -1807,7 +1799,7 @@
   __ verify_oop(Oexception);
 
     const int return_reg_adjustment = frame::pc_return_offset;
-  Address issuing_pc_addr(I7, 0, return_reg_adjustment);
+  Address issuing_pc_addr(I7, return_reg_adjustment);
 
   // We are done with this activation frame; find out where to go next.
   // The continuation point will be an exception handler, which expects
@@ -1853,8 +1845,8 @@
   __ empty_expression_stack();
   __ load_earlyret_value(state);
 
-  __ ld_ptr(Address(G2_thread, 0, in_bytes(JavaThread::jvmti_thread_state_offset())), G3_scratch);
-  Address cond_addr(G3_scratch, 0, in_bytes(JvmtiThreadState::earlyret_state_offset()));
+  __ ld_ptr(G2_thread, JavaThread::jvmti_thread_state_offset(), G3_scratch);
+  Address cond_addr(G3_scratch, JvmtiThreadState::earlyret_state_offset());
 
   // Clear the earlyret state
   __ stw(G0 /* JvmtiThreadState::earlyret_inactive */, cond_addr);
@@ -1921,43 +1913,33 @@
 // helpers for generate_and_dispatch
 
 void TemplateInterpreterGenerator::count_bytecode() {
-  Address c(G3_scratch, (address)&BytecodeCounter::_counter_value);
-  __ load_contents(c, G4_scratch);
-  __ inc(G4_scratch);
-  __ st(G4_scratch, c);
+  __ inc_counter(&BytecodeCounter::_counter_value, G3_scratch, G4_scratch);
 }
 
 
 void TemplateInterpreterGenerator::histogram_bytecode(Template* t) {
-  Address bucket( G3_scratch, (address) &BytecodeHistogram::_counters[t->bytecode()] );
-  __ load_contents(bucket, G4_scratch);
-  __ inc(G4_scratch);
-  __ st(G4_scratch, bucket);
+  __ inc_counter(&BytecodeHistogram::_counters[t->bytecode()], G3_scratch, G4_scratch);
 }
 
 
 void TemplateInterpreterGenerator::histogram_bytecode_pair(Template* t) {
-  address index_addr      = (address)&BytecodePairHistogram::_index;
-  Address index(G3_scratch, index_addr);
-
-  address counters_addr   = (address)&BytecodePairHistogram::_counters;
-  Address counters(G3_scratch, counters_addr);
+  AddressLiteral index   (&BytecodePairHistogram::_index);
+  AddressLiteral counters((address) &BytecodePairHistogram::_counters);
 
   // get index, shift out old bytecode, bring in new bytecode, and store it
   // _index = (_index >> log2_number_of_codes) |
   //          (bytecode << log2_number_of_codes);
 
-
-  __ load_contents( index,      G4_scratch );
+  __ load_contents(index, G4_scratch);
   __ srl( G4_scratch, BytecodePairHistogram::log2_number_of_codes, G4_scratch );
   __ set( ((int)t->bytecode()) << BytecodePairHistogram::log2_number_of_codes,  G3_scratch );
   __ or3( G3_scratch,  G4_scratch, G4_scratch );
-  __ store_contents( G4_scratch, index );
+  __ store_contents(G4_scratch, index, G3_scratch);
 
   // bump bucket contents
   // _counters[_index] ++;
 
-  __ load_address( counters );  // loads into G3_scratch
+  __ set(counters, G3_scratch);                       // loads into G3_scratch
   __ sll( G4_scratch, LogBytesPerWord, G4_scratch );  // Index is word address
   __ add (G3_scratch, G4_scratch, G3_scratch);        // Add in index
   __ ld (G3_scratch, 0, G4_scratch);
@@ -1978,9 +1960,9 @@
 
 
 void TemplateInterpreterGenerator::stop_interpreter_at() {
-  Address counter(G3_scratch , (address)&BytecodeCounter::_counter_value);
-  __ load_contents    (counter, G3_scratch );
-  Address stop_at(G4_scratch, (address)&StopInterpreterAt);
+  AddressLiteral counter(&BytecodeCounter::_counter_value);
+  __ load_contents(counter, G3_scratch);
+  AddressLiteral stop_at(&StopInterpreterAt);
   __ load_ptr_contents(stop_at, G4_scratch);
   __ cmp(G3_scratch, G4_scratch);
   __ breakpoint_trap(Assembler::equal);
--- a/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -131,7 +131,7 @@
 
 Address TemplateTable::at_bcp(int offset) {
   assert(_desc->uses_bcp(), "inconsistent uses_bcp information");
-  return Address( Lbcp, 0, offset);
+  return Address(Lbcp, offset);
 }
 
 
@@ -217,9 +217,9 @@
    case 1:  p = &one;   break;
    case 2:  p = &two;   break;
   }
-  Address a(G3_scratch, (address)p);
-  __ sethi(a);
-  __ ldf(FloatRegisterImpl::S, a, Ftos_f);
+  AddressLiteral a(p);
+  __ sethi(a, G3_scratch);
+  __ ldf(FloatRegisterImpl::S, G3_scratch, a.low10(), Ftos_f);
 }
 
 
@@ -232,9 +232,9 @@
    case 0:  p = &zero;  break;
    case 1:  p = &one;   break;
   }
-  Address a(G3_scratch, (address)p);
-  __ sethi(a);
-  __ ldf(FloatRegisterImpl::D, a, Ftos_d);
+  AddressLiteral a(p);
+  __ sethi(a, G3_scratch);
+  __ ldf(FloatRegisterImpl::D, G3_scratch, a.low10(), Ftos_d);
 }
 
 
@@ -1548,7 +1548,7 @@
   // non-JSR normal-branch stuff occurring below.
   if( is_jsr ) {
     // compute return address as bci in Otos_i
-    __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::const_offset())), G3_scratch);
+    __ ld_ptr(Lmethod, methodOopDesc::const_offset(), G3_scratch);
     __ sub(Lbcp, G3_scratch, G3_scratch);
     __ sub(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()) - (is_wide ? 5 : 3), Otos_i);
 
@@ -1665,7 +1665,7 @@
 
   __ profile_ret(vtos, Otos_i, G4_scratch);
 
-  __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::const_offset())), G3_scratch);
+  __ ld_ptr(Lmethod, methodOopDesc::const_offset(), G3_scratch);
   __ add(G3_scratch, Otos_i, G3_scratch);
   __ add(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()), Lbcp);
   __ dispatch_next(vtos);
@@ -1680,7 +1680,7 @@
 
   __ profile_ret(vtos, Otos_i, G4_scratch);
 
-  __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::const_offset())), G3_scratch);
+  __ ld_ptr(Lmethod, methodOopDesc::const_offset(), G3_scratch);
   __ add(G3_scratch, Otos_i, G3_scratch);
   __ add(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()), Lbcp);
   __ dispatch_next(vtos);
@@ -1968,8 +1968,8 @@
   Label resolved;
 
   __ get_cache_and_index_at_bcp(Rcache, index, 1);
-  __ ld_ptr(Address(Rcache, 0, in_bytes(constantPoolCacheOopDesc::base_offset() +
-                                        ConstantPoolCacheEntry::indices_offset())), Lbyte_code);
+  __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() +
+                    ConstantPoolCacheEntry::indices_offset(), Lbyte_code);
 
   __ srl(  Lbyte_code, shift_count, Lbyte_code );
   __ and3( Lbyte_code,        0xFF, Lbyte_code );
@@ -2029,11 +2029,11 @@
     resolve_cache_and_index(byte_no, Rcache, Rscratch);
   }
 
-  __ ld_ptr(Address(Rcache, 0, method_offset), Rmethod);
+  __ ld_ptr(Rcache, method_offset, Rmethod);
   if (Ritable_index != noreg) {
-    __ ld_ptr(Address(Rcache, 0, index_offset), Ritable_index);
+    __ ld_ptr(Rcache, index_offset, Ritable_index);
   }
-  __ ld_ptr(Address(Rcache, 0, flags_offset),  Rflags);
+  __ ld_ptr(Rcache, flags_offset, Rflags);
 }
 
 // The Rcache register must be set before call
@@ -2047,13 +2047,10 @@
 
   ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
 
-  __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset +
-                             ConstantPoolCacheEntry::flags_offset())), Rflags);
-  __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset +
-                             ConstantPoolCacheEntry::f2_offset())), Roffset);
+  __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::flags_offset(), Rflags);
+  __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::f2_offset(), Roffset);
   if (is_static) {
-    __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset +
-                             ConstantPoolCacheEntry::f1_offset())), Robj);
+    __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::f1_offset(), Robj);
   }
 }
 
@@ -2070,9 +2067,7 @@
     // the time to call into the VM.
     Label Label1;
     assert_different_registers(Rcache, index, G1_scratch);
-    Address get_field_access_count_addr(G1_scratch,
-                                        (address)JvmtiExport::get_field_access_count_addr(),
-                                        relocInfo::none);
+    AddressLiteral get_field_access_count_addr(JvmtiExport::get_field_access_count_addr());
     __ load_contents(get_field_access_count_addr, G1_scratch);
     __ tst(G1_scratch);
     __ br(Assembler::zero, false, Assembler::pt, Label1);
@@ -2293,7 +2288,7 @@
   __ get_cache_and_index_at_bcp(Rcache, index, 1);
   jvmti_post_field_access(Rcache, index, /*is_static*/false, /*has_tos*/true);
 
-  __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset + ConstantPoolCacheEntry::f2_offset())), Roffset);
+  __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::f2_offset(), Roffset);
 
   __ null_check(Otos_i);
   __ verify_oop(Otos_i);
@@ -2304,7 +2299,7 @@
     Assembler::Membar_mask_bits(Assembler::LoadLoad | Assembler::LoadStore);
   if (__ membar_has_effect(membar_bits)) {
     // Get volatile flag
-    __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset + ConstantPoolCacheEntry::f2_offset())), Rflags);
+    __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::f2_offset(), Rflags);
     __ set((1 << ConstantPoolCacheEntry::volatileField), Lscratch);
   }
 
@@ -2355,7 +2350,7 @@
     // Check to see if a field modification watch has been set before we take
     // the time to call into the VM.
     Label done;
-    Address get_field_modification_count_addr(G4_scratch, (address)JvmtiExport::get_field_modification_count_addr(), relocInfo::none);
+    AddressLiteral get_field_modification_count_addr(JvmtiExport::get_field_modification_count_addr());
     __ load_contents(get_field_modification_count_addr, G4_scratch);
     __ tst(G4_scratch);
     __ br(Assembler::zero, false, Assembler::pt, done);
@@ -2408,9 +2403,7 @@
     // the time to call into the VM.
     Label Label1;
     assert_different_registers(Rcache, index, G1_scratch);
-    Address get_field_modification_count_addr(G1_scratch,
-                                              (address)JvmtiExport::get_field_modification_count_addr(),
-                                              relocInfo::none);
+    AddressLiteral get_field_modification_count_addr(JvmtiExport::get_field_modification_count_addr());
     __ load_contents(get_field_modification_count_addr, G1_scratch);
     __ tst(G1_scratch);
     __ br(Assembler::zero, false, Assembler::pt, Label1);
@@ -2433,7 +2426,7 @@
       // the type to determine where the object is.
 
       Label two_word, valsizeknown;
-      __ ld_ptr(Address(G1_scratch, 0, in_bytes(cp_base_offset + ConstantPoolCacheEntry::flags_offset())), Rflags);
+      __ ld_ptr(G1_scratch, cp_base_offset + ConstantPoolCacheEntry::flags_offset(), Rflags);
       __ mov(Lesp, G4_scratch);
       __ srl(Rflags, ConstantPoolCacheEntry::tosBits, Rflags);
       // Make sure we don't need to mask Rflags for tosBits after the above shift
@@ -2689,8 +2682,7 @@
 
   Label notVolatile, checkVolatile, exit;
   if (__ membar_has_effect(read_bits) || __ membar_has_effect(write_bits)) {
-    __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset +
-                             ConstantPoolCacheEntry::flags_offset())), Rflags);
+    __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::flags_offset(), Rflags);
     __ set((1 << ConstantPoolCacheEntry::volatileField), Lscratch);
     __ and3(Rflags, Lscratch, Lscratch);
     if (__ membar_has_effect(read_bits)) {
@@ -2702,8 +2694,7 @@
     }
   }
 
-  __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset +
-                             ConstantPoolCacheEntry::f2_offset())), Roffset);
+  __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::f2_offset(), Roffset);
   pop_and_check_object(Rclass);
 
   switch (bytecode()) {
@@ -2755,7 +2746,7 @@
 
   // access constant pool cache  (is resolved)
   __ get_cache_and_index_at_bcp(Rcache, G4_scratch, 2);
-  __ ld_ptr(Address(Rcache, 0, in_bytes(constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f2_offset())), Roffset);
+  __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f2_offset(), Roffset);
   __ add(Lbcp, 1, Lbcp);       // needed to report exception at the correct bcp
 
   __ verify_oop(Rreceiver);
@@ -2775,7 +2766,7 @@
   if (__ membar_has_effect(membar_bits)) {
 
     // Get is_volatile value in Rflags and check if membar is needed
-    __ ld_ptr(Address(Rcache, 0, in_bytes(constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::flags_offset())), Rflags);
+    __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::flags_offset(), Rflags);
 
     // Test volatile
     Label notVolatile;
@@ -2853,8 +2844,8 @@
   __ verify_oop(O0);
 
   // get return address
-  Address table(Rtemp, (address)Interpreter::return_3_addrs_by_index_table());
-  __ load_address(table);
+  AddressLiteral table(Interpreter::return_3_addrs_by_index_table());
+  __ set(table, Rtemp);
   __ srl(Rret, ConstantPoolCacheEntry::tosBits, Rret);          // get return type
   // Make sure we don't need to mask Rret for tosBits after the above shift
   ConstantPoolCacheEntry::verify_tosBits();
@@ -2886,7 +2877,7 @@
   __ verify_oop(G5_method);
 
   // Load receiver from stack slot
-  __ lduh(Address(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset())), G4_scratch);
+  __ lduh(G5_method, in_bytes(methodOopDesc::size_of_parameters_offset()), G4_scratch);
   __ load_receiver(G4_scratch, O0);
 
   // receiver NULL check
@@ -2895,8 +2886,8 @@
   __ profile_final_call(O4);
 
   // get return address
-  Address table(Rtemp, (address)Interpreter::return_3_addrs_by_index_table());
-  __ load_address(table);
+  AddressLiteral table(Interpreter::return_3_addrs_by_index_table());
+  __ set(table, Rtemp);
   __ srl(Rret, ConstantPoolCacheEntry::tosBits, Rret);          // get return type
   // Make sure we don't need to mask Rret for tosBits after the above shift
   ConstantPoolCacheEntry::verify_tosBits();
@@ -2920,7 +2911,7 @@
 
   __ verify_oop(G5_method);
 
-  __ lduh(Address(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset())), G4_scratch);
+  __ lduh(G5_method, in_bytes(methodOopDesc::size_of_parameters_offset()), G4_scratch);
   __ load_receiver(G4_scratch, O0);
 
   // receiver NULL check
@@ -2929,8 +2920,8 @@
   __ profile_call(O4);
 
   // get return address
-  Address table(Rtemp, (address)Interpreter::return_3_addrs_by_index_table());
-  __ load_address(table);
+  AddressLiteral table(Interpreter::return_3_addrs_by_index_table());
+  __ set(table, Rtemp);
   __ srl(Rret, ConstantPoolCacheEntry::tosBits, Rret);          // get return type
   // Make sure we don't need to mask Rret for tosBits after the above shift
   ConstantPoolCacheEntry::verify_tosBits();
@@ -2956,8 +2947,8 @@
   __ profile_call(O4);
 
   // get return address
-  Address table(Rtemp, (address)Interpreter::return_3_addrs_by_index_table());
-  __ load_address(table);
+  AddressLiteral table(Interpreter::return_3_addrs_by_index_table());
+  __ set(table, Rtemp);
   __ srl(Rret, ConstantPoolCacheEntry::tosBits, Rret);          // get return type
   // Make sure we don't need to mask Rret for tosBits after the above shift
   ConstantPoolCacheEntry::verify_tosBits();
@@ -3021,8 +3012,8 @@
   __ mov(Rflags, Rret);
 
   // get return address
-  Address table(Rscratch, (address)Interpreter::return_5_addrs_by_index_table());
-  __ load_address(table);
+  AddressLiteral table(Interpreter::return_5_addrs_by_index_table());
+  __ set(table, Rscratch);
   __ srl(Rret, ConstantPoolCacheEntry::tosBits, Rret);          // get return type
   // Make sure we don't need to mask Rret for tosBits after the above shift
   ConstantPoolCacheEntry::verify_tosBits();
@@ -3059,7 +3050,7 @@
   Label search;
   Register Rtemp = Rflags;
 
-  __ ld(Address(RklassOop, 0, instanceKlass::vtable_length_offset() * wordSize), Rtemp);
+  __ ld(RklassOop, instanceKlass::vtable_length_offset() * wordSize, Rtemp);
   if (align_object_offset(1) > 1) {
     __ round_to(Rtemp, align_object_offset(1));
   }
@@ -3125,6 +3116,24 @@
 }
 
 
+void TemplateTable::invokedynamic(int byte_no) {
+  transition(vtos, vtos);
+
+  if (!EnableInvokeDynamic) {
+    // We should not encounter this bytecode if !EnableInvokeDynamic.
+    // The verifier will stop it.  However, if we get past the verifier,
+    // this will stop the thread in a reasonable way, without crashing the JVM.
+    __ call_VM(noreg, CAST_FROM_FN_PTR(address,
+                     InterpreterRuntime::throw_IncompatibleClassChangeError));
+    // the call_VM checks for exception, so we should never return here.
+    __ should_not_reach_here();
+    return;
+  }
+
+  __ stop("invokedynamic NYI");//6815692//
+}
+
+
 //----------------------------------------------------------------------------------------------------
 // Allocation
 
@@ -3624,9 +3633,9 @@
   transition(vtos, vtos);
   __ ldub(Lbcp, 1, G3_scratch);// get next bc
   __ sll(G3_scratch, LogBytesPerWord, G3_scratch);
-  Address ep(G4_scratch, (address)Interpreter::_wentry_point);
-  __ load_address(ep);
-  __ ld_ptr(ep.base(), G3_scratch, G3_scratch);
+  AddressLiteral ep(Interpreter::_wentry_point);
+  __ set(ep, G4_scratch);
+  __ ld_ptr(G4_scratch, G3_scratch, G3_scratch);
   __ jmp(G3_scratch, G0);
   __ delayed()->nop();
   // Note: the Lbcp increment step is part of the individual wide bytecode implementations
--- a/hotspot/src/cpu/sparc/vm/vtableStubs_sparc.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/vtableStubs_sparc.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -48,11 +48,7 @@
 
 #ifndef PRODUCT
   if (CountCompiledCalls) {
-    Address ctr(G5, SharedRuntime::nof_megamorphic_calls_addr());
-    __ sethi(ctr);
-    __ ld(ctr, G3_scratch);
-    __ inc(G3_scratch);
-    __ st(G3_scratch, ctr);
+    __ inc_counter(SharedRuntime::nof_megamorphic_calls_addr(), G5, G3_scratch);
   }
 #endif /* PRODUCT */
 
@@ -154,11 +150,7 @@
 
 #ifndef PRODUCT
   if (CountCompiledCalls) {
-    Address ctr(L0, SharedRuntime::nof_megamorphic_calls_addr());
-    __ sethi(ctr);
-    __ ld(ctr, L1);
-    __ inc(L1);
-    __ st(L1, ctr);
+    __ inc_counter(SharedRuntime::nof_megamorphic_calls_addr(), L0, L1);
   }
 #endif /* PRODUCT */
 
@@ -198,8 +190,8 @@
   __ delayed()->nop();
 
   __ bind(throw_icce);
-  Address icce(G3_scratch, StubRoutines::throw_IncompatibleClassChangeError_entry());
-  __ jump_to(icce, 0);
+  AddressLiteral icce(StubRoutines::throw_IncompatibleClassChangeError_entry());
+  __ jump_to(icce, G3_scratch);
   __ delayed()->restore();
 
   masm->flush();
--- a/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -189,20 +189,33 @@
 }
 
 
-void InterpreterMacroAssembler::get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset) {
+void InterpreterMacroAssembler::get_cache_index_at_bcp(Register reg, int bcp_offset, bool giant_index) {
   assert(bcp_offset > 0, "bcp is still pointing to start of bytecode");
+  if (!giant_index) {
+    load_unsigned_short(reg, Address(rsi, bcp_offset));
+  } else {
+    assert(EnableInvokeDynamic, "giant index used only for EnableInvokeDynamic");
+    movl(reg, Address(rsi, bcp_offset));
+    assert(constantPoolCacheOopDesc::decode_secondary_index(~123) == 123, "else change next line");
+    notl(reg);  // convert to plain index
+  }
+}
+
+
+void InterpreterMacroAssembler::get_cache_and_index_at_bcp(Register cache, Register index,
+                                                           int bcp_offset, bool giant_index) {
   assert(cache != index, "must use different registers");
-  load_unsigned_short(index, Address(rsi, bcp_offset));
+  get_cache_index_at_bcp(index, bcp_offset, giant_index);
   movptr(cache, Address(rbp, frame::interpreter_frame_cache_offset * wordSize));
   assert(sizeof(ConstantPoolCacheEntry) == 4*wordSize, "adjust code below");
   shlptr(index, 2); // convert from field index to ConstantPoolCacheEntry index
 }
 
 
-void InterpreterMacroAssembler::get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset) {
-  assert(bcp_offset > 0, "bcp is still pointing to start of bytecode");
+void InterpreterMacroAssembler::get_cache_entry_pointer_at_bcp(Register cache, Register tmp,
+                                                               int bcp_offset, bool giant_index) {
   assert(cache != tmp, "must use different register");
-  load_unsigned_short(tmp, Address(rsi, bcp_offset));
+  get_cache_index_at_bcp(tmp, bcp_offset, giant_index);
   assert(sizeof(ConstantPoolCacheEntry) == 4*wordSize, "adjust code below");
                                // convert from field index to ConstantPoolCacheEntry index
                                // and from word offset to byte offset
@@ -1214,7 +1227,9 @@
 }
 
 
-void InterpreterMacroAssembler::profile_virtual_call(Register receiver, Register mdp, Register reg2) {
+void InterpreterMacroAssembler::profile_virtual_call(Register receiver, Register mdp,
+                                                     Register reg2,
+                                                     bool receiver_can_be_null) {
   if (ProfileInterpreter) {
     Label profile_continue;
 
@@ -1224,8 +1239,15 @@
     // We are making a call.  Increment the count.
     increment_mdp_data_at(mdp, in_bytes(CounterData::count_offset()));
 
+    Label skip_receiver_profile;
+    if (receiver_can_be_null) {
+      testptr(receiver, receiver);
+      jcc(Assembler::zero, skip_receiver_profile);
+    }
+
     // Record the receiver type.
     record_klass_in_profile(receiver, mdp, reg2);
+    bind(skip_receiver_profile);
 
     // The method data pointer needs to be updated to reflect the new target.
     update_mdp_by_constant(mdp,
--- a/hotspot/src/cpu/x86/vm/interp_masm_x86_32.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_32.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -76,8 +76,9 @@
   void get_cpool_and_tags(Register cpool, Register tags)   { get_constant_pool(cpool); movptr(tags, Address(cpool, constantPoolOopDesc::tags_offset_in_bytes()));
   }
   void get_unsigned_2_byte_index_at_bcp(Register reg, int bcp_offset);
-  void get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset);
-  void get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset);
+  void get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset, bool giant_index = false);
+  void get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset, bool giant_index = false);
+  void get_cache_index_at_bcp(Register index, int bcp_offset, bool giant_index = false);
 
   // Expression stack
   void f2ieee();                                           // truncate ftos to 32bits
@@ -226,7 +227,8 @@
   void profile_not_taken_branch(Register mdp);
   void profile_call(Register mdp);
   void profile_final_call(Register mdp);
-  void profile_virtual_call(Register receiver, Register mdp, Register scratch2);
+  void profile_virtual_call(Register receiver, Register mdp, Register scratch2,
+                            bool receiver_can_be_null = false);
   void profile_ret(Register return_bci, Register mdp);
   void profile_null_seen(Register mdp);
   void profile_typecheck(Register mdp, Register klass, Register scratch);
--- a/hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -156,13 +156,22 @@
 }
 
 
-address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step) {
+address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, bool unbox) {
+  TosState incoming_state = state;
+  if (EnableInvokeDynamic) {
+    if (unbox) {
+      incoming_state = atos;
+    }
+  } else {
+    assert(!unbox, "old behavior");
+  }
+
   Label interpreter_entry;
   address compiled_entry = __ pc();
 
 #ifdef COMPILER2
   // The FPU stack is clean if UseSSE >= 2 but must be cleaned in other cases
-  if ((state == ftos && UseSSE < 1) || (state == dtos && UseSSE < 2)) {
+  if ((incoming_state == ftos && UseSSE < 1) || (incoming_state == dtos && UseSSE < 2)) {
     for (int i = 1; i < 8; i++) {
         __ ffree(i);
     }
@@ -170,7 +179,7 @@
     __ empty_FPU_stack();
   }
 #endif
-  if ((state == ftos && UseSSE < 1) || (state == dtos && UseSSE < 2)) {
+  if ((incoming_state == ftos && UseSSE < 1) || (incoming_state == dtos && UseSSE < 2)) {
     __ MacroAssembler::verify_FPU(1, "generate_return_entry_for compiled");
   } else {
     __ MacroAssembler::verify_FPU(0, "generate_return_entry_for compiled");
@@ -186,12 +195,12 @@
 
   // In SSE mode, interpreter returns FP results in xmm0 but they need
   // to end up back on the FPU so it can operate on them.
-  if (state == ftos && UseSSE >= 1) {
+  if (incoming_state == ftos && UseSSE >= 1) {
     __ subptr(rsp, wordSize);
     __ movflt(Address(rsp, 0), xmm0);
     __ fld_s(Address(rsp, 0));
     __ addptr(rsp, wordSize);
-  } else if (state == dtos && UseSSE >= 2) {
+  } else if (incoming_state == dtos && UseSSE >= 2) {
     __ subptr(rsp, 2*wordSize);
     __ movdbl(Address(rsp, 0), xmm0);
     __ fld_d(Address(rsp, 0));
@@ -207,13 +216,102 @@
 
   __ restore_bcp();
   __ restore_locals();
-  __ get_cache_and_index_at_bcp(rbx, rcx, 1);
+
+  Label L_fail;
+
+  if (unbox && state != atos) {
+    // cast and unbox
+    BasicType type = as_BasicType(state);
+    if (type == T_BYTE)  type = T_BOOLEAN; // FIXME
+    KlassHandle boxk = SystemDictionaryHandles::box_klass(type);
+    __ mov32(rbx, ExternalAddress((address) boxk.raw_value()));
+    __ testl(rax, rax);
+    Label L_got_value, L_get_value;
+    // convert nulls to zeroes (avoid NPEs here)
+    if (!(type == T_FLOAT || type == T_DOUBLE)) {
+      // if rax already contains zero bits, forge ahead
+      __ jcc(Assembler::zero, L_got_value);
+    } else {
+      __ jcc(Assembler::notZero, L_get_value);
+      __ fldz();
+      __ jmp(L_got_value);
+    }
+    __ bind(L_get_value);
+    __ cmp32(rbx, Address(rax, oopDesc::klass_offset_in_bytes()));
+    __ jcc(Assembler::notEqual, L_fail);
+    int offset = java_lang_boxing_object::value_offset_in_bytes(type);
+    // Cf. TemplateTable::getfield_or_static
+    switch (type) {
+      case T_BYTE:     // fall through:
+      case T_BOOLEAN:  __ load_signed_byte(rax, Address(rax, offset));    break;
+      case T_CHAR:     __ load_unsigned_short(rax, Address(rax, offset)); break;
+      case T_SHORT:    __ load_signed_short(rax, Address(rax, offset));   break;
+      case T_INT:      __ movl(rax, Address(rax, offset));                break;
+      case T_FLOAT:    __ fld_s(Address(rax, offset));                    break;
+      case T_DOUBLE:   __ fld_d(Address(rax, offset));                    break;
+      // Access to java.lang.Double.value does not need to be atomic:
+      case T_LONG:   { __ movl(rdx, Address(rax, offset + 4));
+                       __ movl(rax, Address(rax, offset + 0));  }         break;
+      default: ShouldNotReachHere();
+    }
+    __ bind(L_got_value);
+  }
+
+  Label L_got_cache, L_giant_index;
+  if (EnableInvokeDynamic) {
+    __ cmpb(Address(rsi, 0), Bytecodes::_invokedynamic);
+    __ jcc(Assembler::equal, L_giant_index);
+  }
+  __ get_cache_and_index_at_bcp(rbx, rcx, 1, false);
+  __ bind(L_got_cache);
+  if (unbox && state == atos) {
+    // insert a casting conversion, to keep verifier sane
+    Label L_ok, L_ok_pops;
+    __ testl(rax, rax);
+    __ jcc(Assembler::zero, L_ok);
+    __ push(rax);               // save the object to check
+    __ push(rbx);               // save CP cache reference
+    __ movl(rdx, Address(rax, oopDesc::klass_offset_in_bytes()));
+    __ movl(rbx, Address(rbx, rcx,
+                      Address::times_4, constantPoolCacheOopDesc::base_offset() +
+                      ConstantPoolCacheEntry::f1_offset()));
+    __ movl(rbx, Address(rbx, __ delayed_value(sun_dyn_CallSiteImpl::type_offset_in_bytes, rcx)));
+    __ movl(rbx, Address(rbx, __ delayed_value(java_dyn_MethodType::rtype_offset_in_bytes, rcx)));
+    __ movl(rax, Address(rbx, __ delayed_value(java_lang_Class::klass_offset_in_bytes, rcx)));
+    __ check_klass_subtype(rdx, rax, rbx, L_ok_pops);
+    __ pop(rcx);                // pop and discard CP cache
+    __ mov(rbx, rax);           // target supertype into rbx for L_fail
+    __ pop(rax);                // failed object into rax for L_fail
+    __ jmp(L_fail);
+
+    __ bind(L_ok_pops);
+    // restore pushed temp regs:
+    __ pop(rbx);
+    __ pop(rax);
+    __ bind(L_ok);
+  }
   __ movl(rbx, Address(rbx, rcx,
                     Address::times_ptr, constantPoolCacheOopDesc::base_offset() +
                     ConstantPoolCacheEntry::flags_offset()));
   __ andptr(rbx, 0xFF);
   __ lea(rsp, Address(rsp, rbx, Interpreter::stackElementScale()));
   __ dispatch_next(state, step);
+
+  // out of the main line of code...
+  if (EnableInvokeDynamic) {
+    __ bind(L_giant_index);
+    __ get_cache_and_index_at_bcp(rbx, rcx, 1, true);
+    __ jmp(L_got_cache);
+
+    if (unbox) {
+      __ bind(L_fail);
+      __ push(rbx);             // missed klass (required)
+      __ push(rax);             // bad object (actual)
+      __ movptr(rdx, ExternalAddress((address) &Interpreter::_throw_WrongMethodType_entry));
+      __ call(rdx);
+    }
+  }
+
   return entry;
 }
 
--- a/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -166,7 +166,8 @@
 
 
 address TemplateInterpreterGenerator::generate_return_entry_for(TosState state,
-                                                                int step) {
+                                                                int step, bool unbox) {
+  assert(!unbox, "NYI");//6815692//
 
   // amd64 doesn't need to do anything special about compiled returns
   // to the interpreter so the code that exists on x86 to place a sentinel
--- a/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -206,12 +206,12 @@
     __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::set_original_bytecode_at), scratch, rsi, bc);
 #ifndef ASSERT
     __ jmpb(patch_done);
+#else
+    __ jmp(patch_done);
+#endif
     __ bind(fast_patch);
   }
-#else
-    __ jmp(patch_done);
-    __ bind(fast_patch);
-  }
+#ifdef ASSERT
   Label okay;
   __ load_unsigned_byte(scratch, at_bcp(0));
   __ cmpl(scratch, (int)Bytecodes::java_code(bytecode));
@@ -2105,6 +2105,7 @@
 
 void TemplateTable::resolve_cache_and_index(int byte_no, Register Rcache, Register index) {
   assert(byte_no == 1 || byte_no == 2, "byte_no out of range");
+  bool is_invokedynamic = (bytecode() == Bytecodes::_invokedynamic);
 
   Register temp = rbx;
 
@@ -2112,16 +2113,19 @@
 
   const int shift_count = (1 + byte_no)*BitsPerByte;
   Label resolved;
-  __ get_cache_and_index_at_bcp(Rcache, index, 1);
-  __ movl(temp, Address(Rcache,
-                          index,
-                          Address::times_ptr,
-                          constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::indices_offset()));
-  __ shrl(temp, shift_count);
-  // have we resolved this bytecode?
-  __ andptr(temp, 0xFF);
-  __ cmpl(temp, (int)bytecode());
-  __ jcc(Assembler::equal, resolved);
+  __ get_cache_and_index_at_bcp(Rcache, index, 1, is_invokedynamic);
+  if (is_invokedynamic) {
+    // we are resolved if the f1 field contains a non-null CallSite object
+    __ cmpptr(Address(Rcache, index, Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f1_offset()), (int32_t) NULL_WORD);
+    __ jcc(Assembler::notEqual, resolved);
+  } else {
+    __ movl(temp, Address(Rcache, index, Address::times_4, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::indices_offset()));
+    __ shrl(temp, shift_count);
+    // have we resolved this bytecode?
+    __ andl(temp, 0xFF);
+    __ cmpl(temp, (int)bytecode());
+    __ jcc(Assembler::equal, resolved);
+  }
 
   // resolve first time through
   address entry;
@@ -2134,12 +2138,13 @@
     case Bytecodes::_invokespecial  : // fall through
     case Bytecodes::_invokestatic   : // fall through
     case Bytecodes::_invokeinterface: entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invoke);  break;
+    case Bytecodes::_invokedynamic  : entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invokedynamic); break;
     default                         : ShouldNotReachHere();                                 break;
   }
   __ movl(temp, (int)bytecode());
   __ call_VM(noreg, entry, temp);
   // Update registers with resolved info
-  __ get_cache_and_index_at_bcp(Rcache, index, 1);
+  __ get_cache_and_index_at_bcp(Rcache, index, 1, is_invokedynamic);
   __ bind(resolved);
 }
 
@@ -2884,12 +2889,17 @@
 }
 
 
-void TemplateTable::prepare_invoke(Register method, Register index, int byte_no, Bytecodes::Code code) {
+void TemplateTable::prepare_invoke(Register method, Register index, int byte_no) {
+  bool is_invdyn_bootstrap = (byte_no < 0);
+  if (is_invdyn_bootstrap)  byte_no = -byte_no;
+
   // determine flags
+  Bytecodes::Code code = bytecode();
   const bool is_invokeinterface  = code == Bytecodes::_invokeinterface;
+  const bool is_invokedynamic    = code == Bytecodes::_invokedynamic;
   const bool is_invokevirtual    = code == Bytecodes::_invokevirtual;
   const bool is_invokespecial    = code == Bytecodes::_invokespecial;
-  const bool load_receiver       = code != Bytecodes::_invokestatic;
+  const bool load_receiver      = (code != Bytecodes::_invokestatic && code != Bytecodes::_invokedynamic);
   const bool receiver_null_check = is_invokespecial;
   const bool save_flags = is_invokeinterface || is_invokevirtual;
   // setup registers & access constant pool cache
@@ -2897,6 +2907,8 @@
   const Register flags  = rdx;
   assert_different_registers(method, index, recv, flags);
 
+  assert(!is_invdyn_bootstrap || is_invokedynamic, "byte_no<0 hack only for invdyn");
+
   // save 'interpreter return address'
   __ save_bcp();
 
@@ -2907,8 +2919,13 @@
     __ movl(recv, flags);
     __ andl(recv, 0xFF);
     // recv count is 0 based?
-    __ movptr(recv, Address(rsp, recv, Interpreter::stackElementScale(), -Interpreter::expr_offset_in_bytes(1)));
-    __ verify_oop(recv);
+    Address recv_addr(rsp, recv, Interpreter::stackElementScale(), -Interpreter::expr_offset_in_bytes(1));
+    if (is_invokedynamic) {
+      __ lea(recv, recv_addr);
+    } else {
+      __ movptr(recv, recv_addr);
+      __ verify_oop(recv);
+    }
   }
 
   // do null check if needed
@@ -2926,8 +2943,14 @@
   ConstantPoolCacheEntry::verify_tosBits();
   // load return address
   {
-    ExternalAddress table(is_invokeinterface ? (address)Interpreter::return_5_addrs_by_index_table() :
-                                               (address)Interpreter::return_3_addrs_by_index_table());
+    address table_addr;
+    if (is_invdyn_bootstrap)
+      table_addr = (address)Interpreter::return_5_unbox_addrs_by_index_table();
+    else if (is_invokeinterface || is_invokedynamic)
+      table_addr = (address)Interpreter::return_5_addrs_by_index_table();
+    else
+      table_addr = (address)Interpreter::return_3_addrs_by_index_table();
+    ExternalAddress table(table_addr);
     __ movptr(flags, ArrayAddress(table, Address(noreg, flags, Address::times_ptr)));
   }
 
@@ -2990,7 +3013,7 @@
 
 void TemplateTable::invokevirtual(int byte_no) {
   transition(vtos, vtos);
-  prepare_invoke(rbx, noreg, byte_no, bytecode());
+  prepare_invoke(rbx, noreg, byte_no);
 
   // rbx,: index
   // rcx: receiver
@@ -3002,7 +3025,7 @@
 
 void TemplateTable::invokespecial(int byte_no) {
   transition(vtos, vtos);
-  prepare_invoke(rbx, noreg, byte_no, bytecode());
+  prepare_invoke(rbx, noreg, byte_no);
   // do the call
   __ verify_oop(rbx);
   __ profile_call(rax);
@@ -3012,7 +3035,7 @@
 
 void TemplateTable::invokestatic(int byte_no) {
   transition(vtos, vtos);
-  prepare_invoke(rbx, noreg, byte_no, bytecode());
+  prepare_invoke(rbx, noreg, byte_no);
   // do the call
   __ verify_oop(rbx);
   __ profile_call(rax);
@@ -3028,7 +3051,7 @@
 
 void TemplateTable::invokeinterface(int byte_no) {
   transition(vtos, vtos);
-  prepare_invoke(rax, rbx, byte_no, bytecode());
+  prepare_invoke(rax, rbx, byte_no);
 
   // rax,: Interface
   // rbx,: index
@@ -3102,6 +3125,84 @@
   __ should_not_reach_here();
 }
 
+void TemplateTable::invokedynamic(int byte_no) {
+  transition(vtos, vtos);
+
+  if (!EnableInvokeDynamic) {
+    // We should not encounter this bytecode if !EnableInvokeDynamic.
+    // The verifier will stop it.  However, if we get past the verifier,
+    // this will stop the thread in a reasonable way, without crashing the JVM.
+    __ call_VM(noreg, CAST_FROM_FN_PTR(address,
+                     InterpreterRuntime::throw_IncompatibleClassChangeError));
+    // the call_VM checks for exception, so we should never return here.
+    __ should_not_reach_here();
+    return;
+  }
+
+  prepare_invoke(rax, rbx, byte_no);
+
+  // rax: CallSite object (f1)
+  // rbx: unused (f2)
+  // rcx: receiver address
+  // rdx: flags (unused)
+
+  if (ProfileInterpreter) {
+    Label L;
+    // %%% should make a type profile for any invokedynamic that takes a ref argument
+    // profile this call
+    __ profile_call(rsi);
+  }
+
+  Label handle_unlinked_site;
+  __ movptr(rcx, Address(rax, __ delayed_value(sun_dyn_CallSiteImpl::target_offset_in_bytes, rcx)));
+  __ testptr(rcx, rcx);
+  __ jcc(Assembler::zero, handle_unlinked_site);
+
+  __ prepare_to_jump_from_interpreted();
+  __ jump_to_method_handle_entry(rcx, rdx);
+
+  // Initial calls come here...
+  __ bind(handle_unlinked_site);
+  __ pop(rcx);                 // remove return address pushed by prepare_invoke
+
+  // box stacked arguments into an array for the bootstrap method
+  address entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::bootstrap_invokedynamic);
+  __ restore_bcp();      // rsi must be correct for call_VM
+  __ call_VM(rax, entry, rax);
+  __ movl(rdi, rax);            // protect bootstrap MH from prepare_invoke
+
+  // recompute return address
+  __ restore_bcp();      // rsi must be correct for prepare_invoke
+  prepare_invoke(rax, rbx, -byte_no);  // smashes rcx, rdx
+  // rax: CallSite object (f1)
+  // rbx: unused (f2)
+  // rdi: bootstrap MH
+  // rdx: flags
+
+  // now load up the arglist, which has been neatly boxed
+  __ get_thread(rcx);
+  __ movptr(rdx, Address(rcx, JavaThread::vm_result_2_offset()));
+  __ movptr(Address(rcx, JavaThread::vm_result_2_offset()), NULL_WORD);
+  __ verify_oop(rdx);
+  // rdx = arglist
+
+  // save SP now, before we add the bootstrap call to the stack
+  // We must preserve a fiction that the original arguments are outgoing,
+  // because the return sequence will reset the stack to this point
+  // and then pop all those arguments.  It seems error-prone to use
+  // a different argument list size just for bootstrapping.
+  __ prepare_to_jump_from_interpreted();
+
+  // Now let's play adapter, pushing the real arguments on the stack.
+  __ pop(rbx);                  // return PC
+  __ push(rdi);                 // boot MH
+  __ push(rax);                 // call site
+  __ push(rdx);                 // arglist
+  __ push(rbx);                 // return PC, again
+  __ mov(rcx, rdi);
+  __ jump_to_method_handle_entry(rcx, rdx);
+}
+
 //----------------------------------------------------------------------------------------------------
 // Allocation
 
--- a/hotspot/src/cpu/x86/vm/templateTable_x86_32.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/templateTable_x86_32.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -22,8 +22,7 @@
  *
  */
 
-  static void prepare_invoke(Register method, Register index, int byte_no,
-                             Bytecodes::Code code);
+  static void prepare_invoke(Register method, Register index, int byte_no);
   static void invokevirtual_helper(Register index, Register recv,
                                    Register flags);
   static void volatile_barrier(Assembler::Membar_mask_bits order_constraint );
--- a/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -3058,6 +3058,23 @@
   return;
 }
 
+void TemplateTable::invokedynamic(int byte_no) {
+  transition(vtos, vtos);
+
+  if (!EnableInvokeDynamic) {
+    // We should not encounter this bytecode if !EnableInvokeDynamic.
+    // The verifier will stop it.  However, if we get past the verifier,
+    // this will stop the thread in a reasonable way, without crashing the JVM.
+    __ call_VM(noreg, CAST_FROM_FN_PTR(address,
+                     InterpreterRuntime::throw_IncompatibleClassChangeError));
+    // the call_VM checks for exception, so we should never return here.
+    __ should_not_reach_here();
+    return;
+  }
+
+  __ stop("invokedynamic NYI");//6815692//
+}
+
 
 //-----------------------------------------------------------------------------
 // Allocation
--- a/hotspot/src/os/windows/vm/os_windows.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/os/windows/vm/os_windows.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -2632,6 +2632,8 @@
 
 char* os::reserve_memory_special(size_t bytes, char* addr, bool exec) {
 
+  const DWORD prot = exec ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE;
+
   if (UseLargePagesIndividualAllocation) {
     if (TracePageSizes && Verbose) {
        tty->print_cr("Reserving large pages individually.");
@@ -2694,13 +2696,7 @@
         p_new = (char *) VirtualAlloc(next_alloc_addr,
                                     bytes_to_rq,
                                     MEM_RESERVE | MEM_COMMIT | MEM_LARGE_PAGES,
-                                    PAGE_READWRITE);
-        if (p_new != NULL && exec) {
-          DWORD oldprot;
-          // Windows doc says to use VirtualProtect to get execute permissions
-          VirtualProtect(next_alloc_addr, bytes_to_rq,
-                         PAGE_EXECUTE_READWRITE, &oldprot);
-        }
+                                    prot);
       }
 
       if (p_new == NULL) {
@@ -2729,12 +2725,7 @@
   } else {
     // normal policy just allocate it all at once
     DWORD flag = MEM_RESERVE | MEM_COMMIT | MEM_LARGE_PAGES;
-    char * res = (char *)VirtualAlloc(NULL, bytes, flag, PAGE_READWRITE);
-    if (res != NULL && exec) {
-      DWORD oldprot;
-      // Windows doc says to use VirtualProtect to get execute permissions
-      VirtualProtect(res, bytes, PAGE_EXECUTE_READWRITE, &oldprot);
-    }
+    char * res = (char *)VirtualAlloc(NULL, bytes, flag, prot);
     return res;
   }
 }
--- a/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -39,7 +39,7 @@
 // ThreadStackSize 320 allows TaggedStackInterpreter and a couple of test cases
 // to run while keeping the number of threads that can be created high.
 define_pd_global(intx, ThreadStackSize,          320);
-define_pd_global(intx, VMThreadStackSize,        256);
+define_pd_global(intx, VMThreadStackSize,        512);
 define_pd_global(intx, SurvivorRatio,            8);
 define_pd_global(uintx, JVMInvokeMethodSlack,    10*K);
 #endif // AMD64
--- a/hotspot/src/share/tools/MakeDeps/BuildConfig.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/tools/MakeDeps/BuildConfig.java	Wed Jul 05 16:52:18 2017 +0200
@@ -247,7 +247,7 @@
         sysDefines.add("HOTSPOT_BUILD_USER="+System.getProperty("user.name"));
         sysDefines.add("HOTSPOT_BUILD_TARGET=\\\""+get("Build")+"\\\"");
         sysDefines.add("_JNI_IMPLEMENTATION_");
-        sysDefines.add("HOTSPOT_LIB_ARCH=\\\"i486\\\"");
+        sysDefines.add("HOTSPOT_LIB_ARCH=\\\"i386\\\"");
 
         sysDefines.addAll(defines);
 
--- a/hotspot/src/share/tools/hsdis/Makefile	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/tools/hsdis/Makefile	Wed Jul 05 16:52:18 2017 +0200
@@ -22,61 +22,75 @@
 #  
 #
 
-# Single gnu makefile for solaris, linux and windows (windows requires mks or
-# cygwin).
-
-ifeq            ($(BINUTILS),)
-# Pop all the way out of the workspace to look for binutils.
-# ...You probably want to override this setting.
-BINUTILS	= $(shell cd ../../../../..;pwd)/binutils-2.17-$(LIBARCH)
-endif
+# Single gnu makefile for solaris, linux and windows (windows requires cygwin and mingw)
 
 # Default arch; it is changed below as needed.
 ARCH		= i386
 OS		= $(shell uname)
 
-CPPFLAGS	+= -I$(BINUTILS)/include -I$(BINUTILS)/bfd
-CPPFLAGS	+= -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\" -DLIBARCH_$(LIBARCH)
-CPPFLAGS	+= -DHOTSPOT_OS=\"$(OS)\" -DOS_$(OS)
-
 ## OS = SunOS ##
 ifeq		($(OS),SunOS)
-ARCH    	= $(shell uname -p)
+CPU             = $(shell uname -p)
+ARCH1=$(CPU:i586=i386)
+ARCH=$(ARCH1:i686=i386)
 OS		= solaris
 CC 		= cc
-CCFLAGS		+= -Kpic -g
-CCFLAGS/amd64   += -xarch=amd64
-CCFLAGS/sparcv9 += -xarch=v9
-CCFLAGS		+= $(CCFLAGS/$(LIBARCH))
+CFLAGS		+= -KPIC
+ifdef LP64
+ifeq ($(ARCH),sparc)
+ARCH            = sparcv9
+endif
+ifeq ($(ARCH),i386)
+ARCH            = amd64
+endif
+endif
+CFLAGS/sparcv9	+= -xarch=v9
+CFLAGS/amd64	+= -m64
+CFLAGS		+= $(CFLAGS/$(ARCH))
 DLDFLAGS	+= -G
+LDFLAGS         += -ldl
 OUTFLAGS	+= -o $@
 LIB_EXT		= .so
 else
 ## OS = Linux ##
 ifeq		($(OS),Linux)
-CPU             = $(shell uname -m)
-ifeq		($(CPU),ia64)
-ARCH    	= ia64
+ifneq           ($(MINGW),)
+LIB_EXT		= .dll
+CPPFLAGS += -I$(TARGET_DIR)/include
+LDFLAGS += -L$(TARGET_DIR)/lib
+OS=windows
+ifneq           ($(findstring x86_64-,$(MINGW)),)
+ARCH=amd64
+else
+ARCH=i386
+endif
+CC 		= $(MINGW)-gcc
+CONFIGURE_ARGS= --host=$(MINGW) --target=$(MINGW)
 else
-ifeq		($(CPU),x86_64)
-CCFLAGS		+= -fPIC
-endif   # x86_64
-endif   # ia64
+CPU             = $(shell uname -m)
+ARCH1=$(CPU:x86_64=amd64)
+ARCH=$(ARCH1:i686=i386)
+CFLAGS/i386	+= -m32
+CFLAGS/sparc	+= -m32
+CFLAGS/sparcv9	+= -m64
+CFLAGS/amd64	+= -m64
+CFLAGS		+= $(CFLAGS/$(ARCH))
+CFLAGS		+= -fPIC
 OS		= linux
+LIB_EXT		= .so
 CC 		= gcc
-CCFLAGS		+= -O
+endif
+CFLAGS		+= -O
 DLDFLAGS	+= -shared
+LDFLAGS         += -ldl
 OUTFLAGS	+= -o $@
-LIB_EXT		= .so
-CPPFLAGS	+= -Iinclude -Iinclude/$(OS)_$(ARCH)/
 ## OS = Windows ##
 else   # !SunOS, !Linux => Windows
-OS		= win
-CC		= cl
+OS		= windows
+CC		= gcc
 #CPPFLAGS	+= /D"WIN32" /D"_WINDOWS" /D"DEBUG" /D"NDEBUG"
-CCFLAGS		+=  /nologo /MD /W3 /WX /O2 /Fo$(@:.dll=.obj) /Gi-
-CCFLAGS		+= -Iinclude -Iinclude/gnu -Iinclude/$(OS)_$(ARCH)
-CCFLAGS		+= /D"HOTSPOT_LIB_ARCH=\"$(LIBARCH)\""
+CFLAGS		+=  /nologo /MD /W3 /WX /O2 /Fo$(@:.dll=.obj) /Gi-
+CFLAGS		+= LIBARCH=\"$(LIBARCH)\""
 DLDFLAGS	+= /dll /subsystem:windows /incremental:no \
 			/export:decode_instruction
 OUTFLAGS	+= /link /out:$@
@@ -94,21 +108,34 @@
 endif   # LIBARCH64/$(ARCH)
 endif   # LP64
 
-TARGET_DIR	= bin/$(OS)
+JDKARCH=$(LIBARCH:i386=i586)
+
+ifeq            ($(BINUTILS),)
+# Pop all the way out of the workspace to look for binutils.
+# ...You probably want to override this setting.
+BINUTILSDIR	= $(shell cd build/binutils;pwd)
+else
+BINUTILSDIR	= $(shell cd $(BINUTILS);pwd)
+endif
+
+CPPFLAGS	+= -I$(BINUTILSDIR)/include -I$(BINUTILS)/bfd -I$(TARGET_DIR)/bfd
+CPPFLAGS	+= -DLIBARCH_$(LIBARCH) -DLIBARCH=\"$(LIBARCH)\" -DLIB_EXT=\"$(LIB_EXT)\"
+
+TARGET_DIR	= build/$(OS)-$(JDKARCH)
 TARGET		= $(TARGET_DIR)/hsdis-$(LIBARCH)$(LIB_EXT)
 
 SOURCE		= hsdis.c
 
-LIBRARIES =	$(BINUTILS)/bfd/libbfd.a \
-		$(BINUTILS)/opcodes/libopcodes.a \
-		$(BINUTILS)/libiberty/libiberty.a
+LIBRARIES =	$(TARGET_DIR)/bfd/libbfd.a \
+		$(TARGET_DIR)/opcodes/libopcodes.a \
+		$(TARGET_DIR)/libiberty/libiberty.a
 
-DEMO_TARGET	= $(TARGET_DIR)/hsdis-demo-$(LIBARCH)
+DEMO_TARGET	= $(TARGET_DIR)/hsdis-demo
 DEMO_SOURCE	= hsdis-demo.c
 
 .PHONY:  all clean demo both
 
-all:  $(TARGET) demo
+all:  $(TARGET)
 
 both: all all64
 
@@ -117,16 +144,17 @@
 
 demo: $(TARGET) $(DEMO_TARGET)
 
-$(LIBRARIES):
-	@echo "*** Please build binutils first; see ./README: ***"
-	@sed < ./README '1,/__________/d' | head -20
-	@echo "..."; exit 1
+$(LIBRARIES): $(TARGET_DIR) $(TARGET_DIR)/Makefile
+	if [ ! -f $@ ]; then cd $(TARGET_DIR); make all-opcodes; fi
+
+$(TARGET_DIR)/Makefile:
+	(cd $(TARGET_DIR); CC=$(CC) CFLAGS="$(CFLAGS)" $(BINUTILSDIR)/configure --disable-nls $(CONFIGURE_ARGS))
 
 $(TARGET): $(SOURCE) $(LIBS) $(LIBRARIES) $(TARGET_DIR)
-	$(CC) $(OUTFLAGS) $(CPPFLAGS) $(CCFLAGS) $(SOURCE) $(DLDFLAGS) $(LIBRARIES)
+	$(CC) $(OUTFLAGS) $(CPPFLAGS) $(CFLAGS) $(SOURCE) $(DLDFLAGS) $(LIBRARIES)
 
 $(DEMO_TARGET): $(DEMO_SOURCE) $(TARGET) $(TARGET_DIR)
-	$(CC) $(OUTFLAGS) $(CPPFLAGS) $(CCFLAGS) $(DEMO_SOURCE) $(LDFLAGS)
+	$(CC) $(OUTFLAGS) -DTARGET_DIR=\"$(TARGET_DIR)\" $(CPPFLAGS) -g $(CFLAGS/$(ARCH)) $(DEMO_SOURCE) $(LDFLAGS)
 
 $(TARGET_DIR):
 	[ -d $@ ] || mkdir -p $@
--- a/hotspot/src/share/tools/hsdis/README	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/tools/hsdis/README	Wed Jul 05 16:52:18 2017 +0200
@@ -32,61 +32,55 @@
 
 * Building
 
-To build this project you need a build of Gnu binutils to link against.
-It is known to work with binutils 2.17.
-
-The makefile looks for this build in $BINUTILS, or (if that is not set),
-in  .../binutils-2.17-$LIBARCH, where LIBARCH (as in HotSpot) is one of
-the jre subdirectory keywords i386, amd64, sparc, sparcv9, etc.
-
-To build Gnu binutils, first download a copy of the software:
-  http://directory.fsf.org/project/binutils/
+To build this project you a copy of GNU binutils to build against.  It
+is known to work with binutils 2.17 and binutils 2.19.1.  Download a
+copy of the software from http://directory.fsf.org/project/binutils or
+one of it's mirrors.  Builds targetting windows should use at least
+2.19 and currently requires the use of a cross compiler.
 
-Unpack the binutils tarball into an empty directory:
-  chdir ../../../../..
-  tar -xzf - < ../binutils-2.17.tar.gz
-  mv binutils-2.17 binutils-2.17-i386  #or binutils-2.17-sparc
-  cd binutils-2.17-i386
+The makefile looks for the sources in build/binutils or you can
+specify it's location to the makefile using BINTUILS=path.  It will
+configure binutils and build it first and then build and link the
+disasembly adapter.  Make all will build the default target for your
+platform.  If you platform support both 32 and 64 simultaneously then
+"make both" will build them both at once.  "make all64" will
+explicitly build the 64 bit version.  By default this will build the
+disassembler library only.  If you build demo it will build a demo
+program that attempts to exercise the library.
 
-From inside that directory, run configure and make:
-  ( export CFLAGS='-fPIC'
-    ./configure i386-pc-elf )
-  gnumake
-
-(Leave out or change the argument to configure if not on an i386 system.)
+Windows
 
-Next, untar again into another empty directory for the LP64 version:
-  chdir ..
-  tar -xzf - < ../binutils-2.17.tar.gz
-  mv binutils-2.17 binutils-2.17-amd64  #or binutils-2.17-sparcv9
-  cd binutils-2.17-amd64
-
-From inside that directory, run configure for LP64 and make:
-  ( export ac_cv_c_bigendian=no CFLAGS='-m64 -fPIC' LDFLAGS=-m64
-    ./configure amd64-pc-elf )
-  gnumake
+In theory this should be buildable on Windows but getting a working
+GNU build environment on Windows has proven difficult.  MINGW should
+be able to do it but at the time of this writing I was unable to get
+this working.  Instead you can use the mingw cross compiler on linux
+to produce the windows binaries.  For 32-bit windows you can install
+mingw32 using your package manager and it will be added to your path
+automatically.  For 64-bit you need to download the 64 bit mingw from
+http://sourceforge.net/projects/mingw-w64.  Grab a copy of the
+complete toolchain and unpack it somewhere.  Put the bin directory of
+the toolchain in your path.  The mingw installs contain cross compile
+versions of gcc that are named with a prefix to indicate what they are
+targetting and you must tell the Makefile which one to use.  This
+should either be i586-mingw32msvc or x86_64-pc-mingw32 depending on
+which on you are targetting and there should be a version of gcc in
+your path named i586-mingw32msvc-gcc or x86_64-pc-mingw32-gcc.  Tell
+the makefile what prefix to use to find the mingw tools by using
+MINGW=.  For example:
 
-The -fPIC option is needed because the generated code will be
-linked into the hsdid-$LIBARCH.so binary.  If you miss the
-option, the JVM will fail to load the disassembler.
+make MINGW=i586-mingw32msvc BINTUILS=build/binutils-2.19.1
 
-You probably want two builds, one for 32 and one for 64 bits.
-To build the 64-bit variation of a platforn, add LP64=1 to
-the make command line for hsdis.
-
-So, go back to the hsdis project and build:
-  chdir .../hsdis
-  gnumake
-  gnumake LP64=1
+will build the Win32 cross compiled version of hsdis based on 2.19.1.
 
 * Installing
 
-Products are named like bin/$OS/hsdis-$LIBARCH.so.
-You can install them on your LD_LIBRARY_PATH,
-or inside of your JRE next to $LIBARCH/libjvm.so.
+Products are named like build/$OS-$LIBARCH/hsdis-$LIBARCH.so.  You can
+install them on your LD_LIBRARY_PATH, or inside of your JRE next to
+$LIBARCH/libjvm.so.
 
 Now test:
-  export LD_LIBRARY_PATH .../hsdis/bin/solaris:$LD_LIBRARY_PATH
+
+  export LD_LIBRARY_PATH .../hsdis/build/$OS-$LIBARCH:$LD_LIBRARY_PATH
   dargs='-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly'
   dargs=$dargs' -XX:PrintAssemblyOptions=hsdis-print-bytes'
   java $dargs -Xbatch CompileCommand=print,*String.hashCode HelloWorld
--- a/hotspot/src/share/tools/hsdis/hsdis-demo.c	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/tools/hsdis/hsdis-demo.c	Wed Jul 05 16:52:18 2017 +0200
@@ -53,7 +53,7 @@
       else if (!strncmp(arg, "-options=", 9))
         options = arg+9;
       else
-        { printf("Usage: %s [-xml] [name...]\n"); exit(2); }
+        { printf("Usage: %s [-xml] [name...]\n", av[0]); exit(2); }
       continue;
     }
     greet(arg);
@@ -76,26 +76,14 @@
 
 #include "dlfcn.h"
 
-#ifdef HOTSPOT_LIB_ARCH
-#define LIBARCH HOTSPOT_LIB_ARCH
-#endif
-#ifdef HOTSPOT_OS
-#define OS HOTSPOT_OS
-#endif
-
 #define DECODE_INSTRUCTIONS_NAME "decode_instructions"
 #define HSDIS_NAME               "hsdis"
 static void* decode_instructions_pv = 0;
 static const char* hsdis_path[] = {
-  HSDIS_NAME".so",
-#ifdef OS
-  "bin/"OS"/"HSDIS_NAME".so",
-#endif
-#ifdef LIBARCH
-  HSDIS_NAME"-"LIBARCH".so",
-#ifdef OS
-  "bin/"OS"/"HSDIS_NAME"-"LIBARCH".so",
-#endif
+  HSDIS_NAME"-"LIBARCH LIB_EXT,
+  "./" HSDIS_NAME"-"LIBARCH LIB_EXT,
+#ifdef TARGET_DIR
+  TARGET_DIR"/"HSDIS_NAME"-"LIBARCH LIB_EXT,
 #endif
   NULL
 };
@@ -112,7 +100,7 @@
     for (dllib = NULL; dllib == NULL; ) {
       const char* next_lib = (*next_in_path++);
       if (next_lib == NULL)
-        return "cannot find plugin "HSDIS_NAME".so";
+        return "cannot find plugin "HSDIS_NAME LIB_EXT;
       dllib = dlopen(next_lib, RTLD_LAZY);
     }
   }
--- a/hotspot/src/share/tools/hsdis/hsdis.c	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/tools/hsdis/hsdis.c	Wed Jul 05 16:52:18 2017 +0200
@@ -33,6 +33,7 @@
 #include <libiberty.h>
 #include <bfd.h>
 #include <dis-asm.h>
+#include <inttypes.h>
 
 #ifndef bool
 #define bool int
@@ -404,21 +405,21 @@
 }
 
 static const char* native_arch_name() {
-  const char* res = HOTSPOT_LIB_ARCH;
+  const char* res = NULL;
+#ifdef LIBARCH_i386
+    res = "i386";
+#endif
 #ifdef LIBARCH_amd64
     res = "i386:x86-64";
 #endif
 #ifdef LIBARCH_sparc
     res = "sparc:v8plusb";
 #endif
-#ifdef LIBARCH_sparc
-    res = "sparc:v8plusb";
-#endif
 #ifdef LIBARCH_sparcv9
     res = "sparc:v9b";
 #endif
   if (res == NULL)
-    res = "HOTSPOT_LIB_ARCH is not set in Makefile!";
+    res = "architecture not set in Makefile!";
   return res;
 }
 
--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1524,6 +1524,11 @@
     code = Bytecodes::_invokespecial;
   }
 
+  if (code == Bytecodes::_invokedynamic) {
+    BAILOUT("invokedynamic NYI"); // FIXME
+    return;
+  }
+
   // NEEDS_CLEANUP
   // I've added the target-is_loaded() test below but I don't really understand
   // how klass->is_loaded() can be true and yet target->is_loaded() is false.
@@ -2431,8 +2436,8 @@
       case Bytecodes::_invokevirtual  : // fall through
       case Bytecodes::_invokespecial  : // fall through
       case Bytecodes::_invokestatic   : // fall through
+      case Bytecodes::_invokedynamic  : // fall through
       case Bytecodes::_invokeinterface: invoke(code); break;
-      case Bytecodes::_xxxunusedxxx   : ShouldNotReachHere(); break;
       case Bytecodes::_new            : new_instance(s.get_index_big()); break;
       case Bytecodes::_newarray       : new_type_array(); break;
       case Bytecodes::_anewarray      : new_object_array(); break;
@@ -2571,6 +2576,7 @@
     , Bytecodes::_invokevirtual
     , Bytecodes::_invokespecial
     , Bytecodes::_invokestatic
+    , Bytecodes::_invokedynamic
     , Bytecodes::_invokeinterface
     , Bytecodes::_new
     , Bytecodes::_newarray
--- a/hotspot/src/share/vm/c1/c1_LinearScan.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/c1/c1_LinearScan.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -2956,9 +2956,11 @@
 
   NOT_PRODUCT(print_intervals("After Register Allocation"));
   NOT_PRODUCT(print_lir(2, "LIR after register allocation:"));
-  DEBUG_ONLY(verify());
 
   sort_intervals_after_allocation();
+
+  DEBUG_ONLY(verify());
+
   eliminate_spill_moves();
   assign_reg_num();
   CHECK_BAILOUT();
@@ -3147,6 +3149,16 @@
 
 
 void LinearScan::verify_no_oops_in_fixed_intervals() {
+  Interval* fixed_intervals;
+  Interval* other_intervals;
+  create_unhandled_lists(&fixed_intervals, &other_intervals, is_precolored_cpu_interval, NULL);
+
+  // to ensure a walking until the last instruction id, add a dummy interval
+  // with a high operation id
+  other_intervals = new Interval(any_reg);
+  other_intervals->add_range(max_jint - 2, max_jint - 1);
+  IntervalWalker* iw = new IntervalWalker(this, fixed_intervals, other_intervals);
+
   LIR_OpVisitState visitor;
   for (int i = 0; i < block_count(); i++) {
     BlockBegin* block = block_at(i);
@@ -3159,6 +3171,54 @@
 
       visitor.visit(op);
 
+      if (visitor.info_count() > 0) {
+        iw->walk_before(op->id());
+        bool check_live = true;
+        if (op->code() == lir_move) {
+          LIR_Op1* move = (LIR_Op1*)op;
+          check_live = (move->patch_code() == lir_patch_none);
+        }
+        LIR_OpBranch* branch = op->as_OpBranch();
+        if (branch != NULL && branch->stub() != NULL && branch->stub()->is_exception_throw_stub()) {
+          // Don't bother checking the stub in this case since the
+          // exception stub will never return to normal control flow.
+          check_live = false;
+        }
+
+        // Make sure none of the fixed registers is live across an
+        // oopmap since we can't handle that correctly.
+        if (check_live) {
+          for (Interval* interval = iw->active_first(fixedKind);
+               interval != Interval::end();
+               interval = interval->next()) {
+            if (interval->current_to() > op->id() + 1) {
+              // This interval is live out of this op so make sure
+              // that this interval represents some value that's
+              // referenced by this op either as an input or output.
+              bool ok = false;
+              for_each_visitor_mode(mode) {
+                int n = visitor.opr_count(mode);
+                for (int k = 0; k < n; k++) {
+                  LIR_Opr opr = visitor.opr_at(mode, k);
+                  if (opr->is_fixed_cpu()) {
+                    if (interval_at(reg_num(opr)) == interval) {
+                      ok = true;
+                      break;
+                    }
+                    int hi = reg_numHi(opr);
+                    if (hi != -1 && interval_at(hi) == interval) {
+                      ok = true;
+                      break;
+                    }
+                  }
+                }
+              }
+              assert(ok, "fixed intervals should never be live across an oopmap point");
+            }
+          }
+        }
+      }
+
       // oop-maps at calls do not contain registers, so check is not needed
       if (!visitor.has_call()) {
 
--- a/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -833,6 +833,7 @@
       case Bytecodes::_invokevirtual:
       case Bytecodes::_invokespecial:
       case Bytecodes::_invokestatic:
+      case Bytecodes::_invokedynamic:
       case Bytecodes::_invokeinterface:
         { bool will_link;
           ciMethod* target = s.get_method(will_link);
@@ -848,9 +849,6 @@
           }
         }
         break;
-      case Bytecodes::_xxxunusedxxx:
-        ShouldNotReachHere();
-        break;
       case Bytecodes::_new:
         state.apush(allocated_obj);
         break;
--- a/hotspot/src/share/vm/ci/ciStreams.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/ci/ciStreams.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -301,17 +301,19 @@
 // If this is a method invocation bytecode, get the constant pool
 // index of the invoked method.
 int ciBytecodeStream::get_method_index() {
+#ifdef ASSERT
   switch (cur_bc()) {
   case Bytecodes::_invokeinterface:
-    return Bytes::get_Java_u2(_pc-4);
   case Bytecodes::_invokevirtual:
   case Bytecodes::_invokespecial:
   case Bytecodes::_invokestatic:
-    return get_index_big();
+  case Bytecodes::_invokedynamic:
+    break;
   default:
     ShouldNotReachHere();
-    return 0;
   }
+#endif
+  return get_index_int();
 }
 
 // ------------------------------------------------------------------
@@ -337,6 +339,9 @@
 // for checking linkability when retrieving the associated method.
 ciKlass* ciBytecodeStream::get_declared_method_holder() {
   bool ignore;
+  // report as Dynamic for invokedynamic, which is syntactically classless
+  if (cur_bc() == Bytecodes::_invokedynamic)
+    return CURRENT_ENV->get_klass_by_name(_holder, ciSymbol::java_dyn_Dynamic(), false);
   return CURRENT_ENV->get_klass_by_index(_holder, get_method_holder_index(), ignore);
 }
 
--- a/hotspot/src/share/vm/ci/ciStreams.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/ci/ciStreams.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -91,9 +91,10 @@
     _end = _start + max;
   }
 
-  address cur_bcp()             { return _bc_start; }  // Returns bcp to current instruction
+  address cur_bcp() const       { return _bc_start; }  // Returns bcp to current instruction
   int next_bci() const          { return _pc -_start; }
   int cur_bci() const           { return _bc_start - _start; }
+  int instruction_size() const  { return _pc - _bc_start; }
 
   Bytecodes::Code cur_bc() const{ return check_java(_bc); }
   Bytecodes::Code next_bc()     { return Bytecodes::java_code((Bytecodes::Code)* _pc); }
@@ -121,34 +122,39 @@
     return check_java(_bc);
   }
 
-  bool is_wide()  { return ( _pc == _was_wide ); }
+  bool is_wide() const { return ( _pc == _was_wide ); }
 
   // Get a byte index following this bytecode.
   // If prefixed with a wide bytecode, get a wide index.
   int get_index() const {
+    assert_index_size(is_wide() ? 2 : 1);
     return (_pc == _was_wide)   // was widened?
       ? Bytes::get_Java_u2(_bc_start+2) // yes, return wide index
       : _bc_start[1];           // no, return narrow index
   }
 
-  // Set a byte index following this bytecode.
-  // If prefixed with a wide bytecode, get a wide index.
-  void put_index(int idx) {
-      if (_pc == _was_wide)     // was widened?
-         Bytes::put_Java_u2(_bc_start+2,idx);   // yes, set wide index
-      else
-         _bc_start[1]=idx;              // no, set narrow index
+  // Get 2-byte index (getfield/putstatic/etc)
+  int get_index_big() const {
+    assert_index_size(2);
+    return Bytes::get_Java_u2(_bc_start+1);
   }
 
-  // Get 2-byte index (getfield/putstatic/etc)
-  int get_index_big() const { return Bytes::get_Java_u2(_bc_start+1); }
+  // Get 2-byte index (or 4-byte, for invokedynamic)
+  int get_index_int() const {
+    return has_giant_index() ? get_index_giant() : get_index_big();
+  }
+
+  // Get 4-byte index, for invokedynamic.
+  int get_index_giant() const {
+    assert_index_size(4);
+    return Bytes::get_native_u4(_bc_start+1);
+  }
+
+  bool has_giant_index() const { return (cur_bc() == Bytecodes::_invokedynamic); }
 
   // Get dimensions byte (multinewarray)
   int get_dimensions() const { return *(unsigned char*)(_pc-1); }
 
-  // Get unsigned index fast
-  int get_index_fast() const { return Bytes::get_native_u2(_pc-2); }
-
   // Sign-extended index byte/short, no widening
   int get_byte() const { return (int8_t)(_pc[-1]); }
   int get_short() const { return (int16_t)Bytes::get_Java_u2(_pc-2); }
@@ -225,6 +231,22 @@
   ciKlass*  get_declared_method_holder();
   int       get_method_holder_index();
   int       get_method_signature_index();
+
+ private:
+  void assert_index_size(int required_size) const {
+#ifdef ASSERT
+    int isize = instruction_size() - (is_wide() ? 1 : 0) - 1;
+    if (isize == 2 &&  cur_bc() == Bytecodes::_iinc)
+      isize = 1;
+    else if (isize <= 2)
+      ;                         // no change
+    else if (has_giant_index())
+      isize = 4;
+    else
+      isize = 2;
+    assert(isize = required_size, "wrong index size");
+#endif
+  }
 };
 
 
--- a/hotspot/src/share/vm/classfile/classLoader.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/classfile/classLoader.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1217,31 +1217,34 @@
     // valid class file.  The class loader will check everything else.
     if (strchr(buffer, '.') == NULL) {
       _compile_the_world_counter++;
-      if (_compile_the_world_counter >= CompileTheWorldStartAt && _compile_the_world_counter <= CompileTheWorldStopAt) {
-        // Construct name without extension
-        symbolHandle sym = oopFactory::new_symbol_handle(buffer, CHECK);
-        // Use loader to load and initialize class
-        klassOop ik = SystemDictionary::resolve_or_null(sym, loader, Handle(), THREAD);
-        instanceKlassHandle k (THREAD, ik);
-        if (k.not_null() && !HAS_PENDING_EXCEPTION) {
-          k->initialize(THREAD);
+      if (_compile_the_world_counter > CompileTheWorldStopAt) return;
+
+      // Construct name without extension
+      symbolHandle sym = oopFactory::new_symbol_handle(buffer, CHECK);
+      // Use loader to load and initialize class
+      klassOop ik = SystemDictionary::resolve_or_null(sym, loader, Handle(), THREAD);
+      instanceKlassHandle k (THREAD, ik);
+      if (k.not_null() && !HAS_PENDING_EXCEPTION) {
+        k->initialize(THREAD);
+      }
+      bool exception_occurred = HAS_PENDING_EXCEPTION;
+      CLEAR_PENDING_EXCEPTION;
+      if (CompileTheWorldPreloadClasses && k.not_null()) {
+        constantPoolKlass::preload_and_initialize_all_classes(k->constants(), THREAD);
+        if (HAS_PENDING_EXCEPTION) {
+          // If something went wrong in preloading we just ignore it
+          CLEAR_PENDING_EXCEPTION;
+          tty->print_cr("Preloading failed for (%d) %s", _compile_the_world_counter, buffer);
         }
-        bool exception_occurred = HAS_PENDING_EXCEPTION;
-        CLEAR_PENDING_EXCEPTION;
+      }
+
+      if (_compile_the_world_counter >= CompileTheWorldStartAt) {
         if (k.is_null() || (exception_occurred && !CompileTheWorldIgnoreInitErrors)) {
           // If something went wrong (e.g. ExceptionInInitializerError) we skip this class
           tty->print_cr("CompileTheWorld (%d) : Skipping %s", _compile_the_world_counter, buffer);
         } else {
           tty->print_cr("CompileTheWorld (%d) : %s", _compile_the_world_counter, buffer);
           // Preload all classes to get around uncommon traps
-          if (CompileTheWorldPreloadClasses) {
-            constantPoolKlass::preload_and_initialize_all_classes(k->constants(), THREAD);
-            if (HAS_PENDING_EXCEPTION) {
-              // If something went wrong in preloading we just ignore it
-              CLEAR_PENDING_EXCEPTION;
-              tty->print_cr("Preloading failed for (%d) %s", _compile_the_world_counter, buffer);
-            }
-          }
           // Iterate over all methods in class
           for (int n = 0; n < k->methods()->length(); n++) {
             methodHandle m (THREAD, methodOop(k->methods()->obj_at(n)));
@@ -1253,16 +1256,28 @@
                 CLEAR_PENDING_EXCEPTION;
                 tty->print_cr("CompileTheWorld (%d) : Skipping method: %s", _compile_the_world_counter, m->name()->as_C_string());
               }
-            if (TieredCompilation) {
-              // Clobber the first compile and force second tier compilation
-              m->clear_code();
-              CompileBroker::compile_method(m, InvocationEntryBci,
-                                            methodHandle(), 0, "CTW", THREAD);
-              if (HAS_PENDING_EXCEPTION) {
-                CLEAR_PENDING_EXCEPTION;
-                tty->print_cr("CompileTheWorld (%d) : Skipping method: %s", _compile_the_world_counter, m->name()->as_C_string());
+              if (TieredCompilation) {
+                // Clobber the first compile and force second tier compilation
+                nmethod* nm = m->code();
+                if (nm != NULL) {
+                  // Throw out the code so that the code cache doesn't fill up
+                  nm->make_not_entrant();
+                  m->clear_code();
+                }
+                CompileBroker::compile_method(m, InvocationEntryBci,
+                                              methodHandle(), 0, "CTW", THREAD);
+                if (HAS_PENDING_EXCEPTION) {
+                  CLEAR_PENDING_EXCEPTION;
+                  tty->print_cr("CompileTheWorld (%d) : Skipping method: %s", _compile_the_world_counter, m->name()->as_C_string());
+                }
               }
             }
+
+            nmethod* nm = m->code();
+            if (nm != NULL) {
+              // Throw out the code so that the code cache doesn't fill up
+              nm->make_not_entrant();
+              m->clear_code();
             }
           }
         }
--- a/hotspot/src/share/vm/classfile/javaClasses.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/classfile/javaClasses.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -2430,6 +2430,41 @@
 }
 
 
+// Support for sun_dyn_CallSiteImpl
+
+int sun_dyn_CallSiteImpl::_type_offset;
+int sun_dyn_CallSiteImpl::_target_offset;
+int sun_dyn_CallSiteImpl::_vmmethod_offset;
+
+void sun_dyn_CallSiteImpl::compute_offsets() {
+  if (!EnableInvokeDynamic)  return;
+  klassOop k = SystemDictionary::CallSiteImpl_klass();
+  if (k != NULL) {
+    compute_offset(_type_offset,   k, vmSymbols::type_name(),   vmSymbols::java_dyn_MethodType_signature(), true);
+    compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_dyn_MethodHandle_signature(), true);
+    compute_offset(_vmmethod_offset, k, vmSymbols::vmmethod_name(), vmSymbols::object_signature(), true);
+  }
+}
+
+oop sun_dyn_CallSiteImpl::type(oop site) {
+  return site->obj_field(_type_offset);
+}
+
+oop sun_dyn_CallSiteImpl::target(oop site) {
+  return site->obj_field(_target_offset);
+}
+
+void sun_dyn_CallSiteImpl::set_target(oop site, oop target) {
+  site->obj_field_put(_target_offset, target);
+}
+
+oop sun_dyn_CallSiteImpl::vmmethod(oop site) {
+  return site->obj_field(_vmmethod_offset);
+}
+
+void sun_dyn_CallSiteImpl::set_vmmethod(oop site, oop ref) {
+  site->obj_field_put(_vmmethod_offset, ref);
+}
 
 
 // Support for java_security_AccessControlContext
@@ -2775,6 +2810,9 @@
     java_dyn_MethodType::compute_offsets();
     java_dyn_MethodTypeForm::compute_offsets();
   }
+  if (EnableInvokeDynamic) {
+    sun_dyn_CallSiteImpl::compute_offsets();
+  }
   java_security_AccessControlContext::compute_offsets();
   // Initialize reflection classes. The layouts of these classes
   // changed with the new reflection implementation in JDK 1.4, and
--- a/hotspot/src/share/vm/classfile/javaClasses.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/classfile/javaClasses.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1060,6 +1060,33 @@
 };
 
 
+// Interface to sun.dyn.CallSiteImpl objects
+
+class sun_dyn_CallSiteImpl: AllStatic {
+  friend class JavaClasses;
+
+private:
+  static int _type_offset;
+  static int _target_offset;
+  static int _vmmethod_offset;
+
+  static void compute_offsets();
+
+public:
+  // Accessors
+  static oop            type(oop site);
+
+  static oop            target(oop site);
+  static void       set_target(oop site, oop target);
+
+  static oop            vmmethod(oop site);
+  static void       set_vmmethod(oop site, oop ref);
+
+  // Accessors for code generation:
+  static int target_offset_in_bytes()           { return _target_offset; }
+  static int type_offset_in_bytes()             { return _type_offset; }
+  static int vmmethod_offset_in_bytes()         { return _vmmethod_offset; }
+};
 
 
 // Interface to java.security.AccessControlContext objects
--- a/hotspot/src/share/vm/classfile/systemDictionary.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1951,6 +1951,16 @@
     // Skip the rest of the method handle classes, if MethodHandle is not loaded.
     scan = WKID(meth_group_end+1);
   }
+  WKID indy_group_start = WK_KLASS_ENUM_NAME(Linkage_klass);
+  WKID indy_group_end   = WK_KLASS_ENUM_NAME(Dynamic_klass);
+  initialize_wk_klasses_until(indy_group_start, scan, CHECK);
+  if (EnableInvokeDynamic) {
+    initialize_wk_klasses_through(indy_group_start, scan, CHECK);
+  }
+  if (_well_known_klasses[indy_group_start] == NULL) {
+    // Skip the rest of the dynamic typing classes, if Linkage is not loaded.
+    scan = WKID(indy_group_end+1);
+  }
 
   initialize_wk_klasses_until(WKID_LIMIT, scan, CHECK);
 
@@ -2367,6 +2377,76 @@
 }
 
 
+// Ask Java code to find or construct a java.dyn.CallSite for the given
+// name and signature, as interpreted relative to the given class loader.
+Handle SystemDictionary::make_dynamic_call_site(KlassHandle caller,
+                                                int caller_method_idnum,
+                                                int caller_bci,
+                                                symbolHandle name,
+                                                methodHandle mh_invdyn,
+                                                TRAPS) {
+  Handle empty;
+  // call sun.dyn.CallSiteImpl::makeSite(caller, name, mtype, cmid, cbci)
+  oop name_str_oop = StringTable::intern(name(), CHECK_(empty)); // not a handle!
+  JavaCallArguments args(Handle(THREAD, caller->java_mirror()));
+  args.push_oop(name_str_oop);
+  args.push_oop(mh_invdyn->method_handle_type());
+  args.push_int(caller_method_idnum);
+  args.push_int(caller_bci);
+  JavaValue result(T_OBJECT);
+  JavaCalls::call_static(&result,
+                         SystemDictionary::CallSiteImpl_klass(),
+                         vmSymbols::makeSite_name(), vmSymbols::makeSite_signature(),
+                         &args, CHECK_(empty));
+  oop call_site_oop = (oop) result.get_jobject();
+  sun_dyn_CallSiteImpl::set_vmmethod(call_site_oop, mh_invdyn());
+  if (TraceMethodHandles) {
+    tty->print_cr("Linked invokedynamic bci=%d site="INTPTR_FORMAT":", caller_bci, call_site_oop);
+    call_site_oop->print();
+    tty->cr();
+  }
+  return call_site_oop;
+}
+
+Handle SystemDictionary::find_bootstrap_method(KlassHandle caller,
+                                               KlassHandle search_bootstrap_klass,
+                                               TRAPS) {
+  Handle empty;
+  if (!caller->oop_is_instance())  return empty;
+
+  instanceKlassHandle ik(THREAD, caller());
+
+  if (ik->bootstrap_method() != NULL) {
+    return Handle(THREAD, ik->bootstrap_method());
+  }
+
+  // call java.dyn.Linkage::findBootstrapMethod(caller, sbk)
+  JavaCallArguments args(Handle(THREAD, ik->java_mirror()));
+  if (search_bootstrap_klass.is_null())
+    args.push_oop(Handle());
+  else
+    args.push_oop(search_bootstrap_klass->java_mirror());
+  JavaValue result(T_OBJECT);
+  JavaCalls::call_static(&result,
+                         SystemDictionary::Linkage_klass(),
+                         vmSymbols::findBootstrapMethod_name(),
+                         vmSymbols::findBootstrapMethod_signature(),
+                         &args, CHECK_(empty));
+  oop boot_method_oop = (oop) result.get_jobject();
+
+  if (boot_method_oop != NULL) {
+    // probably no race conditions, but let's be careful:
+    if (Atomic::cmpxchg_ptr(boot_method_oop, ik->adr_bootstrap_method(), NULL) == NULL)
+      ik->set_bootstrap_method(boot_method_oop);
+    else
+      boot_method_oop = ik->bootstrap_method();
+  } else {
+    boot_method_oop = ik->bootstrap_method();
+  }
+
+  return Handle(THREAD, boot_method_oop);
+}
+
 // Since the identity hash code for symbols changes when the symbols are
 // moved from the regular perm gen (hash in the mark word) to the shared
 // spaces (hash is the address), the classes loaded into the dictionary
--- a/hotspot/src/share/vm/classfile/systemDictionary.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/classfile/systemDictionary.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -142,6 +142,12 @@
   template(MethodType_klass,             java_dyn_MethodType,            Opt) \
   template(MethodTypeForm_klass,         java_dyn_MethodTypeForm,        Opt) \
   template(WrongMethodTypeException_klass, java_dyn_WrongMethodTypeException, Opt) \
+  template(Linkage_klass,                java_dyn_Linkage,               Opt) \
+  template(CallSite_klass,               java_dyn_CallSite,              Opt) \
+  template(CallSiteImpl_klass,           sun_dyn_CallSiteImpl,     Opt) \
+  template(Dynamic_klass,                java_dyn_Dynamic,               Opt) \
+  /* Note: MethodHandle must be first, and Dynamic last in group */           \
+                                                                              \
   template(vector_klass,                 java_util_Vector,               Pre) \
   template(hashtable_klass,              java_util_Hashtable,            Pre) \
   template(stringBuffer_klass,           java_lang_StringBuffer,         Pre) \
@@ -466,6 +472,21 @@
                                               Handle class_loader,
                                               Handle protection_domain,
                                               TRAPS);
+  // ask Java to create a dynamic call site, while linking an invokedynamic op
+  static Handle    make_dynamic_call_site(KlassHandle caller,
+                                          int caller_method_idnum,
+                                          int caller_bci,
+                                          symbolHandle name,
+                                          methodHandle mh_invoke,
+                                          TRAPS);
+
+  // coordinate with Java about bootstrap methods
+  static Handle    find_bootstrap_method(KlassHandle caller,
+                                         // This argument is non-null only when a
+                                         // classfile attribute has been found:
+                                         KlassHandle search_bootstrap_klass,
+                                         TRAPS);
+
   // Utility for printing loader "name" as part of tracing constraints
   static const char* loader_name(oop loader) {
     return ((loader) == NULL ? "<bootloader>" :
--- a/hotspot/src/share/vm/classfile/verifier.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/classfile/verifier.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1174,6 +1174,7 @@
             &this_uninit, return_type, cp, CHECK_VERIFY(this));
           no_control_flow = false; break;
         case Bytecodes::_invokeinterface :
+        case Bytecodes::_invokedynamic :
           verify_invoke_instructions(
             &bcs, code_length, &current_frame,
             &this_uninit, return_type, cp, CHECK_VERIFY(this));
@@ -1895,12 +1896,23 @@
   Bytecodes::Code opcode = bcs->code();
   unsigned int types = (opcode == Bytecodes::_invokeinterface
                                 ? 1 << JVM_CONSTANT_InterfaceMethodref
+                      : opcode == Bytecodes::_invokedynamic
+                                ? 1 << JVM_CONSTANT_NameAndType
                                 : 1 << JVM_CONSTANT_Methodref);
   verify_cp_type(index, cp, types, CHECK_VERIFY(this));
 
   // Get method name and signature
-  symbolHandle method_name(THREAD, cp->name_ref_at(index));
-  symbolHandle method_sig(THREAD, cp->signature_ref_at(index));
+  symbolHandle method_name;
+  symbolHandle method_sig;
+  if (opcode == Bytecodes::_invokedynamic) {
+    int name_index = cp->name_ref_index_at(index);
+    int sig_index  = cp->signature_ref_index_at(index);
+    method_name = symbolHandle(THREAD, cp->symbol_at(name_index));
+    method_sig  = symbolHandle(THREAD, cp->symbol_at(sig_index));
+  } else {
+    method_name = symbolHandle(THREAD, cp->name_ref_at(index));
+    method_sig  = symbolHandle(THREAD, cp->signature_ref_at(index));
+  }
 
   if (!SignatureVerifier::is_valid_method_signature(method_sig)) {
     class_format_error(
@@ -1910,8 +1922,17 @@
   }
 
   // Get referenced class type
-  VerificationType ref_class_type = cp_ref_index_to_type(
-    index, cp, CHECK_VERIFY(this));
+  VerificationType ref_class_type;
+  if (opcode == Bytecodes::_invokedynamic) {
+    if (!EnableInvokeDynamic) {
+      class_format_error(
+        "invokedynamic instructions not enabled on this JVM",
+        _klass->external_name());
+      return;
+    }
+  } else {
+    ref_class_type = cp_ref_index_to_type(index, cp, CHECK_VERIFY(this));
+  }
 
   // For a small signature length, we just allocate 128 bytes instead
   // of parsing the signature once to find its size.
@@ -1970,6 +1991,14 @@
     }
   }
 
+  if (opcode == Bytecodes::_invokedynamic) {
+    address bcp = bcs->bcp();
+    if (*(bcp+3) != 0 || *(bcp+4) != 0) {
+      verify_error(bci, "Third and fourth operand bytes of invokedynamic must be zero");
+      return;
+    }
+  }
+
   if (method_name->byte_at(0) == '<') {
     // Make sure <init> can only be invoked by invokespecial
     if (opcode != Bytecodes::_invokespecial ||
@@ -1994,7 +2023,8 @@
     current_frame->pop_stack(sig_types[i], CHECK_VERIFY(this));
   }
   // Check objectref on operand stack
-  if (opcode != Bytecodes::_invokestatic) {
+  if (opcode != Bytecodes::_invokestatic &&
+      opcode != Bytecodes::_invokedynamic) {
     if (method_name() == vmSymbols::object_initializer_name()) {  // <init> method
       verify_invoke_init(bcs, ref_class_type, current_frame,
         code_length, this_uninit, cp, CHECK_VERIFY(this));
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -217,6 +217,9 @@
   template(base_name,                                 "base")                                     \
                                                                                                   \
   /* Support for JSR 292 & invokedynamic (JDK 1.7 and above) */                                   \
+  template(java_dyn_Dynamic,                          "java/dyn/Dynamic")                         \
+  template(java_dyn_Linkage,                          "java/dyn/Linkage")                         \
+  template(java_dyn_CallSite,                         "java/dyn/CallSite")                        \
   template(java_dyn_MethodHandle,                     "java/dyn/MethodHandle")                    \
   template(java_dyn_MethodType,                       "java/dyn/MethodType")                      \
   template(java_dyn_WrongMethodTypeException,         "java/dyn/WrongMethodTypeException")        \
@@ -230,8 +233,13 @@
   template(sun_dyn_AdapterMethodHandle,               "sun/dyn/AdapterMethodHandle")              \
   template(sun_dyn_BoundMethodHandle,                 "sun/dyn/BoundMethodHandle")                \
   template(sun_dyn_DirectMethodHandle,                "sun/dyn/DirectMethodHandle")               \
+  template(sun_dyn_CallSiteImpl,                      "sun/dyn/CallSiteImpl")                     \
   template(makeImpl_name,                             "makeImpl") /*MethodType::makeImpl*/        \
   template(makeImpl_signature,    "(Ljava/lang/Class;[Ljava/lang/Class;ZZ)Ljava/dyn/MethodType;") \
+  template(makeSite_name,                             "makeSite") /*CallSiteImpl::makeImpl*/       \
+  template(makeSite_signature,    "(Ljava/lang/Class;Ljava/lang/String;Ljava/dyn/MethodType;II)Ljava/dyn/CallSite;") \
+  template(findBootstrapMethod_name,                  "findBootstrapMethod")                      \
+  template(findBootstrapMethod_signature, "(Ljava/lang/Class;Ljava/lang/Class;)Ljava/dyn/MethodHandle;") \
   NOT_LP64(  do_alias(machine_word_signature,         int_signature)  )                           \
   LP64_ONLY( do_alias(machine_word_signature,         long_signature) )                           \
                                                                                                   \
@@ -308,9 +316,11 @@
   template(bitCount_name,                             "bitCount")                                 \
   template(profile_name,                              "profile")                                  \
   template(equals_name,                               "equals")                                   \
+  template(target_name,                               "target")                                   \
   template(toString_name,                             "toString")                                 \
   template(values_name,                               "values")                                   \
   template(receiver_name,                             "receiver")                                 \
+  template(vmmethod_name,                             "vmmethod")                                 \
   template(vmtarget_name,                             "vmtarget")                                 \
   template(vmentry_name,                              "vmentry")                                  \
   template(vmslots_name,                              "vmslots")                                  \
--- a/hotspot/src/share/vm/includeDB_compiler1	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/includeDB_compiler1	Wed Jul 05 16:52:18 2017 +0200
@@ -270,6 +270,7 @@
 
 c1_LinearScan.cpp                       bitMap.inline.hpp
 c1_LinearScan.cpp                       c1_CFGPrinter.hpp
+c1_LinearScan.cpp                       c1_CodeStubs.hpp
 c1_LinearScan.cpp                       c1_Compilation.hpp
 c1_LinearScan.cpp                       c1_FrameMap.hpp
 c1_LinearScan.cpp                       c1_IR.hpp
--- a/hotspot/src/share/vm/includeDB_core	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/includeDB_core	Wed Jul 05 16:52:18 2017 +0200
@@ -4102,6 +4102,7 @@
 templateTable_<arch_model>.cpp          interpreterRuntime.hpp
 templateTable_<arch_model>.cpp          interpreter.hpp
 templateTable_<arch_model>.cpp          methodDataOop.hpp
+templateTable_<arch_model>.cpp          methodHandles.hpp
 templateTable_<arch_model>.cpp          objArrayKlass.hpp
 templateTable_<arch_model>.cpp          oop.inline.hpp
 templateTable_<arch_model>.cpp          sharedRuntime.hpp
--- a/hotspot/src/share/vm/includeDB_gc_parallel	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/includeDB_gc_parallel	Wed Jul 05 16:52:18 2017 +0200
@@ -42,6 +42,12 @@
 constantPoolKlass.cpp                   psScavenge.inline.hpp
 constantPoolKlass.cpp                   parOopClosures.inline.hpp
 
+cpCacheKlass.cpp                        cardTableRS.hpp
+cpCacheKlass.cpp                        oop.pcgc.inline.hpp
+cpCacheKlass.cpp                        psPromotionManager.inline.hpp
+cpCacheKlass.cpp                        psScavenge.inline.hpp
+cpCacheKlass.cpp                        parOopClosures.inline.hpp
+
 genCollectedHeap.cpp                    concurrentMarkSweepThread.hpp
 genCollectedHeap.cpp                    vmCMSOperations.hpp
 
--- a/hotspot/src/share/vm/includeDB_jvmti	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/includeDB_jvmti	Wed Jul 05 16:52:18 2017 +0200
@@ -28,6 +28,7 @@
 jvmtiClassFileReconstituter.cpp         bytes_<arch>.hpp
 jvmtiClassFileReconstituter.cpp         jvmtiClassFileReconstituter.hpp
 jvmtiClassFileReconstituter.cpp         symbolTable.hpp
+jvmtiClassFileReconstituter.cpp         signature.hpp
 
 jvmtiClassFileReconstituter.hpp         jvmtiEnv.hpp
 
--- a/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -217,6 +217,73 @@
             stackElementSize()) + tag_offset_in_bytes();
   }
 
+  // access to stacked values according to type:
+  static oop* oop_addr_in_slot(intptr_t* slot_addr) {
+    return (oop*) slot_addr;
+  }
+  static jint* int_addr_in_slot(intptr_t* slot_addr) {
+    if ((int) sizeof(jint) < wordSize && !Bytes::is_Java_byte_ordering_different())
+      // big-endian LP64
+      return (jint*)(slot_addr + 1) - 1;
+    else
+      return (jint*) slot_addr;
+  }
+  static jlong long_in_slot(intptr_t* slot_addr) {
+    if (sizeof(intptr_t) >= sizeof(jlong)) {
+      return *(jlong*) slot_addr;
+    } else if (!TaggedStackInterpreter) {
+      return Bytes::get_native_u8((address)slot_addr);
+    } else {
+      assert(sizeof(intptr_t) * 2 == sizeof(jlong), "ILP32");
+      // assemble the long in memory order (not arithmetic order)
+      union { jlong j; jint i[2]; } u;
+      u.i[0] = (jint) slot_addr[0*stackElementSize()];
+      u.i[1] = (jint) slot_addr[1*stackElementSize()];
+      return u.j;
+    }
+  }
+  static void set_long_in_slot(intptr_t* slot_addr, jlong value) {
+    if (sizeof(intptr_t) >= sizeof(jlong)) {
+      *(jlong*) slot_addr = value;
+    } else if (!TaggedStackInterpreter) {
+      Bytes::put_native_u8((address)slot_addr, value);
+    } else {
+      assert(sizeof(intptr_t) * 2 == sizeof(jlong), "ILP32");
+      // assemble the long in memory order (not arithmetic order)
+      union { jlong j; jint i[2]; } u;
+      u.j = value;
+      slot_addr[0*stackElementSize()] = (intptr_t) u.i[0];
+      slot_addr[1*stackElementSize()] = (intptr_t) u.i[1];
+    }
+  }
+  static void get_jvalue_in_slot(intptr_t* slot_addr, BasicType type, jvalue* value) {
+    switch (type) {
+    case T_BOOLEAN: value->z = *int_addr_in_slot(slot_addr);            break;
+    case T_CHAR:    value->c = *int_addr_in_slot(slot_addr);            break;
+    case T_BYTE:    value->b = *int_addr_in_slot(slot_addr);            break;
+    case T_SHORT:   value->s = *int_addr_in_slot(slot_addr);            break;
+    case T_INT:     value->i = *int_addr_in_slot(slot_addr);            break;
+    case T_LONG:    value->j = long_in_slot(slot_addr);                 break;
+    case T_FLOAT:   value->f = *(jfloat*)int_addr_in_slot(slot_addr);   break;
+    case T_DOUBLE:  value->d = jdouble_cast(long_in_slot(slot_addr));   break;
+    case T_OBJECT:  value->l = (jobject)*oop_addr_in_slot(slot_addr);   break;
+    default:        ShouldNotReachHere();
+    }
+  }
+  static void set_jvalue_in_slot(intptr_t* slot_addr, BasicType type, jvalue* value) {
+    switch (type) {
+    case T_BOOLEAN: *int_addr_in_slot(slot_addr) = (value->z != 0);     break;
+    case T_CHAR:    *int_addr_in_slot(slot_addr) = value->c;            break;
+    case T_BYTE:    *int_addr_in_slot(slot_addr) = value->b;            break;
+    case T_SHORT:   *int_addr_in_slot(slot_addr) = value->s;            break;
+    case T_INT:     *int_addr_in_slot(slot_addr) = value->i;            break;
+    case T_LONG:    set_long_in_slot(slot_addr, value->j);              break;
+    case T_FLOAT:   *(jfloat*)int_addr_in_slot(slot_addr) = value->f;   break;
+    case T_DOUBLE:  set_long_in_slot(slot_addr, jlong_cast(value->d));  break;
+    case T_OBJECT:  *oop_addr_in_slot(slot_addr) = (oop) value->l;      break;
+    default:        ShouldNotReachHere();
+    }
+  }
 };
 
 //------------------------------------------------------------------------------------------------------------------------
--- a/hotspot/src/share/vm/interpreter/bytecode.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecode.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -34,12 +34,6 @@
 }
 
 
-void Bytecode::set_fast_index(int i) {
-  assert(0 <= i && i < 0x10000, "illegal index value");
-  Bytes::put_native_u2(addr_at(1), (jushort)i);
-}
-
-
 bool Bytecode::check_must_rewrite() const {
   assert(Bytecodes::can_rewrite(code()), "post-check only");
 
@@ -118,7 +112,12 @@
 
 
 int Bytecode_invoke::index() const {
-  return Bytes::get_Java_u2(bcp() + 1);
+  // Note:  Rewriter::rewrite changes the Java_u2 of an invokedynamic to a native_u4,
+  // at the same time it allocates per-call-site CP cache entries.
+  if (has_giant_index())
+    return Bytes::get_native_u4(bcp() + 1);
+  else
+    return Bytes::get_Java_u2(bcp() + 1);
 }
 
 
--- a/hotspot/src/share/vm/interpreter/bytecode.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecode.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -65,14 +65,6 @@
 // The base class for different kinds of bytecode abstractions.
 // Provides the primitive operations to manipulate code relative
 // to an objects 'this' pointer.
-//
-// Note: Even though it seems that the fast_index & set_fast_index
-//       functions are machine specific, they're not. They only use
-//       the natural way to store a 16bit index on a given machine,
-//       independent of the particular byte ordering. Since all other
-//       places in the system that refer to these indices use the
-//       same method (the natural byte ordering on the platform)
-//       this will always work and be machine-independent).
 
 class Bytecode: public ThisRelativeObj {
  protected:
@@ -83,24 +75,40 @@
   // Attributes
   address bcp() const                            { return addr_at(0); }
   address next_bcp() const                       { return addr_at(0) + Bytecodes::length_at(bcp()); }
+  int instruction_size() const                   { return Bytecodes::length_at(bcp()); }
 
   Bytecodes::Code code() const                   { return Bytecodes::code_at(addr_at(0)); }
   Bytecodes::Code java_code() const              { return Bytecodes::java_code(code()); }
   bool must_rewrite() const                      { return Bytecodes::can_rewrite(code()) && check_must_rewrite(); }
   bool is_active_breakpoint() const              { return Bytecodes::is_active_breakpoint_at(bcp()); }
 
-  int     one_byte_index() const                 { return byte_at(1); }
-  int     two_byte_index() const                 { return (byte_at(1) << 8) + byte_at(2); }
+  int     one_byte_index() const                 { assert_index_size(1); return byte_at(1); }
+  int     two_byte_index() const                 { assert_index_size(2); return (byte_at(1) << 8) + byte_at(2); }
+
   int     offset() const                         { return (two_byte_index() << 16) >> 16; }
   address destination() const                    { return bcp() + offset(); }
-  int     fast_index() const                     { return Bytes::get_native_u2(addr_at(1)); }
 
   // Attribute modification
   void    set_code(Bytecodes::Code code);
-  void    set_fast_index(int i);
 
   // Creation
   inline friend Bytecode* Bytecode_at(address bcp);
+
+ private:
+  void assert_index_size(int required_size) const {
+#ifdef ASSERT
+    int isize = instruction_size() - 1;
+    if (isize == 2 && code() == Bytecodes::_iinc)
+      isize = 1;
+    else if (isize <= 2)
+      ;                         // no change
+    else if (code() == Bytecodes::_invokedynamic)
+      isize = 4;
+    else
+      isize = 2;
+    assert(isize = required_size, "wrong index size");
+#endif
+  }
 };
 
 inline Bytecode* Bytecode_at(address bcp) {
@@ -195,6 +203,9 @@
   bool is_invokevirtual() const                  { return adjusted_invoke_code() == Bytecodes::_invokevirtual; }
   bool is_invokestatic() const                   { return adjusted_invoke_code() == Bytecodes::_invokestatic; }
   bool is_invokespecial() const                  { return adjusted_invoke_code() == Bytecodes::_invokespecial; }
+  bool is_invokedynamic() const                  { return adjusted_invoke_code() == Bytecodes::_invokedynamic; }
+
+  bool has_giant_index() const                   { return is_invokedynamic(); }
 
   bool is_valid() const                          { return is_invokeinterface() ||
                                                           is_invokevirtual()   ||
--- a/hotspot/src/share/vm/interpreter/bytecodeStream.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeStream.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -109,6 +109,7 @@
 
   Bytecodes::Code code() const                   { return _code; }
   bool            is_wide() const                { return _is_wide; }
+  int             instruction_size() const       { return (_next_bci - _bci); }
   bool            is_last_bytecode() const       { return _next_bci >= _end_bci; }
 
   address         bcp() const                    { return method()->code_base() + _bci; }
@@ -122,8 +123,29 @@
   int             dest_w() const                 { return bci() + (int  )Bytes::get_Java_u4(bcp() + 1); }
 
   // Unsigned indices, widening
-  int             get_index() const              { return (is_wide()) ? Bytes::get_Java_u2(bcp() + 2) : bcp()[1]; }
-  int             get_index_big() const          { return (int)Bytes::get_Java_u2(bcp() + 1);  }
+  int             get_index() const              { assert_index_size(is_wide() ? 2 : 1);
+                                                   return (is_wide()) ? Bytes::get_Java_u2(bcp() + 2) : bcp()[1]; }
+  int             get_index_big() const          { assert_index_size(2);
+                                                   return (int)Bytes::get_Java_u2(bcp() + 1);  }
+  int             get_index_int() const          { return has_giant_index() ? get_index_giant() : get_index_big(); }
+  int             get_index_giant() const        { assert_index_size(4); return Bytes::get_native_u4(bcp() + 1); }
+  int             has_giant_index() const        { return (code() == Bytecodes::_invokedynamic); }
+
+ private:
+  void assert_index_size(int required_size) const {
+#ifdef ASSERT
+    int isize = instruction_size() - (int)_is_wide - 1;
+    if (isize == 2 && code() == Bytecodes::_iinc)
+      isize = 1;
+    else if (isize <= 2)
+      ;                         // no change
+    else if (has_giant_index())
+      isize = 4;
+    else
+      isize = 2;
+    assert(isize = required_size, "wrong index size");
+#endif
+  }
 };
 
 // In BytecodeStream, non-java bytecodes will be translated into the
--- a/hotspot/src/share/vm/interpreter/bytecodeTracer.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeTracer.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -48,12 +48,15 @@
 
   int       get_index()              { return *(address)_next_pc++; }
   int       get_big_index()          { int i=Bytes::get_Java_u2(_next_pc); _next_pc+=2; return i; }
+  int       get_giant_index()        { int i=Bytes::get_native_u4(_next_pc); _next_pc+=4; return i; }
   int       get_index_special()      { return (is_wide()) ? get_big_index() : get_index(); }
   methodOop method()                 { return _current_method; }
   bool      is_wide()                { return _is_wide; }
 
 
+  bool      check_index(int i, bool in_cp_cache, int& cp_index, outputStream* st = tty);
   void      print_constant(int i, outputStream* st = tty);
+  void      print_field_or_method(int i, outputStream* st = tty);
   void      print_attributes(Bytecodes::Code code, int bci, outputStream* st = tty);
   void      bytecode_epilog(int bci, outputStream* st = tty);
 
@@ -182,7 +185,71 @@
   }
 }
 
+bool BytecodePrinter::check_index(int i, bool in_cp_cache, int& cp_index, outputStream* st) {
+  constantPoolOop constants = method()->constants();
+  int ilimit = constants->length(), climit = 0;
+
+  constantPoolCacheOop cache = NULL;
+  if (in_cp_cache) {
+    cache = constants->cache();
+    if (cache != NULL) {
+      //climit = cache->length();  // %%% private!
+      size_t size = cache->size() * HeapWordSize;
+      size -= sizeof(constantPoolCacheOopDesc);
+      size /= sizeof(ConstantPoolCacheEntry);
+      climit = (int) size;
+    }
+  }
+
+  if (in_cp_cache && constantPoolCacheOopDesc::is_secondary_index(i)) {
+    i = constantPoolCacheOopDesc::decode_secondary_index(i);
+    st->print(" secondary cache[%d] of", i);
+    if (i >= 0 && i < climit) {
+      if (!cache->entry_at(i)->is_secondary_entry()) {
+        st->print_cr(" not secondary entry?", i);
+        return false;
+      }
+      i = cache->entry_at(i)->main_entry_index();
+      goto check_cache_index;
+    } else {
+      st->print_cr(" not in cache[*]?", i);
+      return false;
+    }
+  }
+
+  if (cache != NULL) {
+    i = Bytes::swap_u2(i);
+    if (WizardMode)  st->print(" (swap=%d)", i);
+    goto check_cache_index;
+  }
+
+ check_cp_index:
+  if (i >= 0 && i < ilimit) {
+    if (WizardMode)  st->print(" cp[%d]", i);
+    cp_index = i;
+    return true;
+  }
+
+  st->print_cr(" CP[%d] not in CP", i);
+  return false;
+
+ check_cache_index:
+  if (i >= 0 && i < climit) {
+    if (cache->entry_at(i)->is_secondary_entry()) {
+      st->print_cr(" secondary entry?");
+      return false;
+    }
+    i = cache->entry_at(i)->constant_pool_index();
+    goto check_cp_index;
+  }
+  st->print_cr(" not in CP[*]?", i);
+  return false;
+}
+
 void BytecodePrinter::print_constant(int i, outputStream* st) {
+  int orig_i = i;
+  if (!check_index(orig_i, false, i, st))  return;
+
   constantPoolOop constants = method()->constants();
   constantTag tag = constants->tag_at(i);
 
@@ -203,7 +270,31 @@
     st->print_cr(" %s", constants->resolved_klass_at(i)->klass_part()->external_name());
   } else if (tag.is_unresolved_klass()) {
     st->print_cr(" <unresolved klass at %d>", i);
-  } else ShouldNotReachHere();
+  } else {
+    st->print_cr(" bad tag=%d at %d", tag.value(), i);
+  }
+}
+
+void BytecodePrinter::print_field_or_method(int i, outputStream* st) {
+  int orig_i = i;
+  if (!check_index(orig_i, true, i, st))  return;
+
+  constantPoolOop constants = method()->constants();
+  constantTag tag = constants->tag_at(i);
+
+  switch (tag.value()) {
+  case JVM_CONSTANT_InterfaceMethodref:
+  case JVM_CONSTANT_Methodref:
+  case JVM_CONSTANT_Fieldref:
+    break;
+  default:
+    st->print_cr(" bad tag=%d at %d", tag.value(), i);
+    return;
+  }
+
+  symbolOop name = constants->name_ref_at(orig_i);
+  symbolOop signature = constants->signature_ref_at(orig_i);
+  st->print_cr(" %d <%s> <%s> ", i, name->as_C_string(), signature->as_C_string());
 }
 
 
@@ -354,36 +445,28 @@
     case Bytecodes::_putstatic:
     case Bytecodes::_getstatic:
     case Bytecodes::_putfield:
-    case Bytecodes::_getfield: {
-        int i = get_big_index();
-        constantPoolOop constants = method()->constants();
-        symbolOop field = constants->name_ref_at(i);
-        st->print_cr(" %d <%s>", i, field->as_C_string());
-      }
+    case Bytecodes::_getfield:
+      print_field_or_method(get_big_index(), st);
       break;
 
     case Bytecodes::_invokevirtual:
     case Bytecodes::_invokespecial:
     case Bytecodes::_invokestatic:
-      { int i = get_big_index();
-        constantPoolOop constants = method()->constants();
-        symbolOop name = constants->name_ref_at(i);
-        symbolOop signature = constants->signature_ref_at(i);
-        st->print_cr(" %d <%s> <%s> ", i, name->as_C_string(), signature->as_C_string());
-      }
+      print_field_or_method(get_big_index(), st);
       break;
 
     case Bytecodes::_invokeinterface:
       { int i = get_big_index();
         int n = get_index();
-        get_index();
-        constantPoolOop constants = method()->constants();
-        symbolOop name = constants->name_ref_at(i);
-        symbolOop signature = constants->signature_ref_at(i);
-        st->print_cr(" %d <%s> <%s> %d", i, name->as_C_string(), signature->as_C_string(), n);
+        get_index();            // ignore zero byte
+        print_field_or_method(i, st);
       }
       break;
 
+    case Bytecodes::_invokedynamic:
+      print_field_or_method(get_giant_index(), st);
+      break;
+
     case Bytecodes::_new:
     case Bytecodes::_checkcast:
     case Bytecodes::_instanceof:
--- a/hotspot/src/share/vm/interpreter/bytecodes.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodes.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -357,7 +357,7 @@
   def(_invokespecial       , "invokespecial"       , "bjj"  , NULL    , T_ILLEGAL, -1, true);
   def(_invokestatic        , "invokestatic"        , "bjj"  , NULL    , T_ILLEGAL,  0, true);
   def(_invokeinterface     , "invokeinterface"     , "bjj__", NULL    , T_ILLEGAL, -1, true);
-  def(_xxxunusedxxx        , "xxxunusedxxx"        , NULL   , NULL    , T_VOID   ,  0, false);
+  def(_invokedynamic       , "invokedynamic"       , "bjjjj", NULL    , T_ILLEGAL, -1, true );
   def(_new                 , "new"                 , "bii"  , NULL    , T_OBJECT ,  1, true );
   def(_newarray            , "newarray"            , "bc"   , NULL    , T_OBJECT ,  0, true );
   def(_anewarray           , "anewarray"           , "bii"  , NULL    , T_OBJECT ,  0, true );
--- a/hotspot/src/share/vm/interpreter/bytecodes.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodes.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -218,7 +218,7 @@
     _invokespecial        = 183, // 0xb7
     _invokestatic         = 184, // 0xb8
     _invokeinterface      = 185, // 0xb9
-    _xxxunusedxxx         = 186, // 0xba
+    _invokedynamic        = 186, // 0xba     // if EnableInvokeDynamic
     _new                  = 187, // 0xbb
     _newarray             = 188, // 0xbc
     _anewarray            = 189, // 0xbd
--- a/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -681,6 +681,133 @@
 IRT_END
 
 
+// First time execution:  Resolve symbols, create a permanent CallSiteImpl object.
+IRT_ENTRY(void, InterpreterRuntime::resolve_invokedynamic(JavaThread* thread)) {
+  ResourceMark rm(thread);
+
+  assert(EnableInvokeDynamic, "");
+
+  const Bytecodes::Code bytecode = Bytecodes::_invokedynamic;
+
+  methodHandle caller_method(thread, method(thread));
+
+  // first determine if there is a bootstrap method
+  {
+    KlassHandle caller_klass(thread, caller_method->method_holder());
+    Handle bootm = SystemDictionary::find_bootstrap_method(caller_klass, KlassHandle(), CHECK);
+    if (bootm.is_null()) {
+      // If there is no bootstrap method, throw IncompatibleClassChangeError.
+      // This is a valid generic error type for resolution (JLS 12.3.3).
+      char buf[200];
+      jio_snprintf(buf, sizeof(buf), "Class %s has not declared a bootstrap method for invokedynamic",
+                   (Klass::cast(caller_klass()))->external_name());
+      THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
+    }
+  }
+
+  constantPoolHandle pool(thread, caller_method->constants());
+  pool->set_invokedynamic();    // mark header to flag active call sites
+
+  int raw_index = four_byte_index(thread);
+  assert(constantPoolCacheOopDesc::is_secondary_index(raw_index), "invokedynamic indexes marked specially");
+
+  // there are two CPC entries that are of interest:
+  int site_index = constantPoolCacheOopDesc::decode_secondary_index(raw_index);
+  int main_index = pool->cache()->entry_at(site_index)->main_entry_index();
+  // and there is one CP entry, a NameAndType:
+  int nt_index = pool->map_instruction_operand_to_index(raw_index);
+
+  // first resolve the signature to a MH.invoke methodOop
+  if (!pool->cache()->entry_at(main_index)->is_resolved(bytecode)) {
+    JvmtiHideSingleStepping jhss(thread);
+    CallInfo info;
+    LinkResolver::resolve_invoke(info, Handle(), pool,
+                                 raw_index, bytecode, CHECK);
+    // The main entry corresponds to a JVM_CONSTANT_NameAndType, and serves
+    // as a common reference point for all invokedynamic call sites with
+    // that exact call descriptor.  We will link it in the CP cache exactly
+    // as if it were an invokevirtual of MethodHandle.invoke.
+    pool->cache()->entry_at(main_index)->set_method(
+      bytecode,
+      info.resolved_method(),
+      info.vtable_index());
+    assert(pool->cache()->entry_at(main_index)->is_vfinal(), "f2 must be a methodOop");
+  }
+
+  // The method (f2 entry) of the main entry is the MH.invoke for the
+  // invokedynamic target call signature.
+  intptr_t f2_value = pool->cache()->entry_at(main_index)->f2();
+  methodHandle mh_invdyn(THREAD, (methodOop) f2_value);
+  assert(mh_invdyn.not_null() && mh_invdyn->is_method() && mh_invdyn->is_method_handle_invoke(),
+         "correct result from LinkResolver::resolve_invokedynamic");
+
+  symbolHandle call_site_name(THREAD, pool->nt_name_ref_at(nt_index));
+  Handle call_site
+    = SystemDictionary::make_dynamic_call_site(caller_method->method_holder(),
+                                               caller_method->method_idnum(),
+                                               caller_method->bci_from(bcp(thread)),
+                                               call_site_name,
+                                               mh_invdyn,
+                                               CHECK);
+
+  // In the secondary entry, the f1 field is the call site, and the f2 (index)
+  // field is some data about the invoke site.
+  int extra_data = 0;
+  pool->cache()->entry_at(site_index)->set_dynamic_call(call_site(), extra_data);
+}
+IRT_END
+
+
+// Called on first time execution, and also whenever the CallSite.target is null.
+// FIXME:  Do more of this in Java code.
+IRT_ENTRY(void, InterpreterRuntime::bootstrap_invokedynamic(JavaThread* thread, oopDesc* call_site)) {
+  methodHandle   mh_invdyn(thread, (methodOop) sun_dyn_CallSiteImpl::vmmethod(call_site));
+  Handle         mh_type(thread,   mh_invdyn->method_handle_type());
+  objArrayHandle mh_ptypes(thread, java_dyn_MethodType::ptypes(mh_type()));
+
+  // squish the arguments down to a single array
+  int nargs = mh_ptypes->length();
+  objArrayHandle arg_array;
+  {
+    objArrayOop aaoop = oopFactory::new_objArray(SystemDictionary::object_klass(), nargs, CHECK);
+    arg_array = objArrayHandle(thread, aaoop);
+  }
+  frame fr = thread->last_frame();
+  assert(fr.interpreter_frame_bcp() != NULL, "sanity");
+  int tos_offset = 0;
+  for (int i = nargs; --i >= 0; ) {
+    intptr_t* slot_addr = fr.interpreter_frame_tos_at(tos_offset++);
+    oop ptype = mh_ptypes->obj_at(i);
+    oop arg = NULL;
+    if (!java_lang_Class::is_primitive(ptype)) {
+      arg = *(oop*) slot_addr;
+    } else {
+      BasicType bt = java_lang_Class::primitive_type(ptype);
+      assert(frame::interpreter_frame_expression_stack_direction() < 0, "else reconsider this code");
+      jvalue value;
+      Interpreter::get_jvalue_in_slot(slot_addr, bt, &value);
+      tos_offset += type2size[bt]-1;
+      arg = java_lang_boxing_object::create(bt, &value, CHECK);
+      // FIXME:  These boxing objects are not canonicalized under
+      // the Java autoboxing rules.  They should be...
+      // The best approach would be to push the arglist creation into Java.
+      // The JVM should use a lower-level interface to communicate argument lists.
+    }
+    arg_array->obj_at_put(i, arg);
+  }
+
+  // now find the bootstrap method
+  oop bootstrap_mh_oop = instanceKlass::cast(fr.interpreter_frame_method()->method_holder())->bootstrap_method();
+  assert(bootstrap_mh_oop != NULL, "resolve_invokedynamic ensures a BSM");
+
+  // return the bootstrap method and argument array via vm_result/_2
+  thread->set_vm_result(bootstrap_mh_oop);
+  thread->set_vm_result_2(arg_array());
+}
+IRT_END
+
+
+
 //------------------------------------------------------------------------------------------------------------------------
 // Miscellaneous
 
--- a/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -42,8 +42,11 @@
   static bool      already_resolved(JavaThread *thread) { return cache_entry(thread)->is_resolved(code(thread)); }
   static int       one_byte_index(JavaThread *thread)   { return bcp(thread)[1]; }
   static int       two_byte_index(JavaThread *thread)   { return Bytes::get_Java_u2(bcp(thread) + 1); }
+  static int       four_byte_index(JavaThread *thread)  { return Bytes::get_native_u4(bcp(thread) + 1); }
   static int       number_of_dimensions(JavaThread *thread)  { return bcp(thread)[3]; }
-  static ConstantPoolCacheEntry* cache_entry(JavaThread *thread)  { return method(thread)->constants()->cache()->entry_at(Bytes::get_native_u2(bcp(thread) + 1)); }
+
+  static ConstantPoolCacheEntry* cache_entry_at(JavaThread *thread, int i)  { return method(thread)->constants()->cache()->entry_at(i); }
+  static ConstantPoolCacheEntry* cache_entry(JavaThread *thread)            { return cache_entry_at(thread, Bytes::get_native_u2(bcp(thread) + 1)); }
   static void      note_trap(JavaThread *thread, int reason, TRAPS);
 
  public:
@@ -83,7 +86,9 @@
   static void    new_illegal_monitor_state_exception(JavaThread* thread);
 
   // Calls
-  static void    resolve_invoke     (JavaThread* thread, Bytecodes::Code bytecode);
+  static void    resolve_invoke       (JavaThread* thread, Bytecodes::Code bytecode);
+  static void    resolve_invokedynamic(JavaThread* thread);
+  static void  bootstrap_invokedynamic(JavaThread* thread, oopDesc* call_site);
 
   // Breakpoints
   static void _breakpoint(JavaThread* thread, methodOopDesc* method, address bcp);
--- a/hotspot/src/share/vm/interpreter/linkResolver.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -947,6 +947,7 @@
     case Bytecodes::_invokestatic   : resolve_invokestatic   (result,       pool, index, CHECK); break;
     case Bytecodes::_invokespecial  : resolve_invokespecial  (result,       pool, index, CHECK); break;
     case Bytecodes::_invokevirtual  : resolve_invokevirtual  (result, recv, pool, index, CHECK); break;
+    case Bytecodes::_invokedynamic  : resolve_invokedynamic  (result,       pool, index, CHECK); break;
     case Bytecodes::_invokeinterface: resolve_invokeinterface(result, recv, pool, index, CHECK); break;
   }
   return;
@@ -1008,6 +1009,30 @@
   resolve_interface_call(result, recv, recvrKlass, resolved_klass, method_name, method_signature, current_klass, true, true, CHECK);
 }
 
+
+void LinkResolver::resolve_invokedynamic(CallInfo& result, constantPoolHandle pool, int raw_index, TRAPS) {
+  assert(EnableInvokeDynamic, "");
+
+  // This guy is reached from InterpreterRuntime::resolve_invokedynamic.
+
+  assert(constantPoolCacheOopDesc::is_secondary_index(raw_index), "must be secondary index");
+  int nt_index = pool->map_instruction_operand_to_index(raw_index);
+
+  // At this point, we only need the signature, and can ignore the name.
+  symbolHandle method_signature(THREAD, pool->nt_signature_ref_at(nt_index));
+  symbolHandle method_name = vmSymbolHandles::invoke_name();
+  KlassHandle resolved_klass = SystemDictionaryHandles::MethodHandle_klass();
+
+  // JSR 292:  this must be an implicitly generated method MethodHandle.invoke(*...)
+  // The extra MH receiver will be inserted into the stack on every call.
+  methodHandle resolved_method;
+  lookup_implicit_method(resolved_method, resolved_klass, method_name, method_signature, CHECK);
+  if (resolved_method.is_null()) {
+    THROW(vmSymbols::java_lang_InternalError());
+  }
+  result.set_virtual(resolved_klass, KlassHandle(), resolved_method, resolved_method, resolved_method->vtable_index(), CHECK);
+}
+
 //------------------------------------------------------------------------------------------------------------------------
 #ifndef PRODUCT
 
--- a/hotspot/src/share/vm/interpreter/linkResolver.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/linkResolver.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -167,6 +167,7 @@
   static void resolve_invokespecial  (CallInfo& result,              constantPoolHandle pool, int index, TRAPS);
   static void resolve_invokevirtual  (CallInfo& result, Handle recv, constantPoolHandle pool, int index, TRAPS);
   static void resolve_invokeinterface(CallInfo& result, Handle recv, constantPoolHandle pool, int index, TRAPS);
+  static void resolve_invokedynamic  (CallInfo& result,              constantPoolHandle pool, int index, TRAPS);
 
   static void resolve_invoke         (CallInfo& result, Handle recv, constantPoolHandle pool, int index, Bytecodes::Code byte, TRAPS);
 };
--- a/hotspot/src/share/vm/interpreter/rewriter.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/rewriter.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -25,39 +25,50 @@
 # include "incls/_precompiled.incl"
 # include "incls/_rewriter.cpp.incl"
 
-
-// Computes an index_map (new_index -> original_index) for contant pool entries
+// Computes a CPC map (new_index -> original_index) for constant pool entries
 // that are referred to by the interpreter at runtime via the constant pool cache.
-void Rewriter::compute_index_maps(constantPoolHandle pool, intArray*& index_map, intStack*& inverse_index_map) {
-  const int length  = pool->length();
-  index_map         = new intArray(length, -1);
-  // Choose an initial value large enough that we don't get frequent
-  // calls to grow().
-  inverse_index_map = new intStack(length / 2);
+// Also computes a CP map (original_index -> new_index).
+// Marks entries in CP which require additional processing.
+void Rewriter::compute_index_maps() {
+  const int length  = _pool->length();
+  init_cp_map(length);
   for (int i = 0; i < length; i++) {
-    switch (pool->tag_at(i).value()) {
+    int tag = _pool->tag_at(i).value();
+    switch (tag) {
+      case JVM_CONSTANT_InterfaceMethodref:
       case JVM_CONSTANT_Fieldref          : // fall through
       case JVM_CONSTANT_Methodref         : // fall through
-      case JVM_CONSTANT_InterfaceMethodref: {
-        index_map->at_put(i, inverse_index_map->length());
-        inverse_index_map->append(i);
-      }
+        add_cp_cache_entry(i);
+        break;
     }
   }
+
+  guarantee((int)_cp_cache_map.length()-1 <= (int)((u2)-1),
+            "all cp cache indexes fit in a u2");
 }
 
 
-// Creates a constant pool cache given an inverse_index_map
+int Rewriter::add_extra_cp_cache_entry(int main_entry) {
+  // Hack: We put it on the map as an encoded value.
+  // The only place that consumes this is ConstantPoolCacheEntry::set_initial_state
+  int encoded = constantPoolCacheOopDesc::encode_secondary_index(main_entry);
+  int plain_secondary_index = _cp_cache_map.append(encoded);
+  return constantPoolCacheOopDesc::encode_secondary_index(plain_secondary_index);
+}
+
+
+
+// Creates a constant pool cache given a CPC map
 // This creates the constant pool cache initially in a state
 // that is unsafe for concurrent GC processing but sets it to
 // a safe mode before the constant pool cache is returned.
-constantPoolCacheHandle Rewriter::new_constant_pool_cache(intArray& inverse_index_map, TRAPS) {
-  const int length = inverse_index_map.length();
-  constantPoolCacheOop cache = oopFactory::new_constantPoolCache(length,
-                                             methodOopDesc::IsUnsafeConc,
-                                             CHECK_(constantPoolCacheHandle()));
-  cache->initialize(inverse_index_map);
-  return constantPoolCacheHandle(THREAD, cache);
+void Rewriter::make_constant_pool_cache(TRAPS) {
+  const int length = _cp_cache_map.length();
+  constantPoolCacheOop cache =
+      oopFactory::new_constantPoolCache(length, methodOopDesc::IsUnsafeConc, CHECK);
+  cache->initialize(_cp_cache_map);
+  _pool->set_cache(cache);
+  cache->set_constant_pool(_pool());
 }
 
 
@@ -101,8 +112,38 @@
 }
 
 
+// Rewrite a classfile-order CP index into a native-order CPC index.
+int Rewriter::rewrite_member_reference(address bcp, int offset) {
+  address p = bcp + offset;
+  int  cp_index    = Bytes::get_Java_u2(p);
+  int  cache_index = cp_entry_to_cp_cache(cp_index);
+  Bytes::put_native_u2(p, cache_index);
+  return cp_index;
+}
+
+
+void Rewriter::rewrite_invokedynamic(address bcp, int offset, int delete_me) {
+  address p = bcp + offset;
+  assert(p[-1] == Bytecodes::_invokedynamic, "");
+  int cp_index = Bytes::get_Java_u2(p);
+  int cpc  = maybe_add_cp_cache_entry(cp_index);  // add lazily
+  int cpc2 = add_extra_cp_cache_entry(cpc);
+
+  // Replace the trailing four bytes with a CPC index for the dynamic
+  // call site.  Unlike other CPC entries, there is one per bytecode,
+  // not just one per distinct CP entry.  In other words, the
+  // CPC-to-CP relation is many-to-one for invokedynamic entries.
+  // This means we must use a larger index size than u2 to address
+  // all these entries.  That is the main reason invokedynamic
+  // must have a five-byte instruction format.  (Of course, other JVM
+  // implementations can use the bytes for other purposes.)
+  Bytes::put_native_u4(p, cpc2);
+  // Note: We use native_u4 format exclusively for 4-byte indexes.
+}
+
+
 // Rewrites a method given the index_map information
-methodHandle Rewriter::rewrite_method(methodHandle method, intArray& index_map, TRAPS) {
+void Rewriter::scan_method(methodOop method) {
 
   int nof_jsrs = 0;
   bool has_monitor_bytecodes = false;
@@ -121,6 +162,7 @@
     int bc_length;
     for (int bci = 0; bci < code_length; bci += bc_length) {
       address bcp = code_base + bci;
+      int prefix_length = 0;
       c = (Bytecodes::Code)(*bcp);
 
       // Since we have the code, see if we can get the length
@@ -135,6 +177,7 @@
         // by 'wide'. We don't currently examine any of the bytecodes
         // modified by wide, but in case we do in the future...
         if (c == Bytecodes::_wide) {
+          prefix_length = 1;
           c = (Bytecodes::Code)bcp[1];
         }
       }
@@ -159,12 +202,13 @@
         case Bytecodes::_putfield       : // fall through
         case Bytecodes::_invokevirtual  : // fall through
         case Bytecodes::_invokespecial  : // fall through
-        case Bytecodes::_invokestatic   : // fall through
-        case Bytecodes::_invokeinterface: {
-          address p = bcp + 1;
-          Bytes::put_native_u2(p, index_map[Bytes::get_Java_u2(p)]);
+        case Bytecodes::_invokestatic   :
+        case Bytecodes::_invokeinterface:
+          rewrite_member_reference(bcp, prefix_length+1);
           break;
-        }
+        case Bytecodes::_invokedynamic:
+          rewrite_invokedynamic(bcp, prefix_length+1, int(sizeof"@@@@DELETE ME"));
+          break;
         case Bytecodes::_jsr            : // fall through
         case Bytecodes::_jsr_w          : nof_jsrs++;                   break;
         case Bytecodes::_monitorenter   : // fall through
@@ -182,53 +226,56 @@
   // have to be rewritten, so we run the oopMapGenerator on the method
   if (nof_jsrs > 0) {
     method->set_has_jsrs();
-    ResolveOopMapConflicts romc(method);
-    methodHandle original_method = method;
-    method = romc.do_potential_rewrite(CHECK_(methodHandle()));
-    if (method() != original_method()) {
-      // Insert invalid bytecode into original methodOop and set
-      // interpreter entrypoint, so that a executing this method
-      // will manifest itself in an easy recognizable form.
-      address bcp = original_method->bcp_from(0);
-      *bcp = (u1)Bytecodes::_shouldnotreachhere;
-      int kind = Interpreter::method_kind(original_method);
-      original_method->set_interpreter_kind(kind);
-    }
+    // Second pass will revisit this method.
+    assert(method->has_jsrs(), "");
+  }
+}
 
-    // Update monitor matching info.
-    if (romc.monitor_safe()) {
-      method->set_guaranteed_monitor_matching();
-    }
+// After constant pool is created, revisit methods containing jsrs.
+methodHandle Rewriter::rewrite_jsrs(methodHandle method, TRAPS) {
+  ResolveOopMapConflicts romc(method);
+  methodHandle original_method = method;
+  method = romc.do_potential_rewrite(CHECK_(methodHandle()));
+  if (method() != original_method()) {
+    // Insert invalid bytecode into original methodOop and set
+    // interpreter entrypoint, so that a executing this method
+    // will manifest itself in an easy recognizable form.
+    address bcp = original_method->bcp_from(0);
+    *bcp = (u1)Bytecodes::_shouldnotreachhere;
+    int kind = Interpreter::method_kind(original_method);
+    original_method->set_interpreter_kind(kind);
   }
 
-  // Setup method entrypoints for compiler and interpreter
-  method->link_method(method, CHECK_(methodHandle()));
+  // Update monitor matching info.
+  if (romc.monitor_safe()) {
+    method->set_guaranteed_monitor_matching();
+  }
 
   return method;
 }
 
 
 void Rewriter::rewrite(instanceKlassHandle klass, TRAPS) {
-  // gather starting points
   ResourceMark rm(THREAD);
-  constantPoolHandle pool (THREAD, klass->constants());
-  objArrayHandle methods  (THREAD, klass->methods());
-  assert(pool->cache() == NULL, "constant pool cache must not be set yet");
+  Rewriter     rw(klass, CHECK);
+  // (That's all, folks.)
+}
+
+Rewriter::Rewriter(instanceKlassHandle klass, TRAPS)
+  : _klass(klass),
+    // gather starting points
+    _pool(   THREAD, klass->constants()),
+    _methods(THREAD, klass->methods())
+{
+  assert(_pool->cache() == NULL, "constant pool cache must not be set yet");
 
   // determine index maps for methodOop rewriting
-  intArray* index_map         = NULL;
-  intStack* inverse_index_map = NULL;
-  compute_index_maps(pool, index_map, inverse_index_map);
+  compute_index_maps();
 
-  // allocate constant pool cache
-  constantPoolCacheHandle cache = new_constant_pool_cache(*inverse_index_map, CHECK);
-  pool->set_cache(cache());
-  cache->set_constant_pool(pool());
-
-  if (RegisterFinalizersAtInit && klass->name() == vmSymbols::java_lang_Object()) {
-    int i = methods->length();
+  if (RegisterFinalizersAtInit && _klass->name() == vmSymbols::java_lang_Object()) {
+    int i = _methods->length();
     while (i-- > 0) {
-      methodOop method = (methodOop)methods->obj_at(i);
+      methodOop method = (methodOop)_methods->obj_at(i);
       if (method->intrinsic_id() == vmIntrinsics::_Object_init) {
         // rewrite the return bytecodes of Object.<init> to register the
         // object for finalization if needed.
@@ -239,13 +286,27 @@
     }
   }
 
-  // rewrite methods
-  { int i = methods->length();
-    while (i-- > 0) {
-      methodHandle m(THREAD, (methodOop)methods->obj_at(i));
-      m = rewrite_method(m, *index_map, CHECK);
+  // rewrite methods, in two passes
+  int i, len = _methods->length();
+
+  for (i = len; --i >= 0; ) {
+    methodOop method = (methodOop)_methods->obj_at(i);
+    scan_method(method);
+  }
+
+  // allocate constant pool cache, now that we've seen all the bytecodes
+  make_constant_pool_cache(CHECK);
+
+  for (i = len; --i >= 0; ) {
+    methodHandle m(THREAD, (methodOop)_methods->obj_at(i));
+
+    if (m->has_jsrs()) {
+      m = rewrite_jsrs(m, CHECK);
       // Method might have gotten rewritten.
-      methods->obj_at_put(i, m());
+      _methods->obj_at_put(i, m());
     }
+
+    // Set up method entry points for compiler and interpreter.
+    m->link_method(m, CHECK);
   }
 }
--- a/hotspot/src/share/vm/interpreter/rewriter.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/rewriter.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -25,13 +25,44 @@
 // The Rewriter adds caches to the constant pool and rewrites bytecode indices
 // pointing into the constant pool for better interpreter performance.
 
-class Rewriter: public AllStatic {
+class Rewriter: public StackObj {
  private:
-  static void compute_index_maps(constantPoolHandle pool, intArray*& index_map, intStack*& inverse_index_map);
-  static constantPoolCacheHandle new_constant_pool_cache(intArray& inverse_index_map, TRAPS);
-  static methodHandle rewrite_method(methodHandle method, intArray& index_map, TRAPS);
-  static void rewrite_Object_init(methodHandle method, TRAPS);
+  instanceKlassHandle _klass;
+  constantPoolHandle  _pool;
+  objArrayHandle      _methods;
+  intArray            _cp_map;
+  intStack            _cp_cache_map;
+
+  void init_cp_map(int length) {
+    _cp_map.initialize(length, -1);
+    // Choose an initial value large enough that we don't get frequent
+    // calls to grow().
+    _cp_cache_map.initialize(length / 2);
+  }
+  int  cp_entry_to_cp_cache(int i) { assert(has_cp_cache(i), "oob"); return _cp_map[i]; }
+  bool has_cp_cache(int i) { return (uint)i < (uint)_cp_map.length() && _cp_map[i] >= 0; }
+  int maybe_add_cp_cache_entry(int i) { return has_cp_cache(i) ? _cp_map[i] : add_cp_cache_entry(i); }
+  int add_cp_cache_entry(int cp_index) {
+    assert(_cp_map[cp_index] == -1, "not twice on same cp_index");
+    int cache_index = _cp_cache_map.append(cp_index);
+    _cp_map.at_put(cp_index, cache_index);
+    assert(cp_entry_to_cp_cache(cp_index) == cache_index, "");
+    return cache_index;
+  }
+  int add_extra_cp_cache_entry(int main_entry);
+
+  // All the work goes in here:
+  Rewriter(instanceKlassHandle klass, TRAPS);
+
+  void compute_index_maps();
+  void make_constant_pool_cache(TRAPS);
+  void scan_method(methodOop m);
+  methodHandle rewrite_jsrs(methodHandle m, TRAPS);
+  void rewrite_Object_init(methodHandle m, TRAPS);
+  int  rewrite_member_reference(address bcp, int offset);
+  void rewrite_invokedynamic(address bcp, int offset, int cp_index);
 
  public:
+  // Driver routine:
   static void rewrite(instanceKlassHandle klass, TRAPS);
 };
--- a/hotspot/src/share/vm/interpreter/templateInterpreter.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/templateInterpreter.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -178,12 +178,14 @@
 #endif // !PRODUCT
 EntryPoint TemplateInterpreter::_return_entry[TemplateInterpreter::number_of_return_entries];
 EntryPoint TemplateInterpreter::_earlyret_entry;
+EntryPoint TemplateInterpreter::_return_unbox_entry;
 EntryPoint TemplateInterpreter::_deopt_entry [TemplateInterpreter::number_of_deopt_entries ];
 EntryPoint TemplateInterpreter::_continuation_entry;
 EntryPoint TemplateInterpreter::_safept_entry;
 
 address    TemplateInterpreter::_return_3_addrs_by_index[TemplateInterpreter::number_of_return_addrs];
 address    TemplateInterpreter::_return_5_addrs_by_index[TemplateInterpreter::number_of_return_addrs];
+address    TemplateInterpreter::_return_5_unbox_addrs_by_index[TemplateInterpreter::number_of_return_addrs];
 
 DispatchTable TemplateInterpreter::_active_table;
 DispatchTable TemplateInterpreter::_normal_table;
@@ -251,6 +253,22 @@
     }
   }
 
+  if (EnableInvokeDynamic) {
+    CodeletMark cm(_masm, "unboxing return entry points");
+    Interpreter::_return_unbox_entry =
+      EntryPoint(
+        generate_return_unbox_entry_for(btos, 5),
+        generate_return_unbox_entry_for(ctos, 5),
+        generate_return_unbox_entry_for(stos, 5),
+        generate_return_unbox_entry_for(atos, 5), // cast conversion
+        generate_return_unbox_entry_for(itos, 5),
+        generate_return_unbox_entry_for(ltos, 5),
+        generate_return_unbox_entry_for(ftos, 5),
+        generate_return_unbox_entry_for(dtos, 5),
+        Interpreter::_return_entry[5].entry(vtos) // no unboxing for void
+      );
+  }
+
   { CodeletMark cm(_masm, "earlyret entry points");
     Interpreter::_earlyret_entry =
       EntryPoint(
@@ -298,8 +316,11 @@
 
   for (int j = 0; j < number_of_states; j++) {
     const TosState states[] = {btos, ctos, stos, itos, ltos, ftos, dtos, atos, vtos};
-    Interpreter::_return_3_addrs_by_index[Interpreter::TosState_as_index(states[j])] = Interpreter::return_entry(states[j], 3);
-    Interpreter::_return_5_addrs_by_index[Interpreter::TosState_as_index(states[j])] = Interpreter::return_entry(states[j], 5);
+    int index = Interpreter::TosState_as_index(states[j]);
+    Interpreter::_return_3_addrs_by_index[index] = Interpreter::return_entry(states[j], 3);
+    Interpreter::_return_5_addrs_by_index[index] = Interpreter::return_entry(states[j], 5);
+    if (EnableInvokeDynamic)
+      Interpreter::_return_5_unbox_addrs_by_index[index] = Interpreter::return_unbox_entry(states[j], 5);
   }
 
   { CodeletMark cm(_masm, "continuation entry points");
@@ -526,6 +547,18 @@
 }
 
 
+address TemplateInterpreter::return_unbox_entry(TosState state, int length) {
+  assert(EnableInvokeDynamic, "");
+  if (state == vtos) {
+    // no unboxing to do, actually
+    return return_entry(state, length);
+  } else {
+    assert(length == 5, "unboxing entries generated for invokedynamic only");
+    return _return_unbox_entry.entry(state);
+  }
+}
+
+
 address TemplateInterpreter::deopt_entry(TosState state, int length) {
   guarantee(0 <= length && length < Interpreter::number_of_deopt_entries, "illegal length");
   return _deopt_entry[length].entry(state);
--- a/hotspot/src/share/vm/interpreter/templateInterpreter.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/templateInterpreter.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -83,9 +83,9 @@
  public:
 
   enum MoreConstants {
-    number_of_return_entries  = 9,                              // number of return entry points
-    number_of_deopt_entries   = 9,                              // number of deoptimization entry points
-    number_of_return_addrs    = 9                              // number of return addresses
+    number_of_return_entries  = number_of_states,               // number of return entry points
+    number_of_deopt_entries   = number_of_states,               // number of deoptimization entry points
+    number_of_return_addrs    = number_of_states                // number of return addresses
   };
 
  protected:
@@ -110,12 +110,14 @@
 #endif // !PRODUCT
   static EntryPoint _return_entry[number_of_return_entries];    // entry points to return to from a call
   static EntryPoint _earlyret_entry;                            // entry point to return early from a call
+  static EntryPoint _return_unbox_entry;                        // entry point to unbox a return value from a call
   static EntryPoint _deopt_entry[number_of_deopt_entries];      // entry points to return to from a deoptimization
   static EntryPoint _continuation_entry;
   static EntryPoint _safept_entry;
 
   static address    _return_3_addrs_by_index[number_of_return_addrs];     // for invokevirtual   return entries
   static address    _return_5_addrs_by_index[number_of_return_addrs];     // for invokeinterface return entries
+  static address    _return_5_unbox_addrs_by_index[number_of_return_addrs]; // for invokedynamic bootstrap methods
 
   static DispatchTable _active_table;                           // the active    dispatch table (used by the interpreter for dispatch)
   static DispatchTable _normal_table;                           // the normal    dispatch table (used to set the active table in normal mode)
@@ -157,10 +159,12 @@
   // Support for invokes
   static address*   return_3_addrs_by_index_table()             { return _return_3_addrs_by_index; }
   static address*   return_5_addrs_by_index_table()             { return _return_5_addrs_by_index; }
+  static address*   return_5_unbox_addrs_by_index_table()       { return _return_5_unbox_addrs_by_index; }
   static int        TosState_as_index(TosState state);          // computes index into return_3_entry_by_index table
 
   static address    return_entry  (TosState state, int length);
   static address    deopt_entry   (TosState state, int length);
+  static address    return_unbox_entry(TosState state, int length);
 
   // Safepoint support
   static void       notice_safepoints();                        // stops the thread when reaching a safepoint
--- a/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -51,7 +51,10 @@
   address generate_WrongMethodType_handler();
   address generate_ArrayIndexOutOfBounds_handler(const char* name);
   address generate_continuation_for(TosState state);
-  address generate_return_entry_for(TosState state, int step);
+  address generate_return_entry_for(TosState state, int step, bool unbox = false);
+  address generate_return_unbox_entry_for(TosState state, int step) {
+    return generate_return_entry_for(state, step, true);
+  }
   address generate_earlyret_entry_for(TosState state);
   address generate_deopt_entry_for(TosState state, int step);
   address generate_safept_entry_for(TosState state, address runtime_entry);
--- a/hotspot/src/share/vm/interpreter/templateTable.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/templateTable.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -442,6 +442,7 @@
   def(Bytecodes::_invokespecial       , ubcp|disp|clvm|____, vtos, vtos, invokespecial       ,  1           );
   def(Bytecodes::_invokestatic        , ubcp|disp|clvm|____, vtos, vtos, invokestatic        ,  1           );
   def(Bytecodes::_invokeinterface     , ubcp|disp|clvm|____, vtos, vtos, invokeinterface     ,  1           );
+  def(Bytecodes::_invokedynamic       , ubcp|disp|clvm|____, vtos, vtos, invokedynamic       ,  1           );
   def(Bytecodes::_new                 , ubcp|____|clvm|____, vtos, atos, _new                ,  _           );
   def(Bytecodes::_newarray            , ubcp|____|clvm|____, itos, atos, newarray            ,  _           );
   def(Bytecodes::_anewarray           , ubcp|____|clvm|____, itos, atos, anewarray           ,  _           );
@@ -503,7 +504,6 @@
 
   def(Bytecodes::_fast_invokevfinal   , ubcp|disp|clvm|____, vtos, vtos, fast_invokevfinal   ,  2           );
 
-
   def(Bytecodes::_fast_linearswitch   , ubcp|disp|____|____, itos, vtos, fast_linearswitch   ,  _           );
   def(Bytecodes::_fast_binaryswitch   , ubcp|disp|____|____, itos, vtos, fast_binaryswitch   ,  _           );
 
--- a/hotspot/src/share/vm/interpreter/templateTable.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/templateTable.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -261,6 +261,7 @@
   static void invokespecial(int byte_no);
   static void invokestatic(int byte_no);
   static void invokeinterface(int byte_no);
+  static void invokedynamic(int byte_no);
   static void fast_invokevfinal(int byte_no);
 
   static void getfield_or_static(int byte_no, bool is_static);
--- a/hotspot/src/share/vm/oops/constantPoolKlass.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/oops/constantPoolKlass.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -312,6 +312,7 @@
   if (cp->flags() != 0) {
     st->print(" - flags : 0x%x", cp->flags());
     if (cp->has_pseudo_string()) st->print(" has_pseudo_string");
+    if (cp->has_invokedynamic()) st->print(" has_invokedynamic");
     st->cr();
   }
 
--- a/hotspot/src/share/vm/oops/constantPoolOop.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/oops/constantPoolOop.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -249,32 +249,41 @@
 }
 
 
-symbolOop constantPoolOopDesc::uncached_name_ref_at(int which) {
-  jint ref_index = name_and_type_at(uncached_name_and_type_ref_index_at(which));
-  int name_index = extract_low_short_from_int(ref_index);
+symbolOop constantPoolOopDesc::impl_name_ref_at(int which, bool uncached) {
+  int name_index = name_ref_index_at(impl_name_and_type_ref_index_at(which, uncached));
   return symbol_at(name_index);
 }
 
 
-symbolOop constantPoolOopDesc::uncached_signature_ref_at(int which) {
-  jint ref_index = name_and_type_at(uncached_name_and_type_ref_index_at(which));
-  int signature_index = extract_high_short_from_int(ref_index);
+symbolOop constantPoolOopDesc::impl_signature_ref_at(int which, bool uncached) {
+  int signature_index = signature_ref_index_at(impl_name_and_type_ref_index_at(which, uncached));
   return symbol_at(signature_index);
 }
 
 
-int constantPoolOopDesc::uncached_name_and_type_ref_index_at(int which) {
-  jint ref_index = field_or_method_at(which, true);
+int constantPoolOopDesc::impl_name_and_type_ref_index_at(int which, bool uncached) {
+  jint ref_index = field_or_method_at(which, uncached);
   return extract_high_short_from_int(ref_index);
 }
 
 
-int constantPoolOopDesc::uncached_klass_ref_index_at(int which) {
-  jint ref_index = field_or_method_at(which, true);
+int constantPoolOopDesc::impl_klass_ref_index_at(int which, bool uncached) {
+  jint ref_index = field_or_method_at(which, uncached);
   return extract_low_short_from_int(ref_index);
 }
 
 
+
+int constantPoolOopDesc::map_instruction_operand_to_index(int operand) {
+  if (constantPoolCacheOopDesc::is_secondary_index(operand)) {
+    return cache()->main_entry_at(operand)->constant_pool_index();
+  }
+  assert((int)(u2)operand == operand, "clean u2");
+  int index = Bytes::swap_u2(operand);
+  return cache()->entry_at(index)->constant_pool_index();
+}
+
+
 void constantPoolOopDesc::verify_constant_pool_resolve(constantPoolHandle this_oop, KlassHandle k, TRAPS) {
  if (k->oop_is_instance() || k->oop_is_objArray()) {
     instanceKlassHandle holder (THREAD, this_oop->pool_holder());
@@ -290,26 +299,14 @@
 }
 
 
-int constantPoolOopDesc::klass_ref_index_at(int which) {
-  jint ref_index = field_or_method_at(which, false);
+int constantPoolOopDesc::name_ref_index_at(int which_nt) {
+  jint ref_index = name_and_type_at(which_nt);
   return extract_low_short_from_int(ref_index);
 }
 
 
-int constantPoolOopDesc::name_and_type_ref_index_at(int which) {
-  jint ref_index = field_or_method_at(which, false);
-  return extract_high_short_from_int(ref_index);
-}
-
-
-int constantPoolOopDesc::name_ref_index_at(int which) {
-  jint ref_index = name_and_type_at(which);
-  return extract_low_short_from_int(ref_index);
-}
-
-
-int constantPoolOopDesc::signature_ref_index_at(int which) {
-  jint ref_index = name_and_type_at(which);
+int constantPoolOopDesc::signature_ref_index_at(int which_nt) {
+  jint ref_index = name_and_type_at(which_nt);
   return extract_high_short_from_int(ref_index);
 }
 
@@ -353,20 +350,6 @@
 }
 
 
-symbolOop constantPoolOopDesc::name_ref_at(int which) {
-  jint ref_index = name_and_type_at(name_and_type_ref_index_at(which));
-  int name_index = extract_low_short_from_int(ref_index);
-  return symbol_at(name_index);
-}
-
-
-symbolOop constantPoolOopDesc::signature_ref_at(int which) {
-  jint ref_index = name_and_type_at(name_and_type_ref_index_at(which));
-  int signature_index = extract_high_short_from_int(ref_index);
-  return symbol_at(signature_index);
-}
-
-
 BasicType constantPoolOopDesc::basic_type_for_signature_at(int which) {
   return FieldType::basic_type(symbol_at(which));
 }
--- a/hotspot/src/share/vm/oops/constantPoolOop.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/oops/constantPoolOop.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -53,6 +53,7 @@
   void release_tag_at_put(int which, jbyte t)  { tags()->release_byte_at_put(which, t); }
 
   enum FlagBit {
+    FB_has_invokedynamic = 1,
     FB_has_pseudo_string = 2
   };
 
@@ -96,7 +97,9 @@
   typeArrayOop tags() const                 { return _tags; }
 
   bool has_pseudo_string() const            { return flag_at(FB_has_pseudo_string); }
+  bool has_invokedynamic() const            { return flag_at(FB_has_invokedynamic); }
   void set_pseudo_string()                  {    set_flag_at(FB_has_pseudo_string); }
+  void set_invokedynamic()                  {    set_flag_at(FB_has_invokedynamic); }
 
   // Klass holding pool
   klassOop pool_holder() const              { return _pool_holder; }
@@ -338,24 +341,28 @@
     return *int_at_addr(which);
   }
 
-  // The following methods (klass_ref_at, klass_ref_at_noresolve, name_ref_at,
-  // signature_ref_at, klass_ref_index_at, name_and_type_ref_index_at,
-  // name_ref_index_at, signature_ref_index_at) all expect constant pool indices
+  // The following methods (name/signature/klass_ref_at, klass_ref_at_noresolve,
+  // name_and_type_ref_index_at) all expect constant pool indices
   // from the bytecodes to be passed in, which are actually potentially byte-swapped
-  // contstant pool cache indices. See field_or_method_at.
+  // or rewritten constant pool cache indices.  They all call map_instruction_operand_to_index.
+  int map_instruction_operand_to_index(int operand);
+
+  // There are also "uncached" versions which do not map the operand index; see below.
 
   // Lookup for entries consisting of (klass_index, name_and_type index)
   klassOop klass_ref_at(int which, TRAPS);
   symbolOop klass_ref_at_noresolve(int which);
-  symbolOop name_ref_at(int which);
-  symbolOop signature_ref_at(int which);    // the type descriptor
+  symbolOop name_ref_at(int which)                { return impl_name_ref_at(which, false); }
+  symbolOop signature_ref_at(int which)           { return impl_signature_ref_at(which, false); }
 
-  int klass_ref_index_at(int which);
-  int name_and_type_ref_index_at(int which);
+  int klass_ref_index_at(int which)               { return impl_klass_ref_index_at(which, false); }
+  int name_and_type_ref_index_at(int which)       { return impl_name_and_type_ref_index_at(which, false); }
 
   // Lookup for entries consisting of (name_index, signature_index)
-  int name_ref_index_at(int which);
-  int signature_ref_index_at(int which);
+  int name_ref_index_at(int which_nt);            // ==  low-order jshort of name_and_type_at(which_nt)
+  int signature_ref_index_at(int which_nt);       // == high-order jshort of name_and_type_at(which_nt)
+  symbolOop nt_name_ref_at(int which_nt)          { return symbol_at(name_ref_index_at(which_nt)); }
+  symbolOop nt_signature_ref_at(int which_nt)     { return symbol_at(signature_ref_index_at(which_nt)); }
 
   BasicType basic_type_for_signature_at(int which);
 
@@ -397,10 +404,10 @@
   // Routines currently used for annotations (only called by jvm.cpp) but which might be used in the
   // future by other Java code. These take constant pool indices rather than possibly-byte-swapped
   // constant pool cache indices as do the peer methods above.
-  symbolOop uncached_name_ref_at(int which);
-  symbolOop uncached_signature_ref_at(int which);
-  int       uncached_klass_ref_index_at(int which);
-  int       uncached_name_and_type_ref_index_at(int which);
+  symbolOop uncached_name_ref_at(int which)                 { return impl_name_ref_at(which, true); }
+  symbolOop uncached_signature_ref_at(int which)            { return impl_signature_ref_at(which, true); }
+  int       uncached_klass_ref_index_at(int which)          { return impl_klass_ref_index_at(which, true); }
+  int       uncached_name_and_type_ref_index_at(int which)  { return impl_name_and_type_ref_index_at(which, true); }
 
   // Sharing
   int pre_resolve_shared_klasses(TRAPS);
@@ -413,16 +420,19 @@
 
  private:
 
+  symbolOop impl_name_ref_at(int which, bool uncached);
+  symbolOop impl_signature_ref_at(int which, bool uncached);
+  int       impl_klass_ref_index_at(int which, bool uncached);
+  int       impl_name_and_type_ref_index_at(int which, bool uncached);
+
   // Takes either a constant pool cache index in possibly byte-swapped
   // byte order (which comes from the bytecodes after rewriting) or,
   // if "uncached" is true, a vanilla constant pool index
   jint field_or_method_at(int which, bool uncached) {
-    int i = -1;
-    if (uncached || cache() == NULL) {
-      i = which;
-    } else {
+    int i = which;
+    if (!uncached && cache() != NULL) {
       // change byte-ordering and go via cache
-      i = cache()->entry_at(Bytes::swap_u2(which))->constant_pool_index();
+      i = map_instruction_operand_to_index(which);
     }
     assert(tag_at(i).is_field_or_method(), "Corrupted constant pool");
     return *int_at_addr(i);
--- a/hotspot/src/share/vm/oops/cpCacheKlass.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/oops/cpCacheKlass.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -169,11 +169,47 @@
 void constantPoolCacheKlass::oop_copy_contents(PSPromotionManager* pm,
                                                oop obj) {
   assert(obj->is_constantPoolCache(), "should be constant pool");
+  if (EnableInvokeDynamic) {
+    constantPoolCacheOop cache = (constantPoolCacheOop)obj;
+    // during a scavenge, it is safe to inspect my pool, since it is perm
+    constantPoolOop pool = cache->constant_pool();
+    assert(pool->is_constantPool(), "should be constant pool");
+    if (pool->has_invokedynamic()) {
+      for (int i = 0; i < cache->length(); i++) {
+        ConstantPoolCacheEntry* e = cache->entry_at(i);
+        oop* p = (oop*)&e->_f1;
+        if (e->is_secondary_entry()) {
+          if (PSScavenge::should_scavenge(p))
+            pm->claim_or_forward_breadth(p);
+          assert(!(e->is_vfinal() && PSScavenge::should_scavenge((oop*)&e->_f2)),
+                 "no live oops here");
+        }
+      }
+    }
+  }
 }
 
 void constantPoolCacheKlass::oop_push_contents(PSPromotionManager* pm,
                                                oop obj) {
   assert(obj->is_constantPoolCache(), "should be constant pool");
+  if (EnableInvokeDynamic) {
+    constantPoolCacheOop cache = (constantPoolCacheOop)obj;
+    // during a scavenge, it is safe to inspect my pool, since it is perm
+    constantPoolOop pool = cache->constant_pool();
+    assert(pool->is_constantPool(), "should be constant pool");
+    if (pool->has_invokedynamic()) {
+      for (int i = 0; i < cache->length(); i++) {
+        ConstantPoolCacheEntry* e = cache->entry_at(i);
+        oop* p = (oop*)&e->_f1;
+        if (e->is_secondary_entry()) {
+          if (PSScavenge::should_scavenge(p))
+            pm->claim_or_forward_depth(p);
+          assert(!(e->is_vfinal() && PSScavenge::should_scavenge((oop*)&e->_f2)),
+                 "no live oops here");
+        }
+      }
+    }
+  }
 }
 
 int
--- a/hotspot/src/share/vm/oops/cpCacheOop.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/oops/cpCacheOop.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -29,8 +29,18 @@
 // Implememtation of ConstantPoolCacheEntry
 
 void ConstantPoolCacheEntry::set_initial_state(int index) {
-  assert(0 <= index && index < 0x10000, "sanity check");
+  if (constantPoolCacheOopDesc::is_secondary_index(index)) {
+    // Hack:  The rewriter is trying to say that this entry itself
+    // will be a secondary entry.
+    int main_index = constantPoolCacheOopDesc::decode_secondary_index(index);
+    assert(0 <= main_index && main_index < 0x10000, "sanity check");
+    _indices = (main_index << 16);
+    assert(main_entry_index() == main_index, "");
+    return;
+  }
+  assert(0 < index && index < 0x10000, "sanity check");
   _indices = index;
+  assert(constant_pool_index() == index, "");
 }
 
 
@@ -136,6 +146,7 @@
   int byte_no = -1;
   bool needs_vfinal_flag = false;
   switch (invoke_code) {
+    case Bytecodes::_invokedynamic:
     case Bytecodes::_invokevirtual:
     case Bytecodes::_invokeinterface: {
         if (method->can_be_statically_bound()) {
@@ -211,6 +222,23 @@
 }
 
 
+void ConstantPoolCacheEntry::set_dynamic_call(Handle call_site, int extra_data) {
+  methodOop method = (methodOop) sun_dyn_CallSiteImpl::vmmethod(call_site());
+  assert(method->is_method(), "must be initialized properly");
+  int param_size = method->size_of_parameters();
+  assert(param_size > 1, "method argument size must include MH.this & initial dynamic receiver");
+  param_size -= 1;              // do not count MH.this; it is not stacked for invokedynamic
+  if (Atomic::cmpxchg_ptr(call_site(), &_f1, NULL) == NULL) {
+    // racing threads might be trying to install their own favorites
+    set_f1(call_site());
+  }
+  set_f2(extra_data);
+  set_flags(as_flags(as_TosState(method->result_type()), method->is_final_method(), false, false, false, true) | param_size);
+  // do not do set_bytecode on a secondary CP cache entry
+  //set_bytecode_1(Bytecodes::_invokedynamic);
+}
+
+
 class LocalOopClosure: public OopClosure {
  private:
   void (*_f)(oop*);
@@ -392,7 +420,11 @@
   // print separator
   if (index == 0) tty->print_cr("                 -------------");
   // print entry
-  tty->print_cr("%3d  (%08x)  [%02x|%02x|%5d]", index, this, bytecode_2(), bytecode_1(), constant_pool_index());
+  tty->print_cr("%3d  (%08x)  ", index, this);
+  if (is_secondary_entry())
+    tty->print_cr("[%5d|secondary]", main_entry_index());
+  else
+    tty->print_cr("[%02x|%02x|%5d]", bytecode_2(), bytecode_1(), constant_pool_index());
   tty->print_cr("                 [   %08x]", (address)(oop)_f1);
   tty->print_cr("                 [   %08x]", _f2);
   tty->print_cr("                 [   %08x]", _flags);
--- a/hotspot/src/share/vm/oops/cpCacheOop.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/oops/cpCacheOop.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -89,6 +89,7 @@
 // _f1      = method for all but virtual calls, unused by virtual calls
 //            (note: for interface calls, which are essentially virtual,
 //             contains klassOop for the corresponding interface.
+//            for invokedynamic, f1 contains the CallSite object for the invocation
 // _f2      = method/vtable index for virtual calls only, unused by all other
 //            calls.  The vf flag indicates this is a method pointer not an
 //            index.
@@ -108,6 +109,8 @@
 
 class ConstantPoolCacheEntry VALUE_OBJ_CLASS_SPEC {
   friend class VMStructs;
+  friend class constantPoolCacheKlass;
+
  private:
   volatile intx     _indices;  // constant pool index & rewrite bytecodes
   volatile oop      _f1;       // entry specific oop field
@@ -175,6 +178,11 @@
     int index                                    // Method index into interface
   );
 
+  void set_dynamic_call(
+    Handle call_site,                            // Resolved java.dyn.CallSite (f1)
+    int extra_data                               // (f2)
+  );
+
   void set_parameter_size(int value) {
     assert(parameter_size() == 0 || parameter_size() == value,
            "size must not change");
@@ -216,7 +224,11 @@
   }
 
   // Accessors
-  int constant_pool_index() const                { return _indices & 0xFFFF; }
+  bool is_secondary_entry() const                { return (_indices & 0xFFFF) == 0; }
+  int constant_pool_index() const                { assert((_indices & 0xFFFF) != 0, "must be main entry");
+                                                   return (_indices & 0xFFFF); }
+  int main_entry_index() const                   { assert((_indices & 0xFFFF) == 0, "must be secondary entry");
+                                                   return ((uintx)_indices >> 16); }
   Bytecodes::Code bytecode_1() const             { return Bytecodes::cast((_indices >> 16) & 0xFF); }
   Bytecodes::Code bytecode_2() const             { return Bytecodes::cast((_indices >> 24) & 0xFF); }
   volatile oop  f1() const                       { return _f1; }
@@ -314,10 +326,30 @@
   // Initialization
   void initialize(intArray& inverse_index_map);
 
+  // Secondary indexes.
+  // They must look completely different from normal indexes.
+  // The main reason is that byte swapping is sometimes done on normal indexes.
+  // Also, it is helpful for debugging to tell the two apart.
+  static bool is_secondary_index(int i) { return (i < 0); }
+  static int  decode_secondary_index(int i) { assert(is_secondary_index(i),  ""); return ~i; }
+  static int  encode_secondary_index(int i) { assert(!is_secondary_index(i), ""); return ~i; }
+
   // Accessors
   void set_constant_pool(constantPoolOop pool)   { oop_store_without_check((oop*)&_constant_pool, (oop)pool); }
   constantPoolOop constant_pool() const          { return _constant_pool; }
   ConstantPoolCacheEntry* entry_at(int i) const  { assert(0 <= i && i < length(), "index out of bounds"); return base() + i; }
+  ConstantPoolCacheEntry* main_entry_at(int i) const {
+    ConstantPoolCacheEntry* e;
+    if (is_secondary_index(i)) {
+      // run through an extra level of indirection:
+      i = decode_secondary_index(i);
+      e = entry_at(i);
+      i = e->main_entry_index();
+    }
+    e = entry_at(i);
+    assert(!e->is_secondary_entry(), "only one level of indirection");
+    return e;
+  }
 
   // GC support
   // If the _length field has not been set, the size of the
--- a/hotspot/src/share/vm/oops/generateOopMap.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/oops/generateOopMap.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1252,8 +1252,9 @@
       case Bytecodes::_invokevirtual:
       case Bytecodes::_invokespecial:
       case Bytecodes::_invokestatic:
+      case Bytecodes::_invokedynamic:
       case Bytecodes::_invokeinterface:
-        int idx = currentBC->get_index_big();
+        int idx = currentBC->get_index_int();
         constantPoolOop cp    = method()->constants();
         int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
         int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
@@ -1283,8 +1284,9 @@
       case Bytecodes::_invokevirtual:
       case Bytecodes::_invokespecial:
       case Bytecodes::_invokestatic:
+      case Bytecodes::_invokedynamic:
       case Bytecodes::_invokeinterface:
-        int idx = currentBC->get_index_big();
+        int idx = currentBC->get_index_int();
         constantPoolOop cp    = method()->constants();
         int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
         int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
@@ -1310,6 +1312,7 @@
       case Bytecodes::_invokevirtual:
       case Bytecodes::_invokespecial:
       case Bytecodes::_invokestatic:
+      case Bytecodes::_invokedynamic:
       case Bytecodes::_invokeinterface:
         _itr_send = itr;
         _report_result_for_send = true;
@@ -1556,6 +1559,7 @@
     case Bytecodes::_invokevirtual:
     case Bytecodes::_invokespecial:     do_method(false, false, itr->get_index_big(), itr->bci()); break;
     case Bytecodes::_invokestatic:      do_method(true,  false, itr->get_index_big(), itr->bci()); break;
+    case Bytecodes::_invokedynamic:     do_method(false, true,  itr->get_index_int(), itr->bci()); break;
     case Bytecodes::_invokeinterface:   do_method(false, true,  itr->get_index_big(), itr->bci()); break;
     case Bytecodes::_newarray:
     case Bytecodes::_anewarray:         pp_new_ref(vCTS, itr->bci()); break;
@@ -1899,7 +1903,7 @@
   // Dig up signature for field in constant pool
   constantPoolOop cp    = _method->constants();
   int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
-  int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
+  int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);  // @@@@@
   symbolOop signature   = cp->symbol_at(signatureIdx);
 
   // Parse method signature
--- a/hotspot/src/share/vm/oops/instanceKlass.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/oops/instanceKlass.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -163,6 +163,8 @@
   klassOop        _implementors[implementors_limit];
   // Generic signature, or null if none.
   symbolOop       _generic_signature;
+  // invokedynamic bootstrap method (a java.dyn.MethodHandle)
+  oop             _bootstrap_method;
   // Annotations for this class, or null if none.
   typeArrayOop    _class_annotations;
   // Annotation objects (byte arrays) for fields, or null if no annotations.
@@ -464,6 +466,10 @@
                                     u2 method_index)  { _enclosing_method_class_index  = class_index;
                                                         _enclosing_method_method_index = method_index; }
 
+  // JSR 292 support
+  oop bootstrap_method() const                        { return _bootstrap_method; }
+  void set_bootstrap_method(oop mh)                   { oop_store(&_bootstrap_method, mh); }
+
   // jmethodID support
   static jmethodID get_jmethod_id(instanceKlassHandle ik_h, size_t idnum,
                                   jmethodID new_id, jmethodID* new_jmeths);
@@ -744,6 +750,7 @@
   oop* adr_inner_classes() const     { return (oop*)&this->_inner_classes;}
   oop* adr_implementors() const      { return (oop*)&this->_implementors[0];}
   oop* adr_generic_signature() const { return (oop*)&this->_generic_signature;}
+  oop* adr_bootstrap_method() const  { return (oop*)&this->_bootstrap_method;}
   oop* adr_methods_jmethod_ids() const             { return (oop*)&this->_methods_jmethod_ids;}
   oop* adr_methods_cached_itable_indices() const   { return (oop*)&this->_methods_cached_itable_indices;}
   oop* adr_class_annotations() const   { return (oop*)&this->_class_annotations;}
--- a/hotspot/src/share/vm/oops/instanceKlassKlass.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/oops/instanceKlassKlass.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -84,6 +84,7 @@
   MarkSweep::mark_and_push(ik->adr_host_klass());
   MarkSweep::mark_and_push(ik->adr_signers());
   MarkSweep::mark_and_push(ik->adr_generic_signature());
+  MarkSweep::mark_and_push(ik->adr_bootstrap_method());
   MarkSweep::mark_and_push(ik->adr_class_annotations());
   MarkSweep::mark_and_push(ik->adr_fields_annotations());
   MarkSweep::mark_and_push(ik->adr_methods_annotations());
@@ -124,6 +125,7 @@
   PSParallelCompact::mark_and_push(cm, ik->adr_host_klass());
   PSParallelCompact::mark_and_push(cm, ik->adr_signers());
   PSParallelCompact::mark_and_push(cm, ik->adr_generic_signature());
+  PSParallelCompact::mark_and_push(cm, ik->adr_bootstrap_method());
   PSParallelCompact::mark_and_push(cm, ik->adr_class_annotations());
   PSParallelCompact::mark_and_push(cm, ik->adr_fields_annotations());
   PSParallelCompact::mark_and_push(cm, ik->adr_methods_annotations());
@@ -170,6 +172,7 @@
     blk->do_oop(&ik->adr_implementors()[i]);
   }
   blk->do_oop(ik->adr_generic_signature());
+  blk->do_oop(ik->adr_bootstrap_method());
   blk->do_oop(ik->adr_class_annotations());
   blk->do_oop(ik->adr_fields_annotations());
   blk->do_oop(ik->adr_methods_annotations());
@@ -230,6 +233,8 @@
   }
   adr = ik->adr_generic_signature();
   if (mr.contains(adr)) blk->do_oop(adr);
+  adr = ik->adr_bootstrap_method();
+  if (mr.contains(adr)) blk->do_oop(adr);
   adr = ik->adr_class_annotations();
   if (mr.contains(adr)) blk->do_oop(adr);
   adr = ik->adr_fields_annotations();
@@ -274,6 +279,7 @@
     MarkSweep::adjust_pointer(&ik->adr_implementors()[i]);
   }
   MarkSweep::adjust_pointer(ik->adr_generic_signature());
+  MarkSweep::adjust_pointer(ik->adr_bootstrap_method());
   MarkSweep::adjust_pointer(ik->adr_class_annotations());
   MarkSweep::adjust_pointer(ik->adr_fields_annotations());
   MarkSweep::adjust_pointer(ik->adr_methods_annotations());
@@ -454,6 +460,7 @@
     ik->set_breakpoints(NULL);
     ik->init_previous_versions();
     ik->set_generic_signature(NULL);
+    ik->set_bootstrap_method(NULL);
     ik->release_set_methods_jmethod_ids(NULL);
     ik->release_set_methods_cached_itable_indices(NULL);
     ik->set_class_annotations(NULL);
@@ -578,6 +585,11 @@
     } // pvw is cleaned up
   } // rm is cleaned up
 
+  if (ik->bootstrap_method() != NULL) {
+    st->print(BULLET"bootstrap method:  ");
+    ik->bootstrap_method()->print_value_on(st);
+    st->cr();
+  }
   if (ik->generic_signature() != NULL) {
     st->print(BULLET"generic signature: ");
     ik->generic_signature()->print_value_on(st);
--- a/hotspot/src/share/vm/oops/methodDataOop.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/oops/methodDataOop.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -442,6 +442,8 @@
   case Bytecodes::_invokevirtual:
   case Bytecodes::_invokeinterface:
     return VirtualCallData::static_cell_count();
+  case Bytecodes::_invokedynamic:
+    return CounterData::static_cell_count();
   case Bytecodes::_ret:
     return RetData::static_cell_count();
   case Bytecodes::_ifeq:
@@ -570,6 +572,11 @@
     cell_count = VirtualCallData::static_cell_count();
     tag = DataLayout::virtual_call_data_tag;
     break;
+  case Bytecodes::_invokedynamic:
+    // %%% should make a type profile for any invokedynamic that takes a ref argument
+    cell_count = CounterData::static_cell_count();
+    tag = DataLayout::counter_data_tag;
+    break;
   case Bytecodes::_ret:
     cell_count = RetData::static_cell_count();
     tag = DataLayout::ret_data_tag;
--- a/hotspot/src/share/vm/oops/methodOop.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/oops/methodOop.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -161,7 +161,7 @@
 
 
 int methodOopDesc::bci_from(address bcp) const {
-  assert(is_native() && bcp == code_base() || contains(bcp), "bcp doesn't belong to this method");
+  assert(is_native() && bcp == code_base() || contains(bcp) || is_error_reported(), "bcp doesn't belong to this method");
   return bcp - code_base();
 }
 
--- a/hotspot/src/share/vm/oops/methodOop.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/oops/methodOop.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -534,7 +534,10 @@
   oop method_handle_type() const;
   static jint* method_type_offsets_chain();  // series of pointer-offsets, terminated by -1
   // presize interpreter frames for extra interpreter stack entries, if needed
-  static int extra_stack_entries() { return EnableMethodHandles ? (int)MethodHandlePushLimit : 0; }
+  // method handles want to be able to push a few extra values (e.g., a bound receiver), and
+  // invokedynamic sometimes needs to push a bootstrap method, call site, and arglist,
+  // all without checking for a stack overflow
+  static int extra_stack_entries() { return (EnableMethodHandles ? (int)MethodHandlePushLimit : 0) + (EnableInvokeDynamic ? 3 : 0); }
   static int extra_stack_words();  // = extra_stack_entries() * Interpreter::stackElementSize()
   // RedefineClasses() support:
   bool is_old() const                               { return access_flags().is_old(); }
--- a/hotspot/src/share/vm/opto/buildOopMap.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/buildOopMap.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -363,6 +363,20 @@
   */
 #endif
 
+#ifdef ASSERT
+  for( OopMapStream oms1(omap, OopMapValue::derived_oop_value); !oms1.is_done(); oms1.next()) {
+    OopMapValue omv1 = oms1.current();
+    bool found = false;
+    for( OopMapStream oms2(omap,OopMapValue::oop_value); !oms2.is_done(); oms2.next()) {
+      if( omv1.content_reg() == oms2.current().reg() ) {
+        found = true;
+        break;
+      }
+    }
+    assert( found, "derived with no base in oopmap" );
+  }
+#endif
+
   return omap;
 }
 
--- a/hotspot/src/share/vm/opto/bytecodeInfo.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/bytecodeInfo.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -321,7 +321,7 @@
     // stricter than callee_holder->is_initialized()
     ciBytecodeStream iter(caller_method);
     iter.force_bci(caller_bci);
-    int index = iter.get_index_big();
+    int index = iter.get_index_int();
     if( !caller_method->is_klass_loaded(index, true) ) {
       return false;
     }
--- a/hotspot/src/share/vm/opto/chaitin.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/chaitin.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1423,17 +1423,33 @@
   // pointers derived from NULL!  These are always along paths that
   // can't happen at run-time but the optimizer cannot deduce it so
   // we have to handle it gracefully.
+  assert(!derived->bottom_type()->isa_narrowoop() ||
+          derived->bottom_type()->make_ptr()->is_ptr()->_offset == 0, "sanity");
   const TypePtr *tj = derived->bottom_type()->isa_ptr();
   // If its an OOP with a non-zero offset, then it is derived.
-  if( tj->_offset == 0 ) {
+  if( tj == NULL || tj->_offset == 0 ) {
     derived_base_map[derived->_idx] = derived;
     return derived;
   }
   // Derived is NULL+offset?  Base is NULL!
   if( derived->is_Con() ) {
-    Node *base = new (C, 1) ConPNode( TypePtr::NULL_PTR );
-    uint no_lidx = 0;  // an unmatched constant in debug info has no LRG
-    _names.extend(base->_idx, no_lidx);
+    Node *base = _matcher.mach_null();
+    assert(base != NULL, "sanity");
+    if (base->in(0) == NULL) {
+      // Initialize it once and make it shared:
+      // set control to _root and place it into Start block
+      // (where top() node is placed).
+      base->init_req(0, _cfg._root);
+      Block *startb = _cfg._bbs[C->top()->_idx];
+      startb->_nodes.insert(startb->find_node(C->top()), base );
+      _cfg._bbs.map( base->_idx, startb );
+      assert (n2lidx(base) == 0, "should not have LRG yet");
+    }
+    if (n2lidx(base) == 0) {
+      new_lrg(base, maxlrg++);
+    }
+    assert(base->in(0) == _cfg._root &&
+           _cfg._bbs[base->_idx] == _cfg._bbs[C->top()->_idx], "base NULL should be shared");
     derived_base_map[derived->_idx] = base;
     return base;
   }
@@ -1460,9 +1476,13 @@
   }
 
   // Now we see we need a base-Phi here to merge the bases
-  base = new (C, derived->req()) PhiNode( derived->in(0), base->bottom_type() );
-  for( i = 1; i < derived->req(); i++ )
+  const Type *t = base->bottom_type();
+  base = new (C, derived->req()) PhiNode( derived->in(0), t );
+  for( i = 1; i < derived->req(); i++ ) {
     base->init_req(i, find_base_for_derived(derived_base_map, derived->in(i), maxlrg));
+    t = t->meet(base->in(i)->bottom_type());
+  }
+  base->as_Phi()->set_type(t);
 
   // Search the current block for an existing base-Phi
   Block *b = _cfg._bbs[derived->_idx];
@@ -1560,6 +1580,8 @@
           // This works because we are still in SSA during this call.
           Node *derived = lrgs(neighbor)._def;
           const TypePtr *tj = derived->bottom_type()->isa_ptr();
+          assert(!derived->bottom_type()->isa_narrowoop() ||
+                  derived->bottom_type()->make_ptr()->is_ptr()->_offset == 0, "sanity");
           // If its an OOP with a non-zero offset, then it is derived.
           if( tj && tj->_offset != 0 && tj->isa_oop_ptr() ) {
             Node *base = find_base_for_derived( derived_base_map, derived, maxlrg );
--- a/hotspot/src/share/vm/opto/doCall.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/doCall.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -248,6 +248,14 @@
                   holder_klass);
     return true;
   }
+  if (dest_method->is_method_handle_invoke()
+      && holder_klass->name() == ciSymbol::java_dyn_Dynamic()) {
+    // FIXME: NYI
+    uncommon_trap(Deoptimization::Reason_unhandled,
+                  Deoptimization::Action_none,
+                  holder_klass);
+    return true;
+  }
 
   assert(dest_method->will_link(method()->holder(), klass, bc()), "dest_method: typeflow responsibility");
   return false;
@@ -748,6 +756,7 @@
       case Bytecodes::_invokevirtual:   increment_counter(SharedRuntime::nof_inlined_calls_addr()); break;
       case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_inlined_interface_calls_addr()); break;
       case Bytecodes::_invokestatic:
+      case Bytecodes::_invokedynamic:
       case Bytecodes::_invokespecial:   increment_counter(SharedRuntime::nof_inlined_static_calls_addr()); break;
       default: fatal("unexpected call bytecode");
       }
@@ -756,6 +765,7 @@
       case Bytecodes::_invokevirtual:   increment_counter(SharedRuntime::nof_normal_calls_addr()); break;
       case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_interface_calls_addr()); break;
       case Bytecodes::_invokestatic:
+      case Bytecodes::_invokedynamic:
       case Bytecodes::_invokespecial:   increment_counter(SharedRuntime::nof_static_calls_addr()); break;
       default: fatal("unexpected call bytecode");
       }
--- a/hotspot/src/share/vm/opto/graphKit.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/graphKit.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -947,6 +947,7 @@
   case Bytecodes::_invokevirtual:
   case Bytecodes::_invokespecial:
   case Bytecodes::_invokestatic:
+  case Bytecodes::_invokedynamic:
   case Bytecodes::_invokeinterface:
     {
       bool is_static = (depth == 0);
@@ -2979,6 +2980,7 @@
 // See comments on new_instance for the meaning of the other arguments.
 Node* GraphKit::new_array(Node* klass_node,     // array klass (maybe variable)
                           Node* length,         // number of array elements
+                          int   nargs,          // number of arguments to push back for uncommon trap
                           bool raw_mem_only,    // affect only raw memory
                           Node* *return_size_val) {
   jint  layout_con = Klass::_lh_neutral_value;
@@ -2994,6 +2996,7 @@
     Node* cmp_lh = _gvn.transform( new(C, 3) CmpINode(layout_val, intcon(layout_con)) );
     Node* bol_lh = _gvn.transform( new(C, 2) BoolNode(cmp_lh, BoolTest::eq) );
     { BuildCutout unless(this, bol_lh, PROB_MAX);
+      _sp += nargs;
       uncommon_trap(Deoptimization::Reason_class_check,
                     Deoptimization::Action_maybe_recompile);
     }
--- a/hotspot/src/share/vm/opto/graphKit.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/graphKit.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -699,7 +699,7 @@
                      Node* slow_test = NULL,
                      bool raw_mem_only = false,
                      Node* *return_size_val = NULL);
-  Node* new_array(Node* klass_node, Node* count_val,
+  Node* new_array(Node* klass_node, Node* count_val, int nargs,
                   bool raw_mem_only = false, Node* *return_size_val = NULL);
 
   // Handy for making control flow
--- a/hotspot/src/share/vm/opto/library_call.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/library_call.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -3055,9 +3055,7 @@
     // Normal case:  The array type has been cached in the java.lang.Class.
     // The following call works fine even if the array type is polymorphic.
     // It could be a dynamic mix of int[], boolean[], Object[], etc.
-    _sp += nargs;  // set original stack for use by uncommon_trap
-    Node* obj = new_array(klass_node, count_val);
-    _sp -= nargs;
+    Node* obj = new_array(klass_node, count_val, nargs);
     result_reg->init_req(_normal_path, control());
     result_val->init_req(_normal_path, obj);
     result_io ->init_req(_normal_path, i_o());
@@ -3179,9 +3177,7 @@
     Node* orig_tail = _gvn.transform( new(C, 3) SubINode(orig_length, start) );
     Node* moved = generate_min_max(vmIntrinsics::_min, orig_tail, length);
 
-    _sp += nargs;  // set original stack for use by uncommon_trap
-    Node* newcopy = new_array(klass_node, length);
-    _sp -= nargs;
+    Node* newcopy = new_array(klass_node, length, nargs);
 
     // Generate a direct call to the right arraycopy function(s).
     // We know the copy is disjoint but we might not know if the
@@ -3903,10 +3899,8 @@
     set_control(array_ctl);
     Node* obj_length = load_array_length(obj);
     Node* obj_size = NULL;
-    _sp += nargs;  // set original stack for use by uncommon_trap
-    Node* alloc_obj = new_array(obj_klass, obj_length,
+    Node* alloc_obj = new_array(obj_klass, obj_length, nargs,
                                 raw_mem_only, &obj_size);
-    _sp -= nargs;
     assert(obj_size != NULL, "");
     Node* raw_obj = alloc_obj->in(1);
     assert(raw_obj->is_Proj() && raw_obj->in(0)->is_Allocate(), "");
--- a/hotspot/src/share/vm/opto/matcher.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/matcher.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -275,6 +275,12 @@
 
   C->print_method("Before Matching");
 
+  // Create new ideal node ConP #NULL even if it does exist in old space
+  // to avoid false sharing if the corresponding mach node is not used.
+  // The corresponding mach node is only used in rare cases for derived
+  // pointers.
+  Node* new_ideal_null = ConNode::make(C, TypePtr::NULL_PTR);
+
   // Swap out to old-space; emptying new-space
   Arena *old = C->node_arena()->move_contents(C->old_arena());
 
@@ -316,7 +322,16 @@
         }
       }
 
+      // Generate new mach node for ConP #NULL
+      assert(new_ideal_null != NULL, "sanity");
+      _mach_null = match_tree(new_ideal_null);
+      // Don't set control, it will confuse GCM since there are no uses.
+      // The control will be set when this node is used first time
+      // in find_base_for_derived().
+      assert(_mach_null != NULL, "");
+
       C->set_root(xroot->is_Root() ? xroot->as_Root() : NULL);
+
 #ifdef ASSERT
       verify_new_nodes_only(xroot);
 #endif
--- a/hotspot/src/share/vm/opto/matcher.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/matcher.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -109,6 +109,9 @@
   Node* _mem_node;   // Ideal memory node consumed by mach node
 #endif
 
+  // Mach node for ConP #NULL
+  MachNode* _mach_null;
+
 public:
   int LabelRootDepth;
   static const int base2reg[];        // Map Types to machine register types
@@ -122,6 +125,8 @@
   static RegMask mreg2regmask[];
   static RegMask STACK_ONLY_mask;
 
+  MachNode* mach_null() const { return _mach_null; }
+
   bool    is_shared( Node *n ) { return _shared.test(n->_idx) != 0; }
   void   set_shared( Node *n ) {  _shared.set(n->_idx); }
   bool   is_visited( Node *n ) { return _visited.test(n->_idx) != 0; }
--- a/hotspot/src/share/vm/opto/parse.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/parse.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -476,7 +476,7 @@
   void do_newarray(BasicType elemtype);
   void do_anewarray();
   void do_multianewarray();
-  Node* expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions);
+  Node* expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions, int nargs);
 
   // implementation of jsr/ret
   void do_jsr();
--- a/hotspot/src/share/vm/opto/parse1.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/parse1.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -828,6 +828,7 @@
     break;
 
   case Bytecodes::_invokestatic:
+  case Bytecodes::_invokedynamic:
   case Bytecodes::_invokespecial:
   case Bytecodes::_invokevirtual:
   case Bytecodes::_invokeinterface:
--- a/hotspot/src/share/vm/opto/parse2.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/parse2.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -2156,6 +2156,7 @@
     break;
 
   case Bytecodes::_invokestatic:
+  case Bytecodes::_invokedynamic:
   case Bytecodes::_invokespecial:
   case Bytecodes::_invokevirtual:
   case Bytecodes::_invokeinterface:
--- a/hotspot/src/share/vm/opto/parse3.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/parse3.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -335,7 +335,7 @@
 
   const TypeKlassPtr* array_klass_type = TypeKlassPtr::make(array_klass);
   Node* count_val = pop();
-  Node* obj = new_array(makecon(array_klass_type), count_val);
+  Node* obj = new_array(makecon(array_klass_type), count_val, 1);
   push(obj);
 }
 
@@ -345,17 +345,17 @@
 
   Node*   count_val = pop();
   const TypeKlassPtr* array_klass = TypeKlassPtr::make(ciTypeArrayKlass::make(elem_type));
-  Node*   obj = new_array(makecon(array_klass), count_val);
+  Node*   obj = new_array(makecon(array_klass), count_val, 1);
   // Push resultant oop onto stack
   push(obj);
 }
 
 // Expand simple expressions like new int[3][5] and new Object[2][nonConLen].
 // Also handle the degenerate 1-dimensional case of anewarray.
-Node* Parse::expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions) {
+Node* Parse::expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions, int nargs) {
   Node* length = lengths[0];
   assert(length != NULL, "");
-  Node* array = new_array(makecon(TypeKlassPtr::make(array_klass)), length);
+  Node* array = new_array(makecon(TypeKlassPtr::make(array_klass)), length, nargs);
   if (ndimensions > 1) {
     jint length_con = find_int_con(length, -1);
     guarantee(length_con >= 0, "non-constant multianewarray");
@@ -364,7 +364,7 @@
     const Type*    elemtype = _gvn.type(array)->is_aryptr()->elem();
     const intptr_t header   = arrayOopDesc::base_offset_in_bytes(T_OBJECT);
     for (jint i = 0; i < length_con; i++) {
-      Node*    elem   = expand_multianewarray(array_klass_1, &lengths[1], ndimensions-1);
+      Node*    elem   = expand_multianewarray(array_klass_1, &lengths[1], ndimensions-1, nargs);
       intptr_t offset = header + ((intptr_t)i << LogBytesPerHeapOop);
       Node*    eaddr  = basic_plus_adr(array, offset);
       store_oop_to_array(control(), array, eaddr, adr_type, elem, elemtype, T_OBJECT);
@@ -419,7 +419,7 @@
   // Can use multianewarray instead of [a]newarray if only one dimension,
   // or if all non-final dimensions are small constants.
   if (expand_count == 1 || (1 <= expand_count && expand_count <= expand_limit)) {
-    Node* obj = expand_multianewarray(array_klass, &length[0], ndimensions);
+    Node* obj = expand_multianewarray(array_klass, &length[0], ndimensions, ndimensions);
     push(obj);
     return;
   }
--- a/hotspot/src/share/vm/opto/parseHelper.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/opto/parseHelper.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -414,6 +414,7 @@
     profile_receiver_type(receiver);
     break;
   case Bytecodes::_invokestatic:
+  case Bytecodes::_invokedynamic:
   case Bytecodes::_invokespecial:
     break;
   default: fatal("unexpected call bytecode");
--- a/hotspot/src/share/vm/prims/jvm.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/prims/jvm.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -2222,6 +2222,9 @@
     case JVM_CONSTANT_InterfaceMethodref:
     case JVM_CONSTANT_Methodref:
       return cp->uncached_name_ref_at(cp_index)->as_utf8();
+    case JVM_CONSTANT_NameAndType:
+      // for invokedynamic
+      return cp->nt_name_ref_at(cp_index)->as_utf8();
     default:
       fatal("JVM_GetCPMethodNameUTF: illegal constant");
   }
@@ -2239,6 +2242,9 @@
     case JVM_CONSTANT_InterfaceMethodref:
     case JVM_CONSTANT_Methodref:
       return cp->uncached_signature_ref_at(cp_index)->as_utf8();
+    case JVM_CONSTANT_NameAndType:
+      // for invokedynamic
+      return cp->nt_signature_ref_at(cp_index)->as_utf8();
     default:
       fatal("JVM_GetCPMethodSignatureUTF: illegal constant");
   }
--- a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -659,15 +659,21 @@
       case Bytecodes::_invokevirtual   :  // fall through
       case Bytecodes::_invokespecial   :  // fall through
       case Bytecodes::_invokestatic    :  // fall through
+      case Bytecodes::_invokedynamic   :  // fall through
       case Bytecodes::_invokeinterface :
         assert(len == 3 || (code == Bytecodes::_invokeinterface && len ==5),
                "sanity check");
+        int cpci = Bytes::get_native_u2(bcp+1);
+        bool is_invokedynamic = (EnableInvokeDynamic && code == Bytecodes::_invokedynamic);
+        if (is_invokedynamic)
+          cpci = Bytes::get_native_u4(bcp+1);
         // cache cannot be pre-fetched since some classes won't have it yet
         ConstantPoolCacheEntry* entry =
-          mh->constants()->cache()->entry_at(Bytes::get_native_u2(bcp+1));
+          mh->constants()->cache()->main_entry_at(cpci);
         int i = entry->constant_pool_index();
         assert(i < mh->constants()->length(), "sanity check");
         Bytes::put_Java_u2((address)(p+1), (u2)i);     // java byte ordering
+        if (is_invokedynamic)  *(p+3) = *(p+4) = 0;
         break;
       }
     }
--- a/hotspot/src/share/vm/prims/methodComparator.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/prims/methodComparator.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -148,8 +148,8 @@
   case Bytecodes::_invokespecial   : // fall through
   case Bytecodes::_invokestatic    : // fall through
   case Bytecodes::_invokeinterface : {
-    u2 cpci_old = _s_old->get_index_big();
-    u2 cpci_new = _s_new->get_index_big();
+    u2 cpci_old = _s_old->get_index_int();
+    u2 cpci_new = _s_new->get_index_int();
     // Check if the names of classes, field/method names and signatures at these indexes
     // are the same. Indices which are really into constantpool cache (rather than constant
     // pool itself) are accepted by the constantpool query routines below.
--- a/hotspot/src/share/vm/prims/methodHandles.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/prims/methodHandles.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -2279,6 +2279,16 @@
 JVM_END
 
 
+JVM_ENTRY(void, MH_linkCallSite(JNIEnv *env, jobject igcls, jobject site_jh, jobject target_jh)) {
+  // No special action required, yet.
+  oop site_oop = JNIHandles::resolve(site_jh);
+  if (site_oop == NULL || site_oop->klass() != SystemDictionary::CallSiteImpl_klass())
+    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "call site");
+  sun_dyn_CallSiteImpl::set_target(site_oop, JNIHandles::resolve(target_jh));
+}
+JVM_END
+
+
 /// JVM_RegisterMethodHandleMethods
 
 #define ADR "J"
@@ -2297,6 +2307,7 @@
 #define AMH   IDYN"AdapterMethodHandle;"
 #define BMH   IDYN"BoundMethodHandle;"
 #define DMH   IDYN"DirectMethodHandle;"
+#define CSTI  IDYN"CallSiteImpl;"
 
 #define CC (char*)  /*cast a literal from (const char*)*/
 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &f)
@@ -2320,12 +2331,19 @@
   {CC"getMembers",              CC"("CLS""STRG""STRG"I"CLS"I["MEM")I",  FN_PTR(MHI_getMembers)}
 };
 
+// More entry points specifically for EnableInvokeDynamic.
+static JNINativeMethod methods2[] = {
+  {CC"linkCallSite",            CC"("CSTI MH")V",               FN_PTR(MH_linkCallSite)}
+};
+
 
 // This one function is exported, used by NativeLookup.
 
 JVM_ENTRY(void, JVM_RegisterMethodHandleMethods(JNIEnv *env, jclass MHN_class)) {
   assert(MethodHandles::spot_check_entry_names(), "entry enum is OK");
 
+  // note: this explicit warning-producing stuff will be replaced by auto-detection of the JSR 292 classes
+
   if (!EnableMethodHandles) {
     warning("JSR 292 method handles are disabled in this JVM.  Use -XX:+EnableMethodHandles to enable.");
     return;  // bind nothing
@@ -2343,5 +2361,23 @@
       MethodHandles::set_enabled(true);
     }
   }
+
+  if (!EnableInvokeDynamic) {
+    warning("JSR 292 invokedynamic is disabled in this JVM.  Use -XX:+EnableInvokeDynamic to enable.");
+    return;  // bind nothing
+  }
+
+  {
+    ThreadToNativeFromVM ttnfv(thread);
+
+    int status = env->RegisterNatives(MHN_class, methods2, sizeof(methods2)/sizeof(JNINativeMethod));
+    if (env->ExceptionOccurred()) {
+      MethodHandles::set_enabled(false);
+      warning("JSR 292 method handle code is mismatched to this JVM.  Disabling support.");
+      env->ExceptionClear();
+    } else {
+      MethodHandles::set_enabled(true);
+    }
+  }
 }
 JVM_END
--- a/hotspot/src/share/vm/runtime/arguments.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/runtime/arguments.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -2627,6 +2627,12 @@
   }
 #endif // PRODUCT
 
+  if (EnableInvokeDynamic && !EnableMethodHandles) {
+    if (!FLAG_IS_DEFAULT(EnableMethodHandles)) {
+      warning("forcing EnableMethodHandles true to allow EnableInvokeDynamic");
+    }
+    EnableMethodHandles = true;
+  }
   if (EnableMethodHandles && !AnonymousClasses) {
     if (!FLAG_IS_DEFAULT(AnonymousClasses)) {
       warning("forcing AnonymousClasses true to enable EnableMethodHandles");
--- a/hotspot/src/share/vm/runtime/globals.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -3316,6 +3316,12 @@
   diagnostic(bool, OptimizeMethodHandles, true,                             \
           "when constructing method handles, try to improve them")          \
                                                                             \
+  product(bool, EnableInvokeDynamic, false,                                 \
+          "recognize the invokedynamic instruction")                        \
+                                                                            \
+  develop(bool, TraceInvokeDynamic, false,                                  \
+          "trace internal invoke dynamic operations")                       \
+                                                                            \
   product(bool, TaggedStackInterpreter, false,                              \
           "Insert tags in interpreter execution stack for oopmap generaion")\
                                                                             \
--- a/hotspot/src/share/vm/utilities/globalDefinitions.hpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp	Wed Jul 05 16:52:18 2017 +0200
@@ -572,8 +572,8 @@
 
 enum TosState {         // describes the tos cache contents
   btos = 0,             // byte, bool tos cached
-  ctos = 1,             // short, char tos cached
-  stos = 2,             // short, char tos cached
+  ctos = 1,             // char tos cached
+  stos = 2,             // short tos cached
   itos = 3,             // int tos cached
   ltos = 4,             // long tos cached
   ftos = 5,             // float tos cached
@@ -588,7 +588,7 @@
 inline TosState as_TosState(BasicType type) {
   switch (type) {
     case T_BYTE   : return btos;
-    case T_BOOLEAN: return btos;
+    case T_BOOLEAN: return btos; // FIXME: Add ztos
     case T_CHAR   : return ctos;
     case T_SHORT  : return stos;
     case T_INT    : return itos;
@@ -602,6 +602,22 @@
   return ilgl;
 }
 
+inline BasicType as_BasicType(TosState state) {
+  switch (state) {
+    //case ztos: return T_BOOLEAN;//FIXME
+    case btos : return T_BYTE;
+    case ctos : return T_CHAR;
+    case stos : return T_SHORT;
+    case itos : return T_INT;
+    case ltos : return T_LONG;
+    case ftos : return T_FLOAT;
+    case dtos : return T_DOUBLE;
+    case atos : return T_OBJECT;
+    case vtos : return T_VOID;
+  }
+  return T_ILLEGAL;
+}
+
 
 // Helper function to convert BasicType info into TosState
 // Note: Cannot define here as it uses global constant at the time being.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/6589834/Test_ia32.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6589834
+ * @summary deoptimization problem with -XX:+DeoptimizeALot
+ *
+ * @run main/othervm -server Test_ia32
+ */
+
+/***************************************************************************************
+NOTE: The bug shows up (with several "Bug!" message) even without the
+      flag -XX:+DeoptimizeALot. In a debug build, you may want to try
+      the flags -XX:+VerifyStack and -XX:+DeoptimizeALot to get more information.
+****************************************************************************************/
+import java.lang.reflect.Constructor;
+
+public class Test_ia32 {
+
+    public static int NUM_THREADS = 100;
+
+    public static int CLONE_LENGTH = 1000;
+
+    public static void main(String[] args) throws InterruptedException, ClassNotFoundException {
+
+        Reflector[] threads = new Reflector[NUM_THREADS];
+        for (int i = 0; i < threads.length; i++) {
+            threads[i] = new Reflector();
+            threads[i].start();
+        }
+
+        System.out.println("Give Reflector.run() some time to compile...");
+        Thread.sleep(5000);
+
+        System.out.println("Load RMISecurityException causing run() deoptimization");
+        ClassLoader.getSystemClassLoader().loadClass("java.rmi.RMISecurityException");
+
+        for (Reflector thread : threads)
+            thread.requestStop();
+
+        for (Reflector thread : threads)
+            try {
+                thread.join();
+            } catch (InterruptedException e) {
+                System.out.println(e);
+            }
+
+    }
+
+}
+
+class Reflector extends Thread {
+
+    volatile boolean _doSpin = true;
+
+    Test_ia32[] _tests;
+
+    Reflector() {
+        _tests = new Test_ia32[Test_ia32.CLONE_LENGTH];
+        for (int i = 0; i < _tests.length; i++) {
+            _tests[i] = new Test_ia32();
+        }
+    }
+
+    static int g(int i1, int i2, Test_ia32[] arr, int i3, int i4) {
+
+        if (!(i1==1 && i2==2 && i3==3 && i4==4)) {
+            System.out.println("Bug!");
+        }
+
+        return arr.length;
+    }
+
+    static int f(Test_ia32[] arr) {
+        return g(1, 2, arr.clone(), 3, 4);
+    }
+
+    @Override
+    public void run() {
+        Constructor[] ctrs = null;
+        Class<Test_ia32> klass = Test_ia32.class;
+        try {
+            ctrs = klass.getConstructors();
+        } catch (SecurityException e) {
+            System.out.println(e);
+        }
+
+        try {
+            while (_doSpin) {
+                if (f(_tests) < 0)
+                    System.out.println("return value usage");
+            }
+        } catch (NullPointerException e) {
+            e.printStackTrace();
+        }
+
+        System.out.println(this + " - stopped.");
+    }
+
+    public void requestStop() {
+        System.out.println(this + " - stop requested.");
+        _doSpin = false;
+    }
+
+}
--- a/jaxp/.hgignore	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/.hgignore	Wed Jul 05 16:52:18 2017 +0200
@@ -1,3 +1,4 @@
 ^build/
 ^dist/
+^webrev/
 ^nbproject/private/
--- a/jaxp/.hgtags	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/.hgtags	Wed Jul 05 16:52:18 2017 +0200
@@ -30,3 +30,4 @@
 e8837366d3fd72f7c7a47ebfdbd5106c16156f12 jdk7-b53
 946a9f0c493261fa6a010dc33e61b9b535ba80c1 jdk7-b54
 039945fba683ee6773a721e2bd4e449f6133769a jdk7-b55
+c197c6801271c60f9c9f5d18fcc95b59e76dcd54 jdk7-b56
--- a/jaxp/THIRD_PARTY_README	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/THIRD_PARTY_README	Wed Jul 05 16:52:18 2017 +0200
@@ -61,6 +61,28 @@
 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 THE POSSIBILITY OF SUCH DAMAGE.
+
+%% This notice is provided with respect to littlecms, which may be included with this software:  
+
+Little cms
+Copyright (C) 1998-2004 Marti Maria
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 %% This notice is provided with respect to zlib 1.1.3, which may be included with this software:   
 
 Acknowledgments:
@@ -115,16 +137,6 @@
 The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.
 ____________________________________
 This formulation of W3C's notice and license became active on August 14 1998 so as to improve compatibility with GPL. This version ensures that W3C software licensing terms are no more restrictive than GPL and consequently W3C software may be distributed in GPL packages. See the older formulation for the policy prior to this date. Please see our Copyright FAQ for common questions about using materials from our site, including specific terms and conditions for packages like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed to site-policy@w3.org.

-%% This notice is provided with respect to jscheme.jar, which may be included with this software: 
-Software License Agreement
-Copyright © 1998-2002 by Peter Norvig. 
-Permission is granted to anyone to use this software, in source or object code form, on any computer system, and to modify, compile, decompile, run, and redistribute it to anyone else, subject to the following restrictions: 
-1.The author makes no warranty of any kind, either expressed or implied, about the suitability of this software for any purpose.
-2.The author accepts no liability of any kind for damages or other consequences of the use of this software, even if they arise from defects in the software.
-3.The origin of this software must not be misrepresented, either by explicit claim or by omission.
-4.Altered versions must be plainly marked as such, and must not be misrepresented as being the original software. Altered versions may be distributed in packages under other licenses (such as the GNU license). 
-If you find this software useful, it would be nice if you let me (peter@norvig.com) know about it, and nicer still if you send me modifications that you are willing to share. However, you are not required to do so.
 
 
 %% This notice is provided with respect to PC/SC Lite for Suse Linux v. 1.1.1, which may be included with this software: 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/TRADEMARK	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,41 @@
+OpenJDK Trademark Notice
+Version 1.1, 2008/3/10
+
+OpenJDK (the "Name") is a trademark of Sun Microsystems, Inc. (the "Owner").
+Owner permits any person obtaining a copy of this software (the "Software")
+which is based on original software retrieved from one of the following
+websites: http://download.java.net/openjdk, http://hg.openjdk.java.net/jdk6,
+or http://openjdk.java.net (each a "Website", with the original software made
+available by the Owner on a Website being known as the "Website Software") to
+use the Name in package names and version strings of the Software subject to
+the following conditions:
+
+  - The Software is a substantially complete implementation of the OpenJDK
+    development kit or runtime environment code made available by Owner on a
+    Website, and the vast majority of the Software code is identical to the
+    upstream Website Software;
+
+  - No permission is hereby granted to use the Name in any other manner,
+    unless such use constitutes "fair use."
+
+  - The Owner makes no warranties of any kind respecting the Name and all
+    representations and warranties, including any implied warranty of
+    merchantability, fitness for a particular purpose or non-infringement
+    are hereby disclaimed; and
+
+  - This notice and the following legend are included in all copies of the
+    Software or portions of it:
+
+        OpenJDK is a trademark or registered trademark of Sun Microsystems,
+        Inc. in the United States and other countries.
+
+The Name may also be used in connection with descriptions of the Software that
+constitute "fair use," such as "derived from the OpenJDK code base" or "based
+on the OpenJDK source code."
+
+Owner intends to revise this Notice as necessary in order to meet the needs of
+the OpenJDK Community.  Please send questions or comments about this Notice to
+Sun Microsystems at openjdk-tm@sun.com.  Revisions to this Notice will be
+announced on the public mailing list announce@openjdk.java.net, to which you
+may subscribe by visiting http://mail.openjdk.java.net.  The latest version of
+this Notice may be found at http://openjdk.java.net/legal.
--- a/jaxp/make/jprt.properties	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/make/jprt.properties	Wed Jul 05 16:52:18 2017 +0200
@@ -32,13 +32,13 @@
 solaris_sparcv9_5.10,\
 solaris_i586_5.10,\
 solaris_x64_5.10,\
-linux_i586,\
-linux_x64,\
+linux_i586_2.6,\
+linux_x64_2.6,\
 windows_i586,\
 windows_x64
 
 # The different build flavors we want
-jprt.build.flavors=product
+jprt.build.flavors=product,fastdebug
 
 # Explicitly designate what the 32bit match is for the 64bit build
 jprt.solaris_sparcv9.build.platform.match32=solaris_sparc_5.10
--- a/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Import.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Import.java	Wed Jul 05 16:52:18 2017 +0200
@@ -18,7 +18,7 @@
  * limitations under the License.
  */
 /*
- * $Id: Import.java,v 1.2.4.1 2005/09/12 10:32:33 pvedula Exp $
+ * $Id: Import.java,v 1.8 2007/04/09 21:30:40 joehw Exp $
  */
 
 package com.sun.org.apache.xalan.internal.xsltc.compiler;
--- a/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Include.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Include.java	Wed Jul 05 16:52:18 2017 +0200
@@ -18,7 +18,7 @@
  * limitations under the License.
  */
 /*
- * $Id: Include.java,v 1.2.4.1 2005/09/01 15:44:18 pvedula Exp $
+ * $Id: Include.java,v 1.8 2007/04/09 21:30:41 joehw Exp $
  */
 
 package com.sun.org.apache.xalan.internal.xsltc.compiler;
--- a/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Type.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Type.java	Wed Jul 05 16:52:18 2017 +0200
@@ -18,7 +18,7 @@
  * limitations under the License.
  */
 /*
- * $Id: Type.java,v 1.2.4.2 2005/09/15 18:34:13 jeffsuttor Exp $
+ * $Id: Type.java,v 1.8 2007/03/28 16:51:19 joehw Exp $
  */
 
 package com.sun.org.apache.xalan.internal.xsltc.compiler.util;
--- a/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/SAX2DOM.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/SAX2DOM.java	Wed Jul 05 16:52:18 2017 +0200
@@ -18,7 +18,7 @@
  * limitations under the License.
  */
 /*
- * $Id: SAX2DOM.java,v 1.7 2006/01/26 07:01:40 jeffsuttor Exp $
+ * $Id: SAX2DOM.java,v 1.8.2.1 2006/12/04 18:45:41 spericas Exp $
  */
 
 
@@ -68,7 +68,7 @@
     static final DocumentBuilderFactory _factory =
             DocumentBuilderFactory.newInstance();
 
-    public SAX2DOM() throws ParserConfigurationException {
+   public SAX2DOM() throws ParserConfigurationException {
         synchronized (SAX2DOM.class) {
           _document = _factory.newDocumentBuilder().newDocument();
         }
--- a/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -18,7 +18,7 @@
  * limitations under the License.
  */
 /*
- * $Id: TemplatesImpl.java,v 1.2.4.1 2005/09/06 12:19:26 pvedula Exp $
+ * $Id: TemplatesImpl.java,v 1.8 2007/03/26 20:12:27 spericas Exp $
  */
 
 package com.sun.org.apache.xalan.internal.xsltc.trax;
--- a/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -18,7 +18,7 @@
  * limitations under the License.
  */
 /*
- * $Id: TransformerFactoryImpl.java,v 1.2.4.1 2005/09/15 06:15:38 pvedula Exp $
+ * $Id: TransformerFactoryImpl.java,v 1.8 2007/04/09 21:30:41 joehw Exp $
  */
 
 package com.sun.org.apache.xalan.internal.xsltc.trax;
--- a/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -18,7 +18,7 @@
  * limitations under the License.
  */
 /*
- * $Id: TransformerImpl.java,v 1.5 2005/09/28 13:48:46 pvedula Exp $
+ * $Id: TransformerImpl.java,v 1.10 2007/06/13 01:57:09 joehw Exp $
  */
 
 package com.sun.org.apache.xalan.internal.xsltc.trax;
--- a/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/dom/EntityImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/dom/EntityImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -148,7 +148,6 @@
      * @exception DOMException
      *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
      */
-
     public void setPrefix(String prefix)
         throws DOMException
     {
--- a/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/PropertyManager.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/PropertyManager.java	Wed Jul 05 16:52:18 2017 +0200
@@ -45,8 +45,8 @@
 public class PropertyManager {
 
 
-    protected static final String STAX_NOTATIONS = "javax.xml.stream.notations";
-    protected static final String STAX_ENTITIES = "javax.xml.stream.entities";
+    public static final String STAX_NOTATIONS = "javax.xml.stream.notations";
+    public static final String STAX_ENTITIES = "javax.xml.stream.entities";
 
     private static final String STRING_INTERNING = "http://xml.org/sax/features/string-interning";
 
--- a/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -289,6 +289,8 @@
     protected boolean fReportCdataEvent = false ;
     protected boolean fIsCoalesce = false ;
     protected String fDeclaredEncoding =  null;
+    /** Disallow doctype declaration. */
+    protected boolean fDisallowDoctype = false;
 
     // drivers
 
@@ -1852,6 +1854,11 @@
         }
         // start general entity
         if (!fEntityStore.isDeclaredEntity(name)) {
+            //SUPPORT_DTD=false && ReplaceEntityReferences should throw exception
+            if (fDisallowDoctype && fReplaceEntityReferences) {
+                reportFatalError("EntityNotDeclared", new Object[]{name});
+                return;
+            }
             //REVISIT: one more case needs to be included: external PE and standalone is no
             if ( fHasExternalDTD && !fStandalone) {
                 if (fValidation)
--- a/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -62,6 +62,10 @@
  * @author Arnaud  Le Hors, IBM
  * @author Eric Ye, IBM
  * @author Sunitha Reddy, Sun Microsystems
+ *
+ * Refer to the table in unit-test javax.xml.stream.XMLStreamReaderTest.SupportDTD for changes
+ * related to property SupportDTD.
+ * @author Joe Wang, Sun Microsystems
  */
 public class XMLDocumentScannerImpl
         extends XMLDocumentFragmentScannerImpl{
@@ -185,9 +189,6 @@
     /** Load external DTD. */
     protected boolean fLoadExternalDTD = true;
 
-    /** Disallow doctype declaration. */
-    protected boolean fDisallowDoctype = false;
-
     // state
 
     /** Seen doctype declaration. */
@@ -227,8 +228,8 @@
     /** String. */
     private XMLString fString = new XMLString();
 
-    public static final char [] DOCTYPE = {'D','O','C','T','Y','P','E'};
-    public static final char [] COMMENTSTRING = {'-','-'};
+    private static final char [] DOCTYPE = {'D','O','C','T','Y','P','E'};
+    private static final char [] COMMENTSTRING = {'-','-'};
 
     //
     // Constructors
@@ -708,6 +709,12 @@
     //
     // Private methods
     //
+    /** Set the scanner state after scanning DTD */
+    protected void setEndDTDScanState() {
+        setScannerState(SCANNER_STATE_PROLOG);
+        setDriver(fPrologDriver);
+        fEntityManager.setEntityHandler(XMLDocumentScannerImpl.this);
+    }
 
     /** Returns the scanner state name. */
     protected String getScannerStateName(int state) {
@@ -930,19 +937,20 @@
                             reportFatalError("AlreadySeenDoctype", null);
                         }
                         fSeenDoctypeDecl = true;
-                        if(fDTDDriver == null){
-                            fDTDDriver = new DTDDriver();
-                        }
-
                         // scanDoctypeDecl() sends XNI doctypeDecl event that
                         // in SAX is converted to startDTD() event.
                         if (scanDoctypeDecl(fDisallowDoctype)) {
+                            //allow parsing of entity decls to continue in order to stay well-formed
                             setScannerState(SCANNER_STATE_DTD_INTERNAL_DECLS);
                             fSeenInternalSubset = true;
+                            if(fDTDDriver == null){
+                                fDTDDriver = new DTDDriver();
+                            }
                             setDriver(fContentDriver);
-                            int dtdEvent = fDTDDriver.next();
+                            //always return DTD event, the event however, will not contain any entities
+                            return fDTDDriver.next();
                             // If no DTD support, ignore and continue parsing
-                            return fDisallowDoctype ? next() : dtdEvent;
+                            //return fDisallowDoctype ? next() : dtdEvent;
                         }
 
                         /** xxx:check this part again
@@ -955,17 +963,17 @@
                         }
                          */
 
-                        if (fDisallowDoctype) {
-                            setScannerState(SCANNER_STATE_PROLOG);
-                            return next();
-                        }
-
                         // handle external subset
                         if (fDoctypeSystemId != null) {
                             if (((fValidation || fLoadExternalDTD)
                                 && (fValidationManager == null || !fValidationManager.isCachedDTD()))) {
-                                setScannerState(SCANNER_STATE_DTD_EXTERNAL);
+                                if (!fDisallowDoctype)
+                                    setScannerState(SCANNER_STATE_DTD_EXTERNAL);
+                                else
+                                    setScannerState(SCANNER_STATE_PROLOG);
                                 setDriver(fContentDriver);
+                                if(fDTDDriver == null)
+                                    fDTDDriver = new DTDDriver();
                                 return fDTDDriver.next();
 
                             }
@@ -976,8 +984,13 @@
                                 // This handles the case of a DOCTYPE that had neither an internal subset or an external subset.
                                 fDTDScanner.setInputSource(fExternalSubsetSource);
                                 fExternalSubsetSource = null;
-                                setScannerState(SCANNER_STATE_DTD_EXTERNAL_DECLS);
+                                if (!fDisallowDoctype)
+                                    setScannerState(SCANNER_STATE_DTD_EXTERNAL_DECLS);
+                                else
+                                    setScannerState(SCANNER_STATE_PROLOG);
                                 setDriver(fContentDriver);
+                                if(fDTDDriver == null)
+                                    fDTDDriver = new DTDDriver();
                                 return fDTDDriver.next();
                             }
                         }
@@ -1117,19 +1130,21 @@
                                 }
                                 fMarkupDepth--;
 
-                                // scan external subset next
-                                if (!XMLDocumentScannerImpl.this.fDisallowDoctype &&
-                                        fDoctypeSystemId != null && (fValidation || fLoadExternalDTD)) {
-                                    setScannerState(SCANNER_STATE_DTD_EXTERNAL);
+                                if (fDisallowDoctype) {
+                                    //simply reset the entity store without having to mess around
+                                    //with the DTD Scanner code
+                                    fEntityStore = fEntityManager.getEntityStore();
+                                    fEntityStore.reset();
+                                } else {
+                                    // scan external subset next unless we are ignoring DTDs
+                                    if (fDoctypeSystemId != null && (fValidation || fLoadExternalDTD)) {
+                                        setScannerState(SCANNER_STATE_DTD_EXTERNAL);
+                                        break;
+                                    }
                                 }
 
-                                // break out of here
-                                else {
-                                    setScannerState(SCANNER_STATE_PROLOG);
-                                    setDriver(fPrologDriver);
-                                    fEntityManager.setEntityHandler(XMLDocumentScannerImpl.this);
-                                    return true;
-                                }
+                                setEndDTDScanState();
+                                return true;
                             }
                             break;
                         }
@@ -1160,13 +1175,16 @@
                             boolean completeDTD = true;
                             boolean moreToScan = fDTDScanner.scanDTDExternalSubset(completeDTD);
                             if (!moreToScan) {
-                                setScannerState(SCANNER_STATE_PROLOG);
-                                setDriver(fPrologDriver);
-                                fEntityManager.setEntityHandler(XMLDocumentScannerImpl.this);
+                                setEndDTDScanState();
                                 return true;
                             }
                             break;
                         }
+                        case SCANNER_STATE_PROLOG : {
+                            // skip entity decls
+                            setEndDTDScanState();
+                            return true;
+                        }
                         default: {
                             throw new XNIException("DTDDriver#dispatch: scanner state="+fScannerState+" ("+getScannerStateName(fScannerState)+')');
                         }
--- a/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/XMLStreamFilterImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/XMLStreamFilterImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -56,7 +56,6 @@
      * hasNext() to advance the underlining stream in order to find the next acceptable event
      */
     private boolean fStreamAdvancedByHasNext = false;
-
     /** Creates a new instance of XMLStreamFilterImpl */
 
     public XMLStreamFilterImpl(XMLStreamReader reader,StreamFilter filter){
@@ -436,7 +435,6 @@
      */
     public String getVersion() {
         return fStreamReader.getVersion();
-
     }
 
     /**
@@ -532,5 +530,4 @@
     public String getAttributeLocalName(int index){
         return fStreamReader.getAttributeLocalName(index);
     }
-
 }
--- a/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XIncludeMessages.properties	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XIncludeMessages.properties	Wed Jul 05 16:52:18 2017 +0200
@@ -34,4 +34,3 @@
 # Messages from erroneous set-up
 IncompatibleNamespaceContext = The type of the NamespaceContext is incompatible with using XInclude; it must be an instance of XIncludeNamespaceSupport
 ExpandedSystemId = Could not expand system id of included resource
-null
--- a/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSAttributeChecker.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSAttributeChecker.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1214,19 +1214,29 @@
             int max = ((XInt)attrValues[ATTIDX_MAXOCCURS]).intValue();
             if (max != SchemaSymbols.OCCURRENCE_UNBOUNDED) {
 
+                // maxOccurLimit is only check in secure mode
+                if (fSchemaHandler.fSecureProcessing != null) {
+                    String localName = element.getLocalName();
+
                 // The maxOccurs restriction no longer applies to elements
-                // and wildcards. These are now validated using a constant
-                // space algorithm. The restriction still applies to model
-                // groups such as xs:sequence.
+                    // and wildcards in a sequence in which they are the only
+                    // particle. These are now validated using a constant
+                    // space algorithm. The restriction still applies to all
+                    // other cases.
 
-                String localName = element.getLocalName();
-                if (fSchemaHandler.fSecureProcessing != null &&
-                        !localName.equals("element") && !localName.equals("any")) {
+                    // Determine if constant-space algorithm can be applied
+                    final boolean optimize =
+                            (localName.equals("element") || localName.equals("any")) &&
+                            (element.getNextSibling() == null) &&
+                            (element.getPreviousSibling() == null) &&
+                            (element.getParentNode().getLocalName().equals("sequence"));
+
+                    if (!optimize) {
                     //Revisit :: IMO this is not right place to check
                     // maxOccurNodeLimit.
                     int maxOccurNodeLimit = fSchemaHandler.fSecureProcessing.getMaxOccurNodeLimit();
                     if (max > maxOccurNodeLimit) {
-                        reportSchemaError("maxOccurLimit", new Object[] {new Integer(maxOccurNodeLimit)}, element);
+                        reportSchemaFatalError("maxOccurLimit", new Object[] {new Integer(maxOccurNodeLimit)}, element);
 
                         // reset max values in case processing continues on error
                         attrValues[ATTIDX_MAXOCCURS] = fXIntPool.getXInt(maxOccurNodeLimit);
@@ -1234,6 +1244,7 @@
                         max = maxOccurNodeLimit;
                     }
                 }
+                }
 
                 if (min > max) {
                     reportSchemaError ("p-props-correct.2.1",
@@ -1607,6 +1618,10 @@
         return retValue;
     }
 
+    void reportSchemaFatalError (String key, Object[] args, Element ele) {
+        fSchemaHandler.reportSchemaFatalError(key, args, ele);
+    }
+
     void reportSchemaError (String key, Object[] args, Element ele) {
         fSchemaHandler.reportSchemaError(key, args, ele);
     }
--- a/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDHandler.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDHandler.java	Wed Jul 05 16:52:18 2017 +0200
@@ -2523,25 +2523,26 @@
         return false;
     }
 
+    void reportSchemaFatalError(String key, Object[] args, Element ele) {
+        reportSchemaErr(key, args, ele, XMLErrorReporter.SEVERITY_FATAL_ERROR);
+    }
+
     void reportSchemaError(String key, Object[] args, Element ele) {
+        reportSchemaErr(key, args, ele, XMLErrorReporter.SEVERITY_ERROR);
+    }
+
+    void reportSchemaWarning(String key, Object[] args, Element ele) {
+        reportSchemaErr(key, args, ele, XMLErrorReporter.SEVERITY_WARNING);
+    }
+
+    void reportSchemaErr(String key, Object[] args, Element ele, short type) {
         if (element2Locator(ele, xl)) {
             fErrorReporter.reportError(xl, XSMessageFormatter.SCHEMA_DOMAIN,
-                    key, args, XMLErrorReporter.SEVERITY_ERROR);
+                    key, args, type);
         }
         else {
             fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN,
-                    key, args, XMLErrorReporter.SEVERITY_ERROR);
-        }
-    }
-
-    void reportSchemaWarning(String key, Object[] args, Element ele) {
-        if (element2Locator(ele, xl)) {
-            fErrorReporter.reportError(xl, XSMessageFormatter.SCHEMA_DOMAIN,
-                    key, args, XMLErrorReporter.SEVERITY_WARNING);
-        }
-        else {
-            fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN,
-                    key, args, XMLErrorReporter.SEVERITY_WARNING);
+                    key, args, type);
         }
     }
 
--- a/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java	Wed Jul 05 16:52:18 2017 +0200
@@ -111,6 +111,10 @@
         fXMLSchemaLoader.setProperty(XMLGRAMMAR_POOL, fXMLGrammarPoolWrapper);
         fXMLSchemaLoader.setEntityResolver(fDOMEntityResolverWrapper);
         fXMLSchemaLoader.setErrorHandler(fErrorHandlerWrapper);
+
+        // Enable secure processing feature by default
+        fSecurityManager = new SecurityManager();
+        fXMLSchemaLoader.setProperty(SECURITY_MANAGER, fSecurityManager);
     }
 
     /**
--- a/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/xinclude/XIncludeHandler.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xerces/internal/xinclude/XIncludeHandler.java	Wed Jul 05 16:52:18 2017 +0200
@@ -943,8 +943,7 @@
                 setState(STATE_IGNORE);
             }
             else {
-                reportFatalError("NoFallback",
-                    new Object[] { attributes.getValue(null, "href") });
+                reportFatalError("NoFallback");
             }
         }
         else if (isFallbackElement(element)) {
@@ -1002,8 +1001,7 @@
             // we check to see if the children of this include element contained a fallback
             if (getState() == STATE_EXPECT_FALLBACK
                 && !getSawFallback(fDepth + 1)) {
-                reportFatalError("NoFallback",
-                    new Object[] { "unknown" });
+                reportFatalError("NoFallback");
             }
         }
         if (isFallbackElement(element)) {
--- a/jaxp/src/share/classes/com/sun/org/apache/xml/internal/utils/ThreadControllerWrapper.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xml/internal/utils/ThreadControllerWrapper.java	Wed Jul 05 16:52:18 2017 +0200
@@ -53,7 +53,35 @@
   {
 
     /**
-     * Will get a thread from the pool, execute the task
+      * This class was introduced as a fix for CR 6607339.
+      */
+     final class SafeThread extends Thread {
+          private volatile boolean ran = false;
+
+          public SafeThread(Runnable target) {
+              super(target);
+          }
+
+          public final void run() {
+              if (Thread.currentThread() != this) {
+                  throw new IllegalStateException("The run() method in a"
+                      + " SafeThread cannot be called from another thread.");
+              }
+              synchronized (this) {
+                 if (!ran) {
+                     ran = true;
+                 }
+                 else {
+                  throw new IllegalStateException("The run() method in a"
+                      + " SafeThread cannot be called more than once.");
+                 }
+              }
+              super.run();
+          }
+     }
+
+     /**
+     *  Will get a thread from the pool, execute the task
      *  and return the thread to the pool.
      *
      *  The return value is used only to wait for completion
@@ -68,7 +96,7 @@
     public Thread run(Runnable task, int priority)
     {
 
-      Thread t = new Thread(task);
+      Thread t = new SafeThread(task);
 
       t.start();
 
--- a/jaxp/src/share/classes/com/sun/org/apache/xpath/internal/axes/NodeSequence.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/org/apache/xpath/internal/axes/NodeSequence.java	Wed Jul 05 16:52:18 2017 +0200
@@ -18,7 +18,7 @@
  * limitations under the License.
  */
 /*
- * $Id: NodeSequence.java,v 1.2.4.2 2005/09/14 19:45:19 jeffsuttor Exp $
+ * $Id: NodeSequence.java,v 1.6 2007/01/12 19:26:42 spericas Exp $
  */
 package com.sun.org.apache.xpath.internal.axes;
 
--- a/jaxp/src/share/classes/com/sun/xml/internal/stream/events/XMLEventAllocatorImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jaxp/src/share/classes/com/sun/xml/internal/stream/events/XMLEventAllocatorImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -25,6 +25,8 @@
 
 package com.sun.xml.internal.stream.events;
 
+import com.sun.org.apache.xerces.internal.impl.PropertyManager;
+import java.util.List;
 import javax.xml.stream.util.XMLEventAllocator;
 import javax.xml.stream.*;
 import javax.xml.stream.events.*;
@@ -144,7 +146,13 @@
                 break;
             }
             case XMLEvent.DTD:{
-                event = new DTDEvent(streamReader.getText());
+                DTDEvent dtdEvent = new DTDEvent(streamReader.getText());
+                dtdEvent.setLocation(streamReader.getLocation());
+                List entities = (List)streamReader.getProperty(PropertyManager.STAX_ENTITIES);
+                if (entities != null && entities.size() != 0) dtdEvent.setEntities(entities);
+                List notations = (List)streamReader.getProperty(PropertyManager.STAX_NOTATIONS);
+                if (notations != null && notations.size() != 0) dtdEvent.setNotations(notations);
+                event = dtdEvent;
                 break;
             }
             case XMLEvent.CDATA:{
--- a/jdk/.hgtags	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/.hgtags	Wed Jul 05 16:52:18 2017 +0200
@@ -30,3 +30,4 @@
 a2033addca678f9e4c0d92ffa1e389171cc9321d jdk7-b53
 d1c43d1f5676a24ba86221ac7cad5694f3a9afda jdk7-b54
 522bb5aa17e0c0cff00b1ed7d1b51bc4db2cfef9 jdk7-b55
+7fd3bc37afe36f8f6165ba679db1229716db822a jdk7-b56
--- a/jdk/README	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/README	Wed Jul 05 16:52:18 2017 +0200
@@ -9,25 +9,35 @@
      http://java.sun.com/javase/downloads/index.jsp
      Set the environment variable ALT_BOOTDIR to the location of this JDK 6.
 
-  2. Download and install the Binary Plugs for the most recent JDK7 from
+  2. Download and install the JIBX libraries, version 1.1.5 from
+     http://sourceforge.net/project/showfiles.php?group_id=69358&package_id=68290
+     You'll need the following four JAR files:
+         bcel.jar
+         jibx-bind.jar
+         jibx-run.jar
+         xpp3.jar
+     Set the environment variable ALT_JIBX_LIBS_PATH to the location of
+     these JAR files.
+     
+  3. Download and install the Binary Plugs for the most recent JDK7 from
      http://download.java.net/openjdk/jdk7/
      Set the environment variable ALT_BINARY_PLUGS_PATH to the location of
      these binary plugs.
      
-  3. Either download and install the latest JDK7 from
+  4. Either download and install the latest JDK7 from
      http://download.java.net/openjdk/jdk7/, or build your own complete
      OpenJDK7 by using the top level Makefile in the OpenJDK Mercurial forest.
      Set the environment variable ALT_JDK_IMPORT_PATH to the location of
      this latest JDK7 or OpenJDK7 build.
      
-  4. Check the sanity of doing a build with the current machine:
+  5. Check the sanity of doing a build with the current machine:
        cd make && gnumake sanity
      See README-builds.html if you run into problems.
   
-  5. Do a partial build of the jdk:
+  6. Do a partial build of the jdk:
        cd make && gnumake all
   
-  6. Construct the images:
+  7. Construct the images:
        cd make && gnumake images
      The resulting JDK image should be found in build/*/j2sdk-image
 
--- a/jdk/make/common/Sanity.gmk	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/common/Sanity.gmk	Wed Jul 05 16:52:18 2017 +0200
@@ -92,7 +92,8 @@
     sane-ld_run_path \
     sane-alt_bootdir \
     sane-bootdir \
-    sane-alsa-headers
+    sane-alsa-headers \
+    sane-jibx
 
 ifdef OPENJDK
 sanity-all:: sane-freetype 
--- a/jdk/make/common/shared/Defs.gmk	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/common/shared/Defs.gmk	Wed Jul 05 16:52:18 2017 +0200
@@ -515,6 +515,15 @@
 #   NOTE: ISA_DIR is usually empty, on Solaris it might be /sparcv9 or /amd64
 BINDIR      = $(OUTPUTDIR)/bin$(ISA_DIR)
   
+# JIBX_LIBS_PATH: path to JIBX libraries, needed for NimbusLookAndFeel
+ifdef ALT_JIBX_LIBS_PATH
+  JIBX_LIBS_PATH:=$(call FullPath,$(ALT_JIBX_LIBS_PATH))
+  JIBX_LIBS_PATH:=$(call AltCheckSpaces,JIBX_LIBS_PATH)
+  JIBX_LIBS_PATH:=$(call AltCheckValue,JIBX_LIBS_PATH)
+else
+  JIBX_LIBS_PATH=$(JDK_DEVTOOLS_DIR)/share/jibx/lib
+endif
+
 # MOZILLA_HEADERS_PATH: path to mozilla header files for plugin
 ifdef ALT_MOZILLA_HEADERS_PATH
   MOZILLA_HEADERS_PATH :=$(call FullPath,$(ALT_MOZILLA_HEADERS_PATH))
@@ -529,7 +538,7 @@
 JDK_CUPS_HEADERS_PATH=$(JDK_DEVTOOLS_DIR)/share/cups/include
   ifdef ALT_CUPS_HEADERS_PATH
      CUPS_HEADERS_PATH:=$(call FullPath,$(ALT_CUPS_HEADERS_PATH))
-     CUP_HEADERS_PATH:=$(call AltCheckValue,CUPS_HEADERS_PATH)
+     CUPS_HEADERS_PATH:=$(call AltCheckValue,CUPS_HEADERS_PATH)
   else 
     CUPS_HEADERS_PATH:= \
       $(shell if [ -d "$(JDK_CUPS_HEADERS_PATH)" ]; then \
--- a/jdk/make/common/shared/Sanity-Settings.gmk	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/common/shared/Sanity-Settings.gmk	Wed Jul 05 16:52:18 2017 +0200
@@ -233,6 +233,7 @@
   endif
 endif
 ALL_SETTINGS+=$(call addAltSetting,CACERTS_FILE)
+ALL_SETTINGS+=$(call addAltSetting,JIBX_LIBS_PATH)
 ifndef OPENJDK
   ALL_SETTINGS+=$(call addAltSetting,MOZILLA_HEADERS_PATH)
 endif
--- a/jdk/make/common/shared/Sanity.gmk	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/common/shared/Sanity.gmk	Wed Jul 05 16:52:18 2017 +0200
@@ -213,6 +213,7 @@
 	sane-link \
 	sane-cacerts \
 	sane-alsa-headers \
+	sane-jibx \
 	sane-ant_version \
 	sane-zip_version \
 	sane-unzip_version \
@@ -1498,6 +1499,18 @@
 
 
 ######################################################
+# JIBX_LIBS_PATH must be valid
+######################################################
+sane-jibx:
+	@if [ ! -r $(subst \,/,$(JIBX_LIBS_PATH))/jibx-run.jar ]; then \
+	  $(ECHO) "ERROR: You do not have access to valid JIBX library files. \n" \
+	    "      Please check your access to \n" \
+	    "          $(subst \,/,$(JIBX_LIBS_PATH))/jibx-run.jar \n" \
+	    "      and/or check your value of ALT_JDK_DEVTOOLS_DIR, ALT_JIBX_LIBS_PATH \n" \
+	    "" >> $(ERROR_FILE) ; \
+	fi
+
+######################################################
 # MOZILLA_HEADERS_PATH must be valid
 ######################################################
 sane-mozilla:
--- a/jdk/make/docs/CORE_PKGS.gmk	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/docs/CORE_PKGS.gmk	Wed Jul 05 16:52:18 2017 +0200
@@ -233,6 +233,7 @@
   javax.xml.ws.http                              \
   javax.xml.ws.soap                              \
   javax.xml.ws.spi                               \
+  javax.xml.ws.wsaddressing                      \
   javax.xml.transform                            \
   javax.xml.transform.sax                        \
   javax.xml.transform.dom                        \
--- a/jdk/make/java/zip/FILES_c.gmk	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/java/zip/FILES_c.gmk	Wed Jul 05 16:52:18 2017 +0200
@@ -29,7 +29,6 @@
 	Deflater.c \
 	Inflater.c \
 	ZipFile.c \
-	ZipEntry.c \
 	zadler32.c \
 	zcrc32.c \
 	deflate.c \
--- a/jdk/make/java/zip/mapfile-vers	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/java/zip/mapfile-vers	Wed Jul 05 16:52:18 2017 +0200
@@ -50,15 +50,17 @@
 		Java_java_util_zip_Inflater_initIDs;
 		Java_java_util_zip_Inflater_reset;
 		Java_java_util_zip_Inflater_setDictionary;
-		Java_java_util_zip_ZipEntry_initFields;
-		Java_java_util_zip_ZipEntry_initIDs;
 		Java_java_util_zip_ZipFile_close;
 		Java_java_util_zip_ZipFile_freeEntry;
-		Java_java_util_zip_ZipFile_getCSize;
 		Java_java_util_zip_ZipFile_getEntry;
-		Java_java_util_zip_ZipFile_getMethod;
+		Java_java_util_zip_ZipFile_getEntryBytes;
+		Java_java_util_zip_ZipFile_getEntryCrc;
+		Java_java_util_zip_ZipFile_getEntryCSize;
+		Java_java_util_zip_ZipFile_getEntryFlag;
+		Java_java_util_zip_ZipFile_getEntryMethod;
+		Java_java_util_zip_ZipFile_getEntrySize;
+		Java_java_util_zip_ZipFile_getEntryTime;
 		Java_java_util_zip_ZipFile_getNextEntry;
-		Java_java_util_zip_ZipFile_getSize;
 		Java_java_util_zip_ZipFile_getZipMessage;
 		Java_java_util_zip_ZipFile_getTotal;
 		Java_java_util_zip_ZipFile_initIDs;
--- a/jdk/make/java/zip/reorder-i586	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/java/zip/reorder-i586	Wed Jul 05 16:52:18 2017 +0200
@@ -20,12 +20,14 @@
 text: .text%Java_java_util_zip_ZipFile_open;
 text: .text%Java_java_util_zip_ZipFile_getTotal;
 text: .text%Java_java_util_zip_ZipFile_getEntry;
-text: .text%Java_java_util_zip_ZipEntry_initIDs;
-text: .text%Java_java_util_zip_ZipEntry_initFields;
 text: .text%Java_java_util_zip_ZipFile_freeEntry;
-text: .text%Java_java_util_zip_ZipFile_getCSize;
-text: .text%Java_java_util_zip_ZipFile_getSize;
-text: .text%Java_java_util_zip_ZipFile_getMethod;
+text: .text%Java_java_util_zip_ZipFile_getEntryTime;
+text: .text%Java_java_util_zip_ZipFile_getEntryCrc;
+text: .text%Java_java_util_zip_ZipFile_getEntryCSize;
+text: .text%Java_java_util_zip_ZipFile_getEntrySize;
+text: .text%Java_java_util_zip_ZipFile_getEntryFlag;
+text: .text%Java_java_util_zip_ZipFile_getEntryMethod;
+text: .text%Java_java_util_zip_ZipFile_getEntryBytes;
 text: .text%Java_java_util_zip_Inflater_initIDs;
 text: .text%Java_java_util_zip_Inflater_init;
 text: .text%inflateInit2_;
--- a/jdk/make/java/zip/reorder-sparc	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/java/zip/reorder-sparc	Wed Jul 05 16:52:18 2017 +0200
@@ -19,12 +19,14 @@
 text: .text%Java_java_util_zip_ZipFile_open;
 text: .text%Java_java_util_zip_ZipFile_getTotal;
 text: .text%Java_java_util_zip_ZipFile_getEntry;
-text: .text%Java_java_util_zip_ZipEntry_initIDs;
-text: .text%Java_java_util_zip_ZipEntry_initFields;
 text: .text%Java_java_util_zip_ZipFile_freeEntry;
-text: .text%Java_java_util_zip_ZipFile_getCSize;
-text: .text%Java_java_util_zip_ZipFile_getSize;
-text: .text%Java_java_util_zip_ZipFile_getMethod;
+text: .text%Java_java_util_zip_ZipFile_getEntryTime;
+text: .text%Java_java_util_zip_ZipFile_getEntryCrc;
+text: .text%Java_java_util_zip_ZipFile_getEntryCSize;
+text: .text%Java_java_util_zip_ZipFile_getEntrySize;
+text: .text%Java_java_util_zip_ZipFile_getEntryFlag;
+text: .text%Java_java_util_zip_ZipFile_getEntryMethod;
+text: .text%Java_java_util_zip_ZipFile_getEntryBytes;
 text: .text%Java_java_util_zip_Inflater_initIDs;
 text: .text%Java_java_util_zip_Inflater_init;
 text: .text%inflateInit2_;
--- a/jdk/make/java/zip/reorder-sparcv9	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/java/zip/reorder-sparcv9	Wed Jul 05 16:52:18 2017 +0200
@@ -20,12 +20,14 @@
 text: .text%Java_java_util_zip_ZipFile_open;
 text: .text%Java_java_util_zip_ZipFile_getTotal;
 text: .text%Java_java_util_zip_ZipFile_getEntry;
-text: .text%Java_java_util_zip_ZipEntry_initIDs;
-text: .text%Java_java_util_zip_ZipEntry_initFields;
 text: .text%Java_java_util_zip_ZipFile_freeEntry;
-text: .text%Java_java_util_zip_ZipFile_getCSize;
-text: .text%Java_java_util_zip_ZipFile_getSize;
-text: .text%Java_java_util_zip_ZipFile_getMethod;
+text: .text%Java_java_util_zip_ZipFile_getEntryTime;
+text: .text%Java_java_util_zip_ZipFile_getEntryCrc;
+text: .text%Java_java_util_zip_ZipFile_getEntryCSize;
+text: .text%Java_java_util_zip_ZipFile_getEntrySize;
+text: .text%Java_java_util_zip_ZipFile_getEntryFlag;
+text: .text%Java_java_util_zip_ZipFile_getEntryMethod;
+text: .text%Java_java_util_zip_ZipFile_getEntryBytes;
 text: .text%Java_java_util_zip_Inflater_initIDs;
 text: .text%Java_java_util_zip_Inflater_init;
 text: .text%inflateInit2_;
--- a/jdk/make/javax/swing/plaf/Makefile	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/javax/swing/plaf/Makefile	Wed Jul 05 16:52:18 2017 +0200
@@ -34,9 +34,14 @@
 #
 include FILES.gmk
 AUTO_FILES_JAVA_DIRS = javax/swing/plaf sun/swing com/sun/java/swing/plaf
+SUBDIRS = nimbus
+
+# Nimbus is handled in its own directory
+AUTO_JAVA_PRUNE = nimbus
+
 ifeq ($(PLATFORM), windows)
     # Don't build GTK L&F on Windows
-    AUTO_JAVA_PRUNE = gtk
+    AUTO_JAVA_PRUNE += gtk
 endif
 
 MISC_FILES = $(MISC_SWING_FILES)
@@ -68,8 +73,10 @@
 # Process LOGO_ICONS and Motif Icons first.
 #
 build: $(LOGO_ICONS) $(MISC_SWING_FILES_MOTIF_GIF) $(MISC_SWING_FILES_MOTIF_PNG) other_files
+	$(SUBDIRS-loop)
 
-clean:: classes.clean
+clean clobber::
+	$(SUBDIRS-loop)
 
 #
 # Include
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/javax/swing/plaf/nimbus/Makefile	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,60 @@
+#
+# Copyright 1998-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR  = ../../../..
+PACKAGE   = javax.swing.plaf.nimbus
+PRODUCT   = com
+SWING_SRC = $(SHARE_SRC)/classes/javax/swing
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+NIMBUS_PKG = javax/swing/plaf/nimbus
+NIMBUS_COMPAT_PKG = com/sun/java/swing/plaf/nimbus
+NIMBUS_GENSRC_DIR = $(GENSRCDIR)/$(NIMBUS_PKG)
+NIMBUS_SKIN_FILE = $(SHARE_SRC)/classes/$(NIMBUS_PKG)/skin.laf
+NIMBUS_GENERATOR_JAR = $(BUILDTOOLJARDIR)/nimbus_generator.jar
+
+AUTO_FILES_JAVA_DIRS = $(NIMBUS_PKG) $(NIMBUS_COMPAT_PKG)
+
+
+#
+# Rules
+#
+CLASSES_INIT = $(NIMBUS_GENSRC_DIR)
+
+include $(BUILDDIR)/common/Classes.gmk
+
+$(NIMBUS_GENSRC_DIR): $(NIMBUS_SKIN_FILE) $(NIMBUS_GENERATOR_JAR)
+	@$(ECHO) "Generating Nimbus source files:"
+	$(BOOT_JAVA_CMD) -jar $(NIMBUS_GENERATOR_JAR) \
+	    -skinFile $(NIMBUS_SKIN_FILE) \
+	    -buildDir $(GENSRCDIR) -srcDir $(GENSRCDIR) \
+	    -packagePrefix $(PACKAGE) -lafName Nimbus
+	@$(ECHO) "Finished generating Nimbus source files"
+
+clean clobber::
+	$(RM) -r $(NIMBUS_GENSRC_DIR)
--- a/jdk/make/jprt.properties	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/jprt.properties	Wed Jul 05 16:52:18 2017 +0200
@@ -32,8 +32,8 @@
 solaris_sparcv9_5.10,\
 solaris_i586_5.10,\
 solaris_x64_5.10,\
-linux_i586,\
-linux_x64,\
+linux_i586_2.6,\
+linux_x64_2.6,\
 windows_i586,\
 windows_x64
 
--- a/jdk/make/tools/Makefile	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/make/tools/Makefile	Wed Jul 05 16:52:18 2017 +0200
@@ -51,6 +51,7 @@
   makeclasslist             \
   strip_properties          \
   spp                       \
+  swing-nimbus              \
   CharsetMapping
 
 all build clean clobber::
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/Makefile	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,91 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the Nimbus generator
+#
+
+BUILDDIR = ../..
+PACKAGE = org.jdesktop.synthdesigner.generator
+PRODUCT = tools
+PROGRAM = nimbus_generator
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = classes
+BUILDTOOL_MAIN        = $(PKGDIR)/Generator.java
+
+#
+# Files
+#
+
+MAIN_CLASS_FILE = $(BUILDTOOLCLASSDIR)/$(BUILDTOOL_MAIN:%.java=%.class)
+SOURCE_FILES    = $(shell $(FIND) $(BUILDTOOL_SOURCE_ROOT) -name '*.java' -print)
+
+TEMPLATE_FILES  = $(SHARE_SRC)/classes/javax/swing/plaf/nimbus/Defaults.template \
+                  $(SHARE_SRC)/classes/javax/swing/plaf/nimbus/PainterImpl.template \
+                  $(SHARE_SRC)/classes/javax/swing/plaf/nimbus/StateImpl.template
+TEMPLATE_DEST   = $(BUILDTOOLCLASSDIR)/org/jdesktop/synthdesigner/generator/resources
+
+JIBX_FILES      = $(BUILDTOOL_SOURCE_ROOT)/org/jdesktop/swingx/designer/Designer.jibx.xml \
+                  $(BUILDTOOL_SOURCE_ROOT)/org/jdesktop/synthdesigner/synthmodel/SynthModel.jibx.xml
+JIBX_LIBS_CP    = $(JIBX_LIBS_PATH)/bcel.jar$(CLASSPATH_SEPARATOR)$(JIBX_LIBS_PATH)/xpp3.jar$(CLASSPATH_SEPARATOR)$(JIBX_LIBS_PATH)/jibx-bind.jar$(CLASSPATH_SEPARATOR)$(JIBX_LIBS_PATH)/jibx-run.jar
+JIBX_LIBS_LIST  = $(subst $(CLASSPATH_SEPARATOR), ,$(JIBX_LIBS_CP))
+
+
+#
+# Rules
+#
+
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
+$(MAIN_CLASS_FILE): $(SOURCE_FILES) $(JIBX_LIBS_LIST)
+	@$(MKDIR) -p $(BUILDTOOLCLASSDIR)
+	$(BOOT_JAVAC_CMD) -classpath "$(JIBX_LIBS_CP)" \
+	    -d $(BUILDTOOLCLASSDIR) -sourcepath $(BUILDTOOL_SOURCE_ROOT) \
+	    $(SOURCE_FILES)
+
+$(TEMPLATE_DEST): $(TEMPLATE_FILES)
+	$(MKDIR) -p $(TEMPLATE_DEST)
+	$(RM) $(TEMPLATE_DEST)/*.template
+	$(CP) $(TEMPLATE_FILES) $(TEMPLATE_DEST)
+
+$(BUILDTOOL_MANIFEST_FILE): $(MAIN_CLASS_FILE)
+	$(ECHO) "Main-Class: $(BUILTTOOL_MAINCLASS)" > $@
+	$(ECHO) "Class-Path: $(JIBX_LIBS_LIST:$(JIBX_LIBS_PATH)/%=%)" >> $@
+	$(CP) $(JIBX_LIBS_LIST) $(BUILDTOOLJARDIR)
+
+$(BUILDTOOL_JAR_FILE): $(MAIN_CLASS_FILE) $(TEMPLATE_DEST) \
+    $(JIBX_FILES) $(BUILDTOOL_MANIFEST_FILE)
+	@$(prep-target)
+	$(BOOT_JAVA_CMD) \
+	  -classpath "$(JIBX_LIBS_CP)$(CLASSPATH_SEPARATOR)$(BUILDTOOLCLASSDIR)" \
+	  org.jibx.binding.Compile $(JIBX_FILES)
+	$(BOOT_JAR_CMD) cfm $@ $(BUILDTOOL_MANIFEST_FILE) \
+	    -C $(BUILDTOOLCLASSDIR) org \
+	    $(BOOT_JAR_JFLAGS) || $(RM) $@
+	@$(java-vm-cleanup)
+
+clean clobber::
+	$(RM) -r $(TEMPLATE_DEST)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/beans/AbstractBean.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,475 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.beans;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.beans.PropertyVetoException;
+import java.beans.VetoableChangeListener;
+import java.beans.VetoableChangeSupport;
+
+/**
+ * <p>A convenience class from which to extend all non-visual AbstractBeans. It
+ * manages the PropertyChange notification system, making it relatively trivial
+ * to add support for property change events in getters/setters.</p>
+ *
+ * <p>A non-visual java bean is a Java class that conforms to the AbstractBean
+ * patterns to allow visual manipulation of the bean's properties and event
+ * handlers at design-time.</p>
+ *
+ * <p>Here is a simple example bean that contains one property, foo, and the
+ * proper pattern for implementing property change notification:
+ * <pre><code>
+ *  public class ABean extends AbstractBean {
+ *    private String foo;
+ *
+ *    public void setFoo(String newFoo) {
+ *      String old = getFoo();
+ *      this.foo = newFoo;
+ *      firePropertyChange("foo", old, getFoo());
+ *    }
+ *
+ *    public String getFoo() {
+ *      return foo;
+ *    }
+ *  }
+ * </code></pre></p>
+ *
+ * <p>You will notice that "getFoo()" is used in the setFoo method rather than
+ * accessing "foo" directly for the gets. This is done intentionally so that if
+ * a subclass overrides getFoo() to return, for instance, a constant value the
+ * property change notification system will continue to work properly.</p>
+ *
+ * <p>The firePropertyChange method takes into account the old value and the new
+ * value. Only if the two differ will it fire a property change event. So you can
+ * be assured from the above code fragment that a property change event will only
+ * occur if old is indeed different from getFoo()</p>
+ *
+ * <p><code>AbstractBean</code> also supports {@link VetoablePropertyChange} events.
+ * These events are similar to <code>PropertyChange</code> events, except a special
+ * exception can be used to veto changing the property. For example, perhaps the
+ * property is changing from "fred" to "red", but a listener deems that "red" is
+ * unexceptable. In this case, the listener can fire a veto exception and the property must
+ * remain "fred". For example:
+ * <pre><code>
+ *  public class ABean extends AbstractBean {
+ *    private String foo;
+ *
+ *    public void setFoo(String newFoo) throws PropertyVetoException {
+ *      String old = getFoo();
+ *      this.foo = newFoo;
+ *      fireVetoableChange("foo", old, getFoo());
+ *    }
+ *
+ *    public String getFoo() {
+ *      return foo;
+ *    }
+ *  }
+ *
+ *  public class Tester {
+ *    public static void main(String... args) {
+ *      try {
+ *        ABean a = new ABean();
+ *        a.setFoo("fred");
+ *        a.addVetoableChangeListener(new VetoableChangeListener() {
+ *          public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException {
+ *            if ("red".equals(evt.getNewValue()) {
+ *              throw new PropertyVetoException("Cannot be red!", evt);
+ *            }
+ *          }
+ *        }
+ *        a.setFoo("red");
+ *      } catch (Exception e) {
+ *        e.printStackTrace(); // this will be executed
+ *      }
+ *    }
+ *  }
+ * </code></pre></p>
+ *
+ * @status REVIEWED
+ * @author rbair
+ */
+public abstract class AbstractBean {
+    /**
+     * Helper class that manages all the property change notification machinery.
+     * PropertyChangeSupport cannot be extended directly because it requires
+     * a bean in the constructor, and the "this" argument is not valid until
+     * after super construction. Hence, delegation instead of extension
+     */
+    private transient PropertyChangeSupport pcs;
+
+    /**
+     * Helper class that manages all the veto property change notification machinery.
+     */
+    private transient VetoableChangeSupport vcs;
+
+    /** Creates a new instance of AbstractBean */
+    protected AbstractBean() {
+        pcs = new PropertyChangeSupport(this);
+        vcs = new VetoableChangeSupport(this);
+    }
+
+    /**
+     * Creates a new instance of AbstractBean, using the supplied PropertyChangeSupport and
+     * VetoableChangeSupport delegates. Neither of these may be null.
+     */
+    protected AbstractBean(PropertyChangeSupport pcs, VetoableChangeSupport vcs) {
+        if (pcs == null) {
+            throw new NullPointerException("PropertyChangeSupport must not be null");
+        }
+        if (vcs == null) {
+            throw new NullPointerException("VetoableChangeSupport must not be null");
+        }
+
+        this.pcs = pcs;
+        this.vcs = vcs;
+    }
+
+    /**
+     * Add a PropertyChangeListener to the listener list.
+     * The listener is registered for all properties.
+     * The same listener object may be added more than once, and will be called
+     * as many times as it is added.
+     * If <code>listener</code> is null, no exception is thrown and no action
+     * is taken.
+     *
+     * @param listener  The PropertyChangeListener to be added
+     */
+    public final void addPropertyChangeListener(PropertyChangeListener listener) {
+        pcs.addPropertyChangeListener(listener);
+    }
+
+    /**
+     * Remove a PropertyChangeListener from the listener list.
+     * This removes a PropertyChangeListener that was registered
+     * for all properties.
+     * If <code>listener</code> was added more than once to the same event
+     * source, it will be notified one less time after being removed.
+     * If <code>listener</code> is null, or was never added, no exception is
+     * thrown and no action is taken.
+     *
+     * @param listener  The PropertyChangeListener to be removed
+     */
+    public final void removePropertyChangeListener(PropertyChangeListener listener) {
+        pcs.removePropertyChangeListener(listener);
+    }
+
+    /**
+     * Returns an array of all the listeners that were added to the
+     * PropertyChangeSupport object with addPropertyChangeListener().
+     * <p>
+     * If some listeners have been added with a named property, then
+     * the returned array will be a mixture of PropertyChangeListeners
+     * and <code>PropertyChangeListenerProxy</code>s. If the calling
+     * method is interested in distinguishing the listeners then it must
+     * test each element to see if it's a
+     * <code>PropertyChangeListenerProxy</code>, perform the cast, and examine
+     * the parameter.
+     *
+     * <pre>
+     * PropertyChangeListener[] listeners = bean.getPropertyChangeListeners();
+     * for (int i = 0; i < listeners.length; i++) {
+     *   if (listeners[i] instanceof PropertyChangeListenerProxy) {
+     *     PropertyChangeListenerProxy proxy =
+     *                    (PropertyChangeListenerProxy)listeners[i];
+     *     if (proxy.getPropertyName().equals("foo")) {
+     *       // proxy is a PropertyChangeListener which was associated
+     *       // with the property named "foo"
+     *     }
+     *   }
+     * }
+     *</pre>
+     *
+     * @see java.beans.PropertyChangeListenerProxy
+     * @return all of the <code>PropertyChangeListeners</code> added or an
+     *         empty array if no listeners have been added
+     */
+    public final PropertyChangeListener[] getPropertyChangeListeners() {
+        return pcs.getPropertyChangeListeners();
+    }
+
+    /**
+     * Add a PropertyChangeListener for a specific property.  The listener
+     * will be invoked only when a call on firePropertyChange names that
+     * specific property.
+     * The same listener object may be added more than once.  For each
+     * property,  the listener will be invoked the number of times it was added
+     * for that property.
+     * If <code>propertyName</code> or <code>listener</code> is null, no
+     * exception is thrown and no action is taken.
+     *
+     * @param propertyName  The name of the property to listen on.
+     * @param listener  The PropertyChangeListener to be added
+     */
+    public final void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+        pcs.addPropertyChangeListener(propertyName, listener);
+    }
+
+    /**
+     * Remove a PropertyChangeListener for a specific property.
+     * If <code>listener</code> was added more than once to the same event
+     * source for the specified property, it will be notified one less time
+     * after being removed.
+     * If <code>propertyName</code> is null,  no exception is thrown and no
+     * action is taken.
+     * If <code>listener</code> is null, or was never added for the specified
+     * property, no exception is thrown and no action is taken.
+     *
+     * @param propertyName  The name of the property that was listened on.
+     * @param listener  The PropertyChangeListener to be removed
+     */
+    public final void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+        pcs.removePropertyChangeListener(propertyName, listener);
+    }
+
+    /**
+     * Returns an array of all the listeners which have been associated
+     * with the named property.
+     *
+     * @param propertyName  The name of the property being listened to
+     * @return all of the <code>PropertyChangeListeners</code> associated with
+     *         the named property.  If no such listeners have been added,
+     *         or if <code>propertyName</code> is null, an empty array is
+     *         returned.
+     */
+    public final PropertyChangeListener[] getPropertyChangeListeners(String propertyName) {
+            return pcs.getPropertyChangeListeners(propertyName);
+    }
+
+    /**
+     * Report a bound property update to any registered listeners.
+     * No event is fired if old and new are equal and non-null.
+     *
+     * <p>
+     * This is merely a convenience wrapper around the more general
+     * firePropertyChange method that takes {@code
+     * PropertyChangeEvent} value.
+     *
+     * @param propertyName  The programmatic name of the property
+     *                      that was changed.
+     * @param oldValue  The old value of the property.
+     * @param newValue  The new value of the property.
+     */
+    protected final void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
+        pcs.firePropertyChange(propertyName, oldValue, newValue);
+    }
+
+    /**
+     * Fire an existing PropertyChangeEvent to any registered listeners.
+     * No event is fired if the given event's old and new values are
+     * equal and non-null.
+     * @param evt  The PropertyChangeEvent object.
+     */
+    protected final void firePropertyChange(PropertyChangeEvent evt) {
+        pcs.firePropertyChange(evt);
+    }
+
+
+    /**
+     * Report a bound indexed property update to any registered
+     * listeners.
+     * <p>
+     * No event is fired if old and new values are equal
+     * and non-null.
+     *
+     * <p>
+     * This is merely a convenience wrapper around the more general
+     * firePropertyChange method that takes {@code PropertyChangeEvent} value.
+     *
+     * @param propertyName The programmatic name of the property that
+     *                     was changed.
+     * @param index        index of the property element that was changed.
+     * @param oldValue     The old value of the property.
+     * @param newValue     The new value of the property.
+     */
+    protected final void fireIndexedPropertyChange(String propertyName,
+            int index, Object oldValue, Object newValue) {
+        pcs.fireIndexedPropertyChange(propertyName, index, oldValue, newValue);
+    }
+
+    /**
+     * Check if there are any listeners for a specific property, including
+     * those registered on all properties.  If <code>propertyName</code>
+     * is null, only check for listeners registered on all properties.
+     *
+     * @param propertyName  the property name.
+     * @return true if there are one or more listeners for the given property
+     */
+    protected final boolean hasPropertyChangeListeners(String propertyName) {
+        return pcs.hasListeners(propertyName);
+    }
+
+    /**
+     * Check if there are any listeners for a specific property, including
+     * those registered on all properties.  If <code>propertyName</code>
+     * is null, only check for listeners registered on all properties.
+     *
+     * @param propertyName  the property name.
+     * @return true if there are one or more listeners for the given property
+     */
+    protected final boolean hasVetoableChangeListeners(String propertyName) {
+        return vcs.hasListeners(propertyName);
+    }
+
+    /**
+     * Add a VetoableListener to the listener list.
+     * The listener is registered for all properties.
+     * The same listener object may be added more than once, and will be called
+     * as many times as it is added.
+     * If <code>listener</code> is null, no exception is thrown and no action
+     * is taken.
+     *
+     * @param listener  The VetoableChangeListener to be added
+     */
+
+    public final void addVetoableChangeListener(VetoableChangeListener listener) {
+        vcs.addVetoableChangeListener(listener);
+    }
+
+    /**
+     * Remove a VetoableChangeListener from the listener list.
+     * This removes a VetoableChangeListener that was registered
+     * for all properties.
+     * If <code>listener</code> was added more than once to the same event
+     * source, it will be notified one less time after being removed.
+     * If <code>listener</code> is null, or was never added, no exception is
+     * thrown and no action is taken.
+     *
+     * @param listener  The VetoableChangeListener to be removed
+     */
+    public final void removeVetoableChangeListener(VetoableChangeListener listener) {
+        vcs.removeVetoableChangeListener(listener);
+    }
+
+    /**
+     * Returns the list of VetoableChangeListeners. If named vetoable change listeners
+     * were added, then VetoableChangeListenerProxy wrappers will returned
+     * <p>
+     * @return List of VetoableChangeListeners and VetoableChangeListenerProxys
+     *         if named property change listeners were added.
+     */
+    public final VetoableChangeListener[] getVetoableChangeListeners(){
+        return vcs.getVetoableChangeListeners();
+    }
+
+    /**
+     * Add a VetoableChangeListener for a specific property.  The listener
+     * will be invoked only when a call on fireVetoableChange names that
+     * specific property.
+     * The same listener object may be added more than once.  For each
+     * property,  the listener will be invoked the number of times it was added
+     * for that property.
+     * If <code>propertyName</code> or <code>listener</code> is null, no
+     * exception is thrown and no action is taken.
+     *
+     * @param propertyName  The name of the property to listen on.
+     * @param listener  The VetoableChangeListener to be added
+     */
+
+    public final void addVetoableChangeListener(String propertyName,
+                VetoableChangeListener listener) {
+        vcs.addVetoableChangeListener(propertyName, listener);
+    }
+
+    /**
+     * Remove a VetoableChangeListener for a specific property.
+     * If <code>listener</code> was added more than once to the same event
+     * source for the specified property, it will be notified one less time
+     * after being removed.
+     * If <code>propertyName</code> is null, no exception is thrown and no
+     * action is taken.
+     * If <code>listener</code> is null, or was never added for the specified
+     * property, no exception is thrown and no action is taken.
+     *
+     * @param propertyName  The name of the property that was listened on.
+     * @param listener  The VetoableChangeListener to be removed
+     */
+
+    public final void removeVetoableChangeListener(String propertyName,
+                VetoableChangeListener listener) {
+        vcs.removeVetoableChangeListener(propertyName, listener);
+    }
+
+    /**
+     * Returns an array of all the listeners which have been associated
+     * with the named property.
+     *
+     * @param propertyName  The name of the property being listened to
+     * @return all the <code>VetoableChangeListeners</code> associated with
+     *         the named property.  If no such listeners have been added,
+     *         or if <code>propertyName</code> is null, an empty array is
+     *         returned.
+     */
+    public final VetoableChangeListener[] getVetoableChangeListeners(String propertyName) {
+        return vcs.getVetoableChangeListeners(propertyName);
+    }
+
+    /**
+     * Report a vetoable property update to any registered listeners.  If
+     * anyone vetos the change, then fire a new event reverting everyone to
+     * the old value and then rethrow the PropertyVetoException.
+     * <p>
+     * No event is fired if old and new are equal and non-null.
+     *
+     * @param propertyName  The programmatic name of the property
+     *                      that is about to change..
+     * @param oldValue  The old value of the property.
+     * @param newValue  The new value of the property.
+     * @exception PropertyVetoException if the recipient wishes the property
+     *              change to be rolled back.
+     */
+    protected final void fireVetoableChange(String propertyName,
+                                            Object oldValue, Object newValue)
+                                            throws PropertyVetoException {
+         vcs.fireVetoableChange(propertyName, oldValue, newValue);
+    }
+
+    /**
+     * Fire a vetoable property update to any registered listeners.  If
+     * anyone vetos the change, then fire a new event reverting everyone to
+     * the old value and then rethrow the PropertyVetoException.
+     * <p>
+     * No event is fired if old and new are equal and non-null.
+     *
+     * @param evt  The PropertyChangeEvent to be fired.
+     * @exception PropertyVetoException if the recipient wishes the property
+     *              change to be rolled back.
+     */
+    protected final void fireVetoableChange(PropertyChangeEvent evt)
+                    throws PropertyVetoException {
+        vcs.fireVetoableChange(evt);
+    }
+
+    /**
+     * @inheritDoc
+     */
+    public Object clone() throws CloneNotSupportedException {
+        AbstractBean result = (AbstractBean) super.clone();
+        result.pcs = new PropertyChangeSupport(result);
+        result.vcs = new VetoableChangeSupport(result);
+        return result;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/BezierControlPoint.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,265 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import java.awt.BasicStroke;
+import java.awt.Graphics2D;
+import java.awt.Shape;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Line2D;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * BezierControlPoint
+ *
+ * @author Created by Jasper Potts (May 29, 2007)
+ */
+public class BezierControlPoint extends ControlPoint {
+    private HandleControlPoint cp1 = new HandleControlPoint();
+    private HandleControlPoint cp2 = new HandleControlPoint();
+    private transient boolean makingChange = false;
+    private transient PropertyChangeListener cpListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+//            if (!makingChange) {
+//                makingChange = true;
+//                if (evt.getSource() == cp1) {
+//                    double angle = Math.tan((cp1.getY() - getY())/(cp1.getX() - getX()));
+//                    double cp2len = Math.sqrt(
+//                            Math.pow(cp2.getX() - getX(),2) +
+//                            Math.pow(cp2.getY() - getY(),2)
+//                    );
+//                    double offsetX = cp2len * Math.sin(angle);
+//                    double offsetY = cp2len * Math.cos(angle);
+//                    cp2.setPosition(getX() - offsetX, getY() - offsetY);
+//                } else {
+//                    double angle = Math.tan((cp2.getY() - getY())/(cp2.getX() - getX()));
+//                    double cp1len = Math.sqrt(
+//                            Math.pow(cp1.getX() - getX(),2) +
+//                            Math.pow(cp1.getY() - getY(),2)
+//                    );
+//                    double offsetX = cp1len * Math.sin(angle);
+//                    double offsetY = cp1len * Math.cos(angle);
+//                    cp1.setPosition(getX() - offsetX, getY() - offsetY);
+//                }
+////                if (evt.getSource() == cp1) {
+////                    double offsetX = cp1.getX() - getX();
+////                    double offsetY = cp1.getY() - getY();
+////                    cp2.setPosition(getX() - offsetX, getY() - offsetY);
+////                } else {
+////                    double offsetX = cp2.getX() - getX();
+////                    double offsetY = cp2.getY() - getY();
+////                    cp1.setPosition(getX() - offsetX, getY() - offsetY);
+////                }
+//                makingChange = false;
+//                firePropertyChange("cp1", null, cp1);
+//                firePropertyChange("cp2", null, cp1);
+//            }
+            firePropertyChange("shape",null,getShape());
+        }
+    };
+
+    public BezierControlPoint() {
+        cp1.addPropertyChangeListener(cpListener);
+        cp2.addPropertyChangeListener(cpListener);
+    }
+
+    public BezierControlPoint(double x, double y) {
+        super(x, y);
+        cp1.addPropertyChangeListener(cpListener);
+        cp2.addPropertyChangeListener(cpListener);
+        cp1.setPosition(x, y);
+        cp2.setPosition(x, y);
+    }
+
+    public boolean isSharpCorner() {
+        return
+                (cp1.getX() == x.getValue()) &&
+                        (cp1.getY() == y.getValue()) &&
+                        (cp2.getX() == x.getValue()) &&
+                        (cp2.getY() == y.getValue());
+    }
+
+    public void flip(int width, int height){
+        makingChange = true;
+        if (width > 0){
+            x.setValue(width - x.getValue());
+            cp1.x.setValue(width - cp1.x.getValue());
+            cp2.x.setValue(width - cp2.x.getValue());
+        }
+        if (height > 0){
+            y.setValue(height - y.getValue());
+            cp1.y.setValue(height - cp1.y.getValue());
+            cp2.y.setValue(height - cp2.y.getValue());
+        }
+        makingChange = false;
+    }
+
+    public void convertToSharpCorner() {
+        cp1.setPosition(x.getValue(), y.getValue());
+        cp2.setPosition(x.getValue(), y.getValue());
+    }
+
+    public List<ControlPoint> getControlPoints() {
+        if (isSharpCorner()) {
+            return Collections.emptyList();
+        } else {
+            List<ControlPoint> points = new ArrayList<ControlPoint>();
+            points.add(cp1);
+            points.add(cp2);
+            return points;
+        }
+    }
+
+    public HandleControlPoint getCp1() {
+        return cp1;
+    }
+
+    public HandleControlPoint getCp2() {
+        return cp2;
+    }
+
+    public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
+        g2.setStroke(new BasicStroke((float) pixelSize));
+        // paint control line
+        g2.setColor(GraphicsHelper.BEZIER_CONTROL_LINE);
+        g2.draw(new Line2D.Double(cp1.getX(), cp1.getY(), getX(), getY()));
+        g2.draw(new Line2D.Double(getX(), getY(), cp2.getX(), cp2.getY()));
+        // paint this control point
+        Shape s;
+        if (isSharpCorner()) {
+            double size = pixelSize * 4d;
+            GeneralPath path = new GeneralPath();
+            path.moveTo(getX() - size, getY());
+            path.lineTo(getX(), getY() + size);
+            path.lineTo(getX() + size, getY());
+            path.lineTo(getX(), getY() - size);
+            path.closePath();
+            s = path;
+        } else {
+            double size = pixelSize * 3d;
+            s = new Ellipse2D.Double(getX() - size, getY() - size,
+                    size * 2, size * 2);
+        }
+        g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_FILL);
+        g2.fill(s);
+        g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_LINE);
+        g2.draw(s);
+        // paint child control points
+        if (!isSharpCorner()) {
+            cp1.paintControls(g2, pixelSize, true);
+            cp2.paintControls(g2, pixelSize, true);
+        }
+    }
+
+
+    public void move(double moveX, double moveY, boolean snapPixels) {
+        makingChange = true;
+        super.move(moveX, moveY, snapPixels);
+        cp1.move(moveX, moveY, snapPixels);
+        cp2.move(moveX, moveY, snapPixels);
+        makingChange = false;
+    }
+
+    public double getCp1X() {
+        return cp1.getX();
+    }
+
+    public void setCp1X(double v) {
+        cp1.setX(v);
+    }
+
+    public double getCp1Y() {
+        return cp1.getY();
+    }
+
+    public void setCp1Y(double v) {
+        cp1.setY(v);
+    }
+
+    public double getCp2X() {
+        return cp2.getX();
+    }
+
+    public void setCp2X(double v) {
+        cp2.setX(v);
+    }
+
+    public double getCp2Y() {
+        return cp2.getY();
+    }
+
+    public void setCp2Y(double v) {
+        cp2.setY(v);
+    }
+
+    // =================================================================================================================
+    // Bezier handle control point
+
+    public class HandleControlPoint extends ControlPoint {
+
+        public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
+            if (!isSharp()){
+                double size = pixelSize * 3d;
+                Shape s = new Ellipse2D.Double(getX() - size, getY() - size,
+                        size * 2, size * 2);
+                g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_FILL);
+                g2.fill(s);
+                g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_LINE);
+                g2.draw(s);
+                g2.draw(new Rectangle2D.Double(getX() - (pixelSize / 2), getY() - (pixelSize / 2), pixelSize, pixelSize));
+            }
+        }
+
+        public boolean isHit(Point2D p, double pixelSize) {
+            return !isSharp() && super.isHit(p, pixelSize);
+        }
+
+        /**
+         * Is the line controled by this handle in or out of the parent BezierControlPoint sharp.
+         *
+         * @return <code>true</code> If this is the exact same point as the parent BezierControlPoint.
+         */
+        public boolean isSharp(){
+            return x.getValue() == BezierControlPoint.this.x.getValue() &&
+                y.getValue() == BezierControlPoint.this.y.getValue();
+        }
+
+        public void convertToSharp(){
+            setPosition(BezierControlPoint.this.x.getValue(),BezierControlPoint.this.y.getValue());
+        }
+
+        public BezierControlPoint getParentControlPoint(){
+            return BezierControlPoint.this;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/BlendingMode.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+
+/**
+ * BlendingMode - Enum of composite blending modes, setup to match photoshop as closely as possible
+ *
+ * @author Created by Jasper Potts (May 31, 2007)
+ */
+public enum BlendingMode {
+    NORMAL,
+    // DISSOLVE, missing
+    // -----------------------------
+    DARKEN,
+    MULTIPLY,
+    COLOR_BURN,
+    LINEAR_BURN, // (SUBTRACT)
+    // -----------------------------
+    LIGHTEN,
+    SCREEN,
+    COLOR_DODGE,
+    LINEAR_DODGE, // (ADD)
+    // -----------------------------
+    OVERLAY,
+    SOFT_LIGHT,
+    HARD_LIGHT,
+    VIVID_LIGHT, // (HEAT) is close
+    LINEAR_LIGHT, // (GLOW) is close
+    //PIN_LIGHT, missing
+    //HARD_MIX, missing
+    // -----------------------------
+    DIFFERENCE,
+    EXCLUSION,
+    // -----------------------------
+    HUE, // nowhere close
+    SATURATION,
+    COLOR,
+    LUMINOSITY, // close but not exact
+    //LIGHTER_COLOR, missing
+    //DARKER_COLOR, missing
+    ;
+
+
+    // =================================================================================================================
+    // Helper methods for creating Blending Mode Combo Box
+
+    public static final Object[] BLENDING_MODES = new Object[]{
+            BlendingMode.NORMAL,
+            // DISSOLVE, missing
+            "-",
+            BlendingMode.DARKEN,
+            BlendingMode.MULTIPLY,
+            BlendingMode.COLOR_BURN,
+            BlendingMode.LINEAR_BURN, // (SUBTRACT)
+            "-",
+            BlendingMode.LIGHTEN,
+            BlendingMode.SCREEN,
+            BlendingMode.COLOR_DODGE,
+            BlendingMode.LINEAR_DODGE, // (ADD)
+            "-",
+            BlendingMode.OVERLAY,
+            BlendingMode.SOFT_LIGHT,
+            BlendingMode.HARD_LIGHT,
+            BlendingMode.VIVID_LIGHT, // (HEAT) is close
+            BlendingMode.LINEAR_LIGHT, // (GLOW) is close
+            //PIN_LIGHT, missing
+            //HARD_MIX, missing
+            "-",
+            BlendingMode.DIFFERENCE,
+            BlendingMode.EXCLUSION,
+            "-",
+            BlendingMode.HUE, // nowhere close
+            BlendingMode.SATURATION,
+            BlendingMode.COLOR,
+            BlendingMode.LUMINOSITY, // close but not exact
+    };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Canvas.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,308 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import org.jdesktop.beans.AbstractBean;
+import org.jdesktop.swingx.designer.utils.HasResources;
+import org.jdesktop.swingx.designer.utils.HasUIDefaults;
+import org.jibx.runtime.IUnmarshallingContext;
+
+import javax.swing.UIDefaults;
+import java.awt.AlphaComposite;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.Insets;
+import java.awt.RenderingHints;
+import java.awt.image.BufferedImage;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * ComponentRegion
+ *
+ * @author Created by Jasper Potts (May 22, 2007)
+ */
+public class Canvas extends AbstractBean implements LayerContainer, HasUIDefaults, HasResources {
+    private Dimension size;
+    /** list of all layers in the canvas, the first layer is painted on top */
+    private List<Layer> layers;
+    private int nextLayerNameIndex = 1;
+    private BufferedImage buffer;
+    private boolean isValid = false;
+    private Insets stretchingInsets = null;
+    private Layer workingLayer = null;
+    private PropertyChangeListener layersPropertyChangeListener;
+    private UIDefaults canvasUIDefaults = null;
+    private transient File resourcesDir;
+    private transient File imagesDir;
+    private transient File templatesDir;
+
+    // =================================================================================================================
+    // Constructor
+
+    /** Private constructor for JIBX */
+    protected Canvas() {
+        layersPropertyChangeListener = new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                isValid = false;
+                // pass on layer change
+                int index = layers.indexOf((Layer) evt.getSource());
+                if (index != -1) {
+                    firePropertyChange("layers[" + index + "]." + evt.getPropertyName(), evt.getOldValue(),
+                            evt.getNewValue());
+                }
+            }
+        };
+    }
+
+    public Canvas(int width, int height) {
+        this();
+        stretchingInsets = new Insets(1, 1, 1, 1);
+        layers = new ArrayList<Layer>();
+        setSize(new Dimension(width, height));
+        addLayer(new Layer());
+    }
+
+    // =================================================================================================================
+    // JIBX Methods
+
+    /**
+     * Called by JIBX before all fields have been set
+     *
+     * @param context The JIBX Unmarshalling Context
+     */
+    private void preSet(IUnmarshallingContext context) {
+        canvasUIDefaults = (UIDefaults) context.getUserContext();
+    }
+
+    // =================================================================================================================
+    // Bean Methods
+
+    /**
+     * Get the UIDefaults for this canvas. The UIDefaults is used to store default pallet of colors, fonts etc.
+     *
+     * @return Canvas UIDefaults
+     */
+    public UIDefaults getUiDefaults() {
+        return canvasUIDefaults;
+    }
+
+    /**
+     * Set the UIDefaults for this canvas. The UIDefaults is used to store default pallet of colors, fonts etc.
+     *
+     * @param canvasUIDefaults Canvas UIDefaults
+     */
+    public void setUiDefaults(UIDefaults canvasUIDefaults) {
+        this.canvasUIDefaults = canvasUIDefaults;
+    }
+
+    /**
+     * Get the current working layer, is is the layer that new shapes will be drawn into
+     *
+     * @return The current working layer, may be null if there is no working layer
+     */
+    public Layer getWorkingLayer() {
+        return workingLayer;
+    }
+
+    /**
+     * Set the current working layer, is is the layer that new shapes will be drawn into
+     *
+     * @param workingLayer the new working layer, must be a child of this canvas
+     */
+    public void setWorkingLayer(Layer workingLayer) {
+        Layer old = getWorkingLayer();
+        this.workingLayer = workingLayer;
+        firePropertyChange("workingLayer", old, getWorkingLayer());
+    }
+
+    public int getNextLayerNameIndex() {
+        return nextLayerNameIndex++;
+    }
+
+    public Dimension getSize() {
+        return size;
+    }
+
+    public void setSize(Dimension size) {
+        Dimension old = getSize();
+        this.size = size;
+        buffer = new BufferedImage(this.size.width, this.size.height, BufferedImage.TYPE_INT_ARGB);
+        isValid = false;
+        firePropertyChange("size", old, getSize());
+    }
+
+
+    public Insets getStretchingInsets() {
+        return stretchingInsets;
+    }
+
+    public void setStretchingInsets(Insets stretchingInsets) {
+        Insets old = getStretchingInsets();
+        this.stretchingInsets = stretchingInsets;
+        firePropertyChange("stretchingInsets", old, getStretchingInsets());
+    }
+
+    public BufferedImage getRenderedImage() {
+        if (!isValid) {
+            Graphics2D g2 = buffer.createGraphics();
+            // clear
+            g2.setComposite(AlphaComposite.Clear);
+            g2.fillRect(0, 0, buffer.getWidth(), buffer.getHeight());
+            // paint
+            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+            g2.setComposite(AlphaComposite.SrcOver);
+            for (int i = layers.size() - 1; i >= 0; i--) {
+                layers.get(i).paint(g2, 1);
+            }
+            g2.dispose();
+        }
+        return buffer;
+    }
+
+    /**
+     * @return true if this Canvas has not been edited.
+     *         <p/>
+     *         TODO Currently this is not a bound property, but should be. That is, when the Canvas becomes edited
+     *         (usually due to the Layer having a shape added to it), then a property change event should be fired.
+     */
+    public boolean isBlank() {
+        return layers.size() == 0 || (layers.size() == 1 && layers.get(0).isEmpty());
+    }
+
+    public File getResourcesDir() {
+        return resourcesDir;
+    }
+
+    public void setResourcesDir(File resourcesDir) {
+        File old = getResourcesDir();
+        this.resourcesDir = resourcesDir;
+        firePropertyChange("resourcesDir", old, getResourcesDir());
+    }
+
+    public File getImagesDir() {
+        return imagesDir;
+    }
+
+    public void setImagesDir(File imagesDir) {
+        File old = getImagesDir();
+        this.imagesDir = imagesDir;
+        firePropertyChange("imagesDir", old, getImagesDir());
+    }
+
+    public File getTemplatesDir() {
+        return templatesDir;
+    }
+
+    public void setTemplatesDir(File templatesDir) {
+        File old = getTemplatesDir();
+        this.templatesDir = templatesDir;
+        firePropertyChange("templatesDir", old, getTemplatesDir());
+    }
+
+    // =================================================================================================================
+    // LayerContainer Methods
+
+    public LayerContainer getParent() {
+        // we are root so null
+        return null;
+    }
+
+    public void addLayerToBottom(Layer layer) {
+        layers.add(layer);
+        layer.setParent(this);
+        layer.addPropertyChangeListener(layersPropertyChangeListener);
+        // no single layer changes so fire all changed event
+        firePropertyChange("layers", null, layers);
+    }
+
+    public void addLayer(int i, Layer layer) {
+        layers.add(i, layer);
+        layer.setParent(this);
+        layer.addPropertyChangeListener(layersPropertyChangeListener);
+        // no single layer changes so fire all changed event
+        firePropertyChange("layers", null, layers);
+    }
+
+    public void addLayer(Layer layer) {
+        layers.add(0, layer);
+        layer.setParent(this);
+        layer.addPropertyChangeListener(layersPropertyChangeListener);
+        // no single layer changes so fire all changed event
+        firePropertyChange("layers", null, layers);
+    }
+
+    public Layer getLayer(int index) {
+        return layers.get(index);
+    }
+
+    public int getLayerCount() {
+        return layers.size();
+    }
+
+    public Iterator<Layer> getLayerIterator() {
+        return Collections.unmodifiableList(layers).iterator();
+    }
+
+    public Collection<Layer> getLayers() {
+        return Collections.unmodifiableList(layers);
+    }
+
+    public int indexOfLayer(Layer layer) {
+        return layers.indexOf(layer);
+    }
+
+    public void removeLayer(Layer layer) {
+        int index = layers.indexOf(layer);
+        if (index != -1) {
+            layers.remove(layer);
+            layer.removePropertyChangeListener(layersPropertyChangeListener);
+            fireIndexedPropertyChange("layers", index, layer, null);
+        }
+    }
+
+    public Dimension getRootSize() {
+        return getSize();
+    }
+
+    // =================================================================================================================
+    // JIBX Helper Methods
+
+    /** Called by JIBX after "layers" has been filled so we can set parents and listeners */
+    private void setupLayers() {
+        for (Layer layer : layers) {
+            layer.setParent(this);
+            layer.addPropertyChangeListener(layersPropertyChangeListener);
+        }
+        // no single layer changes so fire all changed event
+        firePropertyChange("layers", null, layers);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/ControlPoint.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Shape;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * ControlPoint
+ *
+ * @author Created by Jasper Potts (May 24, 2007)
+ */
+public class ControlPoint extends SimpleShape {
+    protected Color fillColor;
+    protected Color lineColor;
+    protected DoubleBean x, y;
+
+    public ControlPoint() {
+        this(new DoubleBean(), new DoubleBean());
+    }
+
+    public ControlPoint(Color fillColor, Color lineColor) {
+        this(new DoubleBean(), new DoubleBean(), fillColor, lineColor);
+    }
+
+    public ControlPoint(double x, double y) {
+        this(new DoubleBean(x), new DoubleBean(y));
+    }
+
+    public ControlPoint(DoubleBean x, DoubleBean y) {
+        this(x, y, GraphicsHelper.CONTROL_POINT_FILL, GraphicsHelper.CONTROL_POINT_LINE);
+    }
+
+    public ControlPoint(DoubleBean x, DoubleBean y, Color fillColor, Color lineColor) {
+        this.x = x;
+        this.y = y;
+        this.fillColor = fillColor;
+        this.lineColor = lineColor;
+        x.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("position",
+                        new Point2D.Double((Double) evt.getOldValue(), getY()),
+                        getPosition());
+            }
+        });
+        y.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("position",
+                        new Point2D.Double(getX(), (Double) evt.getOldValue()),
+                        getPosition());
+            }
+        });
+    }
+
+    public double getX() {
+        return x.getValue();
+    }
+
+    public double getY() {
+        return y.getValue();
+    }
+
+    public void setX(double x) {
+        this.x.setValue(x);
+    }
+
+    public void setY(double y) {
+        this.y.setValue(y);
+    }
+
+    public void setPosition(Point2D position) {
+        x.setValue(position.getX());
+        y.setValue(position.getY());
+    }
+
+    public void setPosition(double x, double y) {
+        setPosition(new Point2D.Double(x, y));
+    }
+
+    public Point2D getPosition() {
+        return new Point2D.Double(getX(), getY());
+    }
+
+    public Rectangle2D getBounds(double pixelSize) {
+        double size = pixelSize * 4d;
+        return new Rectangle2D.Double(getX() - size, getY() - size,
+                size * 2, size * 2);
+    }
+
+    public boolean isHit(Point2D p, double pixelSize) {
+        return getBounds(pixelSize).contains(p);
+    }
+
+
+    public Shape getShape() {
+        return getBounds(0);
+    }
+
+    public void paint(Graphics2D g2, double pixelSize) {
+    }
+
+    public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
+        g2.setStroke(new BasicStroke((float) pixelSize));
+        Shape s = getBounds(pixelSize);
+        g2.setColor(fillColor);
+        g2.fill(s);
+        g2.setColor(lineColor);
+        g2.draw(s);
+    }
+
+    public List<ControlPoint> getControlPoints() {
+        return Collections.emptyList();
+    }
+
+
+    public void move(double moveX, double moveY, boolean snapPixels) {
+        if (snapPixels) {
+            setPosition(
+                    Math.round(x.getValue() + moveX),
+                    Math.round(y.getValue() + moveY));
+        } else {
+            setPosition(x.getValue() + moveX, y.getValue() + moveY);
+        }
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Designer.jibx.xml	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 1998-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.  Sun designates this
+ particular file as subject to the "Classpath" exception as provided
+ by Sun in the LICENSE file that accompanied this code.
+
+ This code 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
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ CA 95054 USA or visit www.sun.com if you need additional information or
+ have any questions.
+-->
+
+<!DOCTYPE binding SYSTEM "http://jibx.sourceforge.net">
+<binding>
+    <!-- == PAINTS =========================================================================================== -->
+    <mapping class="java.awt.Color"
+             marshaller="org.jdesktop.swingx.designer.jibxhelpers.ColorMapper"
+             unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.ColorMapper"/>
+    <mapping name="matte" class="org.jdesktop.swingx.designer.paint.Matte" post-set="postSet">
+        <value name="red" field="red" style="attribute"/>
+        <value name="green" field="green" style="attribute"/>
+        <value name="blue" field="blue" style="attribute"/>
+        <value name="alpha" field="alpha" style="attribute"/>
+        <value name="uiDefaultParentName" field="uiDefaultParentName" style="attribute" usage="optional"/>
+        <value name="componentPropertyName" field="componentPropertyName" style="attribute" usage="optional"/>
+        <value name="hueOffset" field="hueOffset" style="attribute"/>
+        <value name="saturationOffset" field="saturationOffset" style="attribute"/>
+        <value name="brightnessOffset" field="brightnessOffset" style="attribute"/>
+        <value name="alphaOffset" field="alphaOffset" style="attribute"/>
+        <value name="uiResource" field="uiResource" style="attribute" usage="optional" default="true"/>
+    </mapping>
+    <mapping class="org.jdesktop.swingx.designer.paint.AbstractGradient" abstract="true">
+        <value name="cycleMethod" field="cycleMethod" style="attribute"/>
+        <collection field="stops" set-method="setStops" pre-set="clear" create-type="java.util.ArrayList">
+            <structure name="stop" type="org.jdesktop.swingx.designer.paint.GradientStop">
+                <value name="position" field="position" style="attribute"/>
+                <value name="midpoint" field="midpoint" style="attribute"/>
+                <structure field="color" set-method="setColor"/>
+            </structure>
+        </collection>
+    </mapping>
+    <mapping name="gradient" class="org.jdesktop.swingx.designer.paint.Gradient"
+             extends="org.jdesktop.swingx.designer.paint.AbstractGradient">
+        <structure map-as="org.jdesktop.swingx.designer.paint.AbstractGradient"/>
+    </mapping>
+    <mapping name="radialGradient" class="org.jdesktop.swingx.designer.paint.RadialGradient"
+             extends="org.jdesktop.swingx.designer.paint.AbstractGradient">
+        <structure map-as="org.jdesktop.swingx.designer.paint.AbstractGradient"/>
+    </mapping>
+    <!-- == SHAPES =========================================================================================== -->
+    <mapping class="org.jdesktop.swingx.designer.SimpleShape" abstract="true">
+        <!--protected AffineTransform transform = new AffineTransform();-->
+    </mapping>
+    <mapping class="org.jdesktop.swingx.designer.PaintedShape" abstract="true"
+             extends="org.jdesktop.swingx.designer.SimpleShape">
+        <structure map-as="org.jdesktop.swingx.designer.SimpleShape"/>
+        <structure field="paint"/>
+        <structure name="paintPoints">
+            <value name="x1" get-method="getPaintX1" set-method="setPaintX1" style="attribute"/>
+            <value name="y1" get-method="getPaintY1" set-method="setPaintY1" style="attribute"/>
+            <value name="x2" get-method="getPaintX2" set-method="setPaintX2" style="attribute"/>
+            <value name="y2" get-method="getPaintY2" set-method="setPaintY2" style="attribute"/>
+        </structure>
+    </mapping>
+    <mapping name="rectangle" class="org.jdesktop.swingx.designer.RectangleShape"
+             extends="org.jdesktop.swingx.designer.PaintedShape">
+        <structure map-as="org.jdesktop.swingx.designer.PaintedShape"/>
+        <value name="x1" get-method="getX1" set-method="setX1" style="attribute"/>
+        <value name="x2" get-method="getX2" set-method="setX2" style="attribute"/>
+        <value name="y1" get-method="getY1" set-method="setY1" style="attribute"/>
+        <value name="y2" get-method="getY2" set-method="setY2" style="attribute"/>
+        <value name="rounding" get-method="getRounding" set-method="setRounding" style="attribute"/>
+    </mapping>
+    <mapping name="ellipse" class="org.jdesktop.swingx.designer.EllipseShape"
+             extends="org.jdesktop.swingx.designer.PaintedShape">
+        <structure map-as="org.jdesktop.swingx.designer.PaintedShape"/>
+        <value name="x1" get-method="getX1" set-method="setX1" style="attribute"/>
+        <value name="x2" get-method="getX2" set-method="setX2" style="attribute"/>
+        <value name="y1" get-method="getY1" set-method="setY1" style="attribute"/>
+        <value name="y2" get-method="getY2" set-method="setY2" style="attribute"/>
+    </mapping>
+    <mapping name="path" class="org.jdesktop.swingx.designer.PathShape"
+             extends="org.jdesktop.swingx.designer.PaintedShape">
+        <structure map-as="org.jdesktop.swingx.designer.PaintedShape"/>
+        <collection name="points" get-method="getBezierControlPoints"
+                    set-method="setControlPoints" create-type="java.util.ArrayList">
+            <structure name="point" type="org.jdesktop.swingx.designer.BezierControlPoint">
+                <value name="x" get-method="getX" set-method="setX" style="attribute"/>
+                <value name="y" get-method="getY" set-method="setY" style="attribute"/>
+                <value name="cp1x" get-method="getCp1X" set-method="setCp1X" style="attribute"/>
+                <value name="cp1y" get-method="getCp1Y" set-method="setCp1Y" style="attribute"/>
+                <value name="cp2x" get-method="getCp2X" set-method="setCp2X" style="attribute"/>
+                <value name="cp2y" get-method="getCp2Y" set-method="setCp2Y" style="attribute"/>
+            </structure>
+        </collection>
+    </mapping>
+    <!-- == EFFECTS =========================================================================================== -->
+    <mapping class="org.jdesktop.swingx.designer.effects.ShadowEffect" abstract="true">
+        <structure field="color"/>
+        <value name="blendingMode" field="blendingMode" style="attribute"/>
+        <value name="opacity" field="opacity" style="attribute"/>
+        <value name="angle" field="angle" style="attribute"/>
+        <value name="distance" field="distance" style="attribute"/>
+        <value name="spread" field="spread" style="attribute"/>
+        <value name="size" field="size" style="attribute"/>
+    </mapping>
+    <mapping name="dropShadow" class="org.jdesktop.swingx.designer.effects.DropShadowEffect"
+             extends="org.jdesktop.swingx.designer.effects.ShadowEffect">
+        <structure map-as="org.jdesktop.swingx.designer.effects.ShadowEffect"/>
+    </mapping>
+    <mapping name="innerShadow" class="org.jdesktop.swingx.designer.effects.InnerShadowEffect"
+             extends="org.jdesktop.swingx.designer.effects.ShadowEffect">
+        <structure map-as="org.jdesktop.swingx.designer.effects.ShadowEffect"/>
+    </mapping>
+    <mapping name="innerGlow" class="org.jdesktop.swingx.designer.effects.InnerGlowEffect"
+             extends="org.jdesktop.swingx.designer.effects.ShadowEffect">
+        <structure map-as="org.jdesktop.swingx.designer.effects.ShadowEffect"/>
+    </mapping>
+    <mapping name="outerGlow" class="org.jdesktop.swingx.designer.effects.OuterGlowEffect"
+             extends="org.jdesktop.swingx.designer.effects.ShadowEffect">
+        <structure map-as="org.jdesktop.swingx.designer.effects.ShadowEffect"/>
+    </mapping>
+    <!-- == TEMPLATE LAYER ================================================================================== -->
+    <mapping name="templateLayer" class="org.jdesktop.swingx.designer.TemplateLayer"
+             extends="org.jdesktop.swingx.designer.Layer" post-set="postInit">
+        <structure map-as="org.jdesktop.swingx.designer.Layer"/>
+        <value name="fileName" field="fileName" style="attribute"/>
+    </mapping>
+    <!-- == LAYER =========================================================================================== -->
+    <mapping name="layer" class="org.jdesktop.swingx.designer.Layer"
+             extends="org.jdesktop.swingx.designer.SimpleShape" post-set="postInit">
+        <structure map-as="org.jdesktop.swingx.designer.SimpleShape"/>
+        <value name="name" field="name" style="attribute"/>
+        <value name="type" field="type" style="attribute" default="standard"/>
+        <value name="opacity" field="opacity"/>
+        <value name="fillOpacity" field="fillOpacity"/>
+        <value name="blendingMode" field="blendingMode"/>
+        <value name="locked" field="locked"/>
+        <value name="visible" field="visible"/>
+        <structure name="shapes">
+            <collection field="shapes" create-type="java.util.ArrayList"/>
+        </structure>
+        <structure name="effects">
+            <collection field="effects" create-type="java.util.ArrayList"/>
+        </structure>
+    </mapping>
+    <!-- == CANVAS =========================================================================================== -->
+    <mapping name="canvas" class="org.jdesktop.swingx.designer.Canvas" pre-set="preSet" post-set="setupLayers">
+        <structure name="size" get-method="getSize" set-method="setSize"
+                   marshaller="org.jdesktop.swingx.designer.jibxhelpers.DimensionMapper"
+                   unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.DimensionMapper"/>
+        <value name="nextLayerNameIndex" field="nextLayerNameIndex"/>
+        <structure name="stretchingInsets" field="stretchingInsets"
+                   marshaller="org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper"
+                   unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper"/>
+        <collection field="layers" create-type="java.util.ArrayList"/>
+    </mapping>
+</binding>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/DoubleBean.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import org.jdesktop.beans.AbstractBean;
+
+/**
+ * DoubleBean - Simple bean for a observable double value
+ *
+ * @author Created by Jasper Potts (May 25, 2007)
+ */
+public class DoubleBean extends AbstractBean {
+    private double value = 0;
+
+    public DoubleBean() {}
+
+    public DoubleBean(double value) {
+        this.value = value;
+    }
+
+    public double getValue() {
+        return value;
+    }
+
+    public void setValue(double value) {
+        double old = this.value;
+        this.value = value;
+        firePropertyChange("value", old, this.value);
+    }
+
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        DoubleBean that = (DoubleBean) o;
+
+        if (Double.compare(that.value, value) != 0) return false;
+
+        return true;
+    }
+
+    public int hashCode() {
+        long temp = value != +0.0d ? Double.doubleToLongBits(value) : 0L;
+        return (int) (temp ^ (temp >>> 32));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/EllipseShape.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,189 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * EllipseShape
+ *
+ * @author Created by Jasper Potts (May 22, 2007)
+ */
+public class EllipseShape extends PaintedShape {
+
+    private DoubleBean x1 = new DoubleBean();
+    private DoubleBean x2 = new DoubleBean();
+    private DoubleBean y1 = new DoubleBean();
+    private DoubleBean y2 = new DoubleBean();
+    private ControlPoint tl = new ControlPoint(x1, y1);
+    private ControlPoint tr = new ControlPoint(x2, y1);
+    private ControlPoint bl = new ControlPoint(x1, y2);
+    private ControlPoint br = new ControlPoint(x2, y2);
+
+    // =================================================================================================================
+    // Constructors
+
+    /** private noargs constructor for JIBX */
+    private EllipseShape() {
+        this(null);
+    }
+
+    public EllipseShape(UIDefaults canvasUiDefaults) {
+        super(canvasUiDefaults);
+        PropertyChangeListener listener = new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("bounds", null, getBounds(0));
+            }
+        };
+        x1.addPropertyChangeListener(listener);
+        y1.addPropertyChangeListener(listener);
+        x2.addPropertyChangeListener(listener);
+        y2.addPropertyChangeListener(listener);
+    }
+
+    public EllipseShape(double x, double y, double w, double h) {
+        this();
+        x1.setValue(x);
+        y1.setValue(y);
+        x2.setValue(x + w);
+        y2.setValue(y + h);
+    }
+
+    public Rectangle2D getBounds(double pixelSize) {
+        double left = Math.min(x1.getValue(), x2.getValue());
+        double right = Math.max(x1.getValue(), x2.getValue());
+        double top = Math.min(y1.getValue(), y2.getValue());
+        double bottom = Math.max(y1.getValue(), y2.getValue());
+        return new Rectangle2D.Double(left, top, right - left, bottom - top);
+    }
+
+    public Ellipse2D getShape() {
+        double left = Math.min(x1.getValue(), x2.getValue());
+        double right = Math.max(x1.getValue(), x2.getValue());
+        double top = Math.min(y1.getValue(), y2.getValue());
+        double bottom = Math.max(y1.getValue(), y2.getValue());
+        return new Ellipse2D.Double(left, top, right - left, bottom - top);
+    }
+
+    public boolean isHit(Point2D p, double pixelSize) {
+        return getBounds(pixelSize).contains(p);
+    }
+
+    public void paint(Graphics2D g2, double pixelSize) {
+        g2.setPaint(getPaint());
+        g2.fill(getShape());
+    }
+
+    public void setFrame(double x1, double y1, double x2, double y2) {
+        this.x1.setValue(x1);
+        this.y1.setValue(y1);
+        this.x2.setValue(x2);
+        this.y2.setValue(y2);
+    }
+
+    @Override
+    public String toString() {
+        Rectangle2D bounds = getBounds(0);
+        return "ELLIPSE { x=" +  bounds.getX() + ", y=" + bounds.getY() + ", w=" + bounds.getWidth() + ", h=" + bounds.getHeight() + " }";
+    }
+
+    public List<ControlPoint> getControlPoints() {
+        List<ControlPoint> points = new ArrayList<ControlPoint>();
+        points.addAll(super.getControlPoints());
+        points.add(tl);
+        points.add(tr);
+        points.add(bl);
+        points.add(br);
+        return points;
+    }
+
+    public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
+        if (paintControlLines) {
+            g2.setStroke(new BasicStroke((float) pixelSize));
+            g2.setColor(GraphicsHelper.CONTROL_LINE);
+            g2.draw(getShape());
+        }
+        tl.paintControls(g2, pixelSize, true);
+        tr.paintControls(g2, pixelSize, true);
+        bl.paintControls(g2, pixelSize, true);
+        br.paintControls(g2, pixelSize, true);
+//        super.paintControls(g2, pixelSize, paintControlLines);
+    }
+
+    public void move(double moveX, double moveY, boolean snapPixels) {
+        if (snapPixels) {
+            x1.setValue(Math.round(x1.getValue() + moveX));
+            x2.setValue(Math.round(x2.getValue() + moveX));
+            y1.setValue(Math.round(y1.getValue() + moveY));
+            y2.setValue(Math.round(y2.getValue() + moveY));
+        } else {
+            x1.setValue(x1.getValue() + moveX);
+            x2.setValue(x2.getValue() + moveX);
+            y1.setValue(y1.getValue() + moveY);
+            y2.setValue(y2.getValue() + moveY);
+        }
+    }
+
+    public double getX1() {
+        return x1.getValue();
+    }
+
+    public void setX1(double x1) {
+        this.x1.setValue(x1);
+    }
+
+    public double getX2() {
+        return x2.getValue();
+    }
+
+    public void setX2(double x2) {
+        this.x2.setValue(x2);
+    }
+
+    public double getY1() {
+        return y1.getValue();
+    }
+
+    public void setY1(double y1) {
+        this.y1.setValue(y1);
+    }
+
+    public double getY2() {
+        return y2.getValue();
+    }
+
+    public void setY2(double y2) {
+        this.y2.setValue(y2);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/GraphicsHelper.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import java.awt.Color;
+
+/**
+ * GraphicsHelper
+ *
+ * @author Created by Jasper Potts (May 29, 2007)
+ */
+public class GraphicsHelper {
+    public static final Color FILL_LINE = Color.BLUE;
+    public static final Color FILL_CP_LINE = Color.BLUE;
+    public static final Color FILL_CP_FILL = Color.WHITE;
+    public static final Color CONTROL_LINE = Color.RED;
+    public static final Color CONTROL_POINT_LINE = Color.RED;
+    public static final Color CONTROL_POINT_FILL = Color.WHITE;
+    public static final Color BEZIER_CONTROL_POINT_LINE = CONTROL_POINT_LINE;
+    public static final Color BEZIER_CONTROL_POINT_FILL = CONTROL_POINT_FILL;
+    public static final Color BEZIER_CONTROL_LINE = Color.DARK_GRAY;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Layer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,443 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import org.jdesktop.swingx.designer.effects.Effect;
+
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.Shape;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Layer
+ *
+ * @author Created by Jasper Potts (May 22, 2007)
+ */
+public class Layer extends SimpleShape implements Iterable<SimpleShape>, LayerContainer {
+    public static enum LayerType {
+        standard, template
+    }
+
+    private String name;
+    protected LayerType type = LayerType.standard;
+    /** List of shapes in this layer, first shape is painted on top */
+    private List<SimpleShape> shapes = new ArrayList<SimpleShape>();
+    private List<Effect> effects = new ArrayList<Effect>();
+    private double opacity = 1;
+    private double fillOpacity = 1;
+    private BlendingMode blendingMode = BlendingMode.NORMAL;
+    private boolean locked = false;
+    private boolean visible = true;
+    private PropertyChangeListener shapeChangeListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            int index = shapes.indexOf((SimpleShape) evt.getSource());
+            firePropertyChange("shapes[" + index + "]." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
+        }
+    };
+    private PropertyChangeListener effectChangeListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            int index = effects.indexOf((Effect) evt.getSource());
+            System.out.println(
+                    "Layer.propertyChange EFFECT PROPERTY CHANGED " + evt.getSource() + " -- " + evt.getPropertyName());
+            firePropertyChange("effects[" + index + "]." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
+        }
+    };
+    private BufferedImage buffer = null;
+    // =================================================================================================================
+    // Constructors
+
+    public Layer() {
+    }
+
+    public Layer(String name) {
+        this();
+        this.name = name;
+    }
+
+    /** Called by JIBX after populating this layer so we can add listeners to children */
+    protected void postInit() {
+        for (SimpleShape shape : shapes) {
+            shape.addPropertyChangeListener(shapeChangeListener);
+            shape.setParent(this);
+        }
+        for (Effect effect : effects) {
+            effect.addPropertyChangeListener(effectChangeListener);
+        }
+    }
+
+    // =================================================================================================================
+    // Bean Methods
+
+    public LayerType getType() {
+        return type;
+    }
+
+    public boolean isLocked() {
+        return locked;
+    }
+
+    public void setLocked(boolean locked) {
+        boolean old = isLocked();
+        this.locked = locked;
+        firePropertyChange("locked", old, isLocked());
+    }
+
+    public boolean isVisible() {
+        return visible;
+    }
+
+    public void setVisible(boolean visible) {
+        boolean old = isVisible();
+        this.visible = visible;
+        firePropertyChange("visible", old, isVisible());
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        String old = getName();
+        this.name = name;
+        firePropertyChange("name", old, getName());
+    }
+
+    public void setParent(LayerContainer parent) {
+        super.setParent(parent);
+        // generate a name if null
+        if (name == null) {
+            Canvas c = null;
+            LayerContainer p = parent;
+            while (true) {
+                if (p instanceof Canvas) {
+                    c = (Canvas) p;
+                    break;
+                } else if (p == null) {
+                    break;
+                }
+                p = p.getParent();
+            }
+            if (c != null) {
+                setName("Layer " + c.getNextLayerNameIndex());
+            }
+        }
+    }
+
+    /**
+     * Add shape to top of layer so it paints above all other shapes
+     *
+     * @param shape The shape to add
+     */
+    public void add(SimpleShape shape) {
+        shapes.add(0, shape);
+        shape.setParent(this);
+        shape.addPropertyChangeListener(shapeChangeListener);
+        fireIndexedPropertyChange("shapes", 0, null, shape);
+    }
+
+    public void remove(SimpleShape shape) {
+        int index = shapes.indexOf(shape);
+        if (index != -1) {
+            shapes.remove(shape);
+            shape.setParent(null);
+            fireIndexedPropertyChange("shapes", index, shape, null);
+        }
+    }
+
+    /**
+     * Returns an unmodifianle iterator over a set of elements of type SimpleShape.
+     *
+     * @return an Iterator.
+     */
+    public Iterator<SimpleShape> iterator() {
+        return Collections.unmodifiableList(shapes).iterator();
+    }
+
+
+    public List<Effect> getEffects() {
+        return Collections.unmodifiableList(effects);
+    }
+
+    public void addEffect(Effect effect) {
+        int index = effects.size();
+        effects.add(effect);
+        effect.addPropertyChangeListener(effectChangeListener);
+        fireIndexedPropertyChange("effects", index, null, effects);
+    }
+
+    public void removeEffect(Effect effect) {
+        int index = effects.indexOf(effect);
+        if (index != -1) {
+            effects.remove(effect);
+            effect.removePropertyChangeListener(effectChangeListener);
+            fireIndexedPropertyChange("effects", index, effect, null);
+        }
+    }
+
+    public double getOpacity() {
+        return opacity;
+    }
+
+    public void setOpacity(double opacity) {
+        if (opacity < 0 || opacity > 1) return;
+        double old = getOpacity();
+        this.opacity = opacity;
+        firePropertyChange("opacity", old, getOpacity());
+    }
+
+    public double getFillOpacity() {
+        return fillOpacity;
+    }
+
+    public void setFillOpacity(double fillOpacity) {
+        if (fillOpacity < 0 || fillOpacity > 1) return;
+        double old = getFillOpacity();
+        this.fillOpacity = fillOpacity;
+        firePropertyChange("fillOpacity", old, getFillOpacity());
+    }
+
+    public BlendingMode getBlendingMode() {
+        return blendingMode;
+    }
+
+    public void setBlendingMode(BlendingMode blendingMode) {
+        BlendingMode old = getBlendingMode();
+        this.blendingMode = blendingMode;
+        firePropertyChange("blendingMode", old, getBlendingMode());
+    }
+
+    // =================================================================================================================
+    // Layer Methods
+
+    /**
+     * Get the parent canvas that contains this layer
+     *
+     * @return Parant canvas, or null if the layer is not in a canvas
+     */
+    public Canvas getCanvas() {
+        LayerContainer lc = this;
+        while (lc != null) {
+            if (lc instanceof Canvas) return (Canvas) lc;
+            lc = lc.getParent();
+        }
+        return null;
+    }
+
+    public List<SimpleShape> getShapes() {
+        return new ArrayList<SimpleShape>(shapes);
+    }
+
+    public List<SimpleShape> getIntersectingShapes(Point2D p, double pixelSize) {
+        if (isLocked() || !isVisible()) return Collections.emptyList();
+        List<SimpleShape> intersectingShapes = new ArrayList<SimpleShape>();
+        for (SimpleShape shape : shapes) {
+            if (shape instanceof Layer) {
+                intersectingShapes.addAll(((Layer) shape).getIntersectingShapes(p, pixelSize));
+            } else {
+                if (shape.isHit(p, pixelSize)) intersectingShapes.add(shape);
+            }
+        }
+        return intersectingShapes;
+    }
+
+    public List<SimpleShape> getIntersectingShapes(Rectangle2D rect, double pixelSize) {
+        if (isLocked() || !isVisible()) return Collections.emptyList();
+        List<SimpleShape> intersectingShapes = new ArrayList<SimpleShape>();
+        for (SimpleShape shape : shapes) {
+            if (shape instanceof Layer) {
+                intersectingShapes.addAll(((Layer) shape).getIntersectingShapes(rect, pixelSize));
+            } else {
+                if (shape.intersects(rect, pixelSize)) intersectingShapes.add(shape);
+            }
+        }
+        return intersectingShapes;
+
+    }
+
+    public boolean isEmpty() {
+        return shapes.isEmpty();
+    }
+
+    // =================================================================================================================
+    // SimpleShape Methods
+
+    public Rectangle2D getBounds(double pixelSize) {
+        Rectangle2D.Double rect = new Rectangle2D.Double();
+        for (SimpleShape shape : shapes) {
+            rect.add(shape.getBounds(pixelSize));
+        }
+        return rect;
+    }
+
+
+    public Shape getShape() {
+        return getBounds(0);
+    }
+
+    public boolean isHit(Point2D p, double pixelSize) {
+        if (isLocked() || !isVisible()) return false;
+        for (SimpleShape shape : shapes) {
+            if (shape.isHit(p, pixelSize)) return true;
+        }
+        return false;
+    }
+
+    public boolean intersects(Rectangle2D rect, double pixelSize) {
+        if (isLocked() || !isVisible()) return false;
+        for (SimpleShape shape : shapes) {
+            if (shape.intersects(rect, pixelSize)) return true;
+        }
+        return false;
+    }
+
+    public List<ControlPoint> getControlPoints() {
+        return Collections.emptyList();
+    }
+
+    public void paint(Graphics2D g2, double pixelSize) {
+    }
+
+    public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
+
+    }
+
+    public String toString() {
+        return getName();
+    }
+
+    // =================================================================================================================
+    // LayerContainer Methods
+
+    public void addLayer(int i, Layer layer) {
+        // get existing layer at index i
+        Layer existingLayer = getLayer(i);
+        if (existingLayer == null) {
+            addLayer(layer);
+        } else {
+            int index = indexOfLayer(existingLayer);
+            shapes.add(index, layer);
+            layer.setParent(this);
+            layer.addPropertyChangeListener(shapeChangeListener);
+            fireIndexedPropertyChange("layers", index, null, layer);
+        }
+    }
+
+    public void addLayer(Layer layer) {
+        shapes.add(layer);
+        layer.setParent(this);
+        layer.addPropertyChangeListener(shapeChangeListener);
+        int index = indexOfLayer(layer);
+        fireIndexedPropertyChange("layers", index, null, layer);
+    }
+
+    public Layer getLayer(int index) {
+        int i = -1;
+        for (SimpleShape shape : shapes) {
+            if (shape instanceof Layer) i++;
+            if (i == index) return (Layer) shape;
+        }
+        return null;
+    }
+
+    public int getLayerCount() {
+        int count = 0;
+        for (SimpleShape shape : shapes) {
+            if (shape instanceof Layer) count++;
+        }
+        return count;
+    }
+
+
+    public Collection<Layer> getLayers() {
+        List<Layer> layers = new ArrayList<Layer>();
+        for (SimpleShape shape : shapes) {
+            if (shape instanceof Layer) layers.add((Layer) shape);
+        }
+        return Collections.unmodifiableList(layers);
+    }
+
+    public Iterator<Layer> getLayerIterator() {
+        return new Iterator<Layer>() {
+            private int index = 0;
+
+            public boolean hasNext() {
+                for (int i = index; i < shapes.size(); i++) {
+                    if (shapes.get(i) instanceof Layer) {
+                        return true;
+                    }
+                }
+                return false;
+            }
+
+            public Layer next() {
+                for (; index < shapes.size(); index++) {
+                    if (shapes.get(index) instanceof Layer) {
+                        Layer nextLayer = (Layer) shapes.get(index);
+                        index++; // increment index so we don't find the same one again
+                        return nextLayer;
+                    }
+                }
+                return null;
+            }
+
+            public void remove() {
+                throw new UnsupportedOperationException();
+            }
+        };
+    }
+
+    public int indexOfLayer(Layer layer) {
+        int i = -1;
+        for (SimpleShape s : shapes) {
+            if (s instanceof Layer) i++;
+            if (s == layer) return i;
+        }
+        return -1;
+    }
+
+    public void removeLayer(Layer layer) {
+        int index = indexOfLayer(layer);
+        if (index != -1) {
+            shapes.remove(layer);
+            layer.removePropertyChangeListener(shapeChangeListener);
+            fireIndexedPropertyChange("layers", index, layer, null);
+        }
+    }
+
+
+    public Dimension getRootSize() {
+        return getParent().getRootSize();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/LayerContainer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import java.awt.Dimension;
+import java.beans.PropertyChangeListener;
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * LayerContainer
+ *
+ * @author Created by Jasper Potts (May 31, 2007)
+ */
+public interface LayerContainer {
+    public void addPropertyChangeListener(PropertyChangeListener listener);
+
+    public void removePropertyChangeListener(PropertyChangeListener listener);
+
+    public LayerContainer getParent();
+
+    public void addLayer(Layer layer);
+
+    public void addLayer(int i, Layer layer);
+
+    public void removeLayer(Layer layer);
+
+    public int getLayerCount();
+
+    public Layer getLayer(int index);
+
+    public int indexOfLayer(Layer layer);
+
+    public Iterator<Layer> getLayerIterator();
+
+    public Collection<Layer> getLayers();
+
+    /**
+     * Get the size in pixels of the root of the layer tree, this is usualy a canvas
+     *
+     * @return The size of the whole layer tree
+     */
+    public Dimension getRootSize();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/PaintedShape.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,289 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import org.jdesktop.swingx.designer.paint.Matte;
+import org.jdesktop.swingx.designer.paint.PaintModel;
+
+import javax.swing.UIDefaults;
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.GradientPaint;
+import java.awt.Graphics2D;
+import java.awt.LinearGradientPaint;
+import java.awt.Paint;
+import java.awt.RadialGradientPaint;
+import java.awt.Shape;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Line2D;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * PaintedShape
+ *
+ * @author Created by Jasper Potts (May 22, 2007)
+ */
+public abstract class PaintedShape extends SimpleShape {
+
+    private PaintModel paint;
+    // control points for paint control types
+    private DoubleBean px1 = new DoubleBean(0.25);
+    private DoubleBean px2 = new DoubleBean(0.75);
+    private DoubleBean py1 = new DoubleBean(0);
+    private DoubleBean py2 = new DoubleBean(1);
+    private ControlPoint ptl = new PaintControlPoint(px1, py1);
+    private ControlPoint ptr = new PaintControlPoint(px2, py1);
+    private ControlPoint pbl = new PaintControlPoint(px1, py2);
+    private ControlPoint pbr = new PaintControlPoint(px2, py2);
+    private PropertyChangeListener paintListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            firePropertyChange("paint." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
+        }
+    };
+
+    protected PaintedShape() {
+        px1.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("x1", evt.getOldValue(), evt.getNewValue());
+            }
+        });
+        py1.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("y1", evt.getOldValue(), evt.getNewValue());
+            }
+        });
+        px2.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("x2", evt.getOldValue(), evt.getNewValue());
+            }
+        });
+        py2.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("y2", evt.getOldValue(), evt.getNewValue());
+            }
+        });
+    }
+
+    protected PaintedShape(UIDefaults canvasUiDefaults) {
+        this();
+        setPaintModel(new Matte(Color.ORANGE, canvasUiDefaults));
+    }
+
+    public PaintModel getPaintModel() {
+        return paint;
+    }
+
+    public void setPaintModel(PaintModel paint) {
+        PaintModel old = getPaintModel();
+        if (old != null) old.removePropertyChangeListener(paintListener);
+        this.paint = paint;
+        this.paint.addPropertyChangeListener(paintListener);
+        firePropertyChange("paintModel", old, getPaintModel());
+    }
+
+    public Paint getPaint() {
+        Paint p = getPaintModel().getPaint();
+        if (p instanceof Color) {
+            return p;
+        }
+        //resize p as necessary to fit the bounds of this PaintedShape
+        Rectangle2D bounds = getBounds(0);
+        if (p instanceof LinearGradientPaint) {
+            LinearGradientPaint lgp = (LinearGradientPaint) p;
+            return new LinearGradientPaint(
+                    convertLocalPoint(ptl.getPosition(), bounds),
+                    convertLocalPoint(pbr.getPosition(), bounds),
+                    lgp.getFractions(),
+                    lgp.getColors());
+        } else if (p instanceof RadialGradientPaint) {
+            RadialGradientPaint rgp = (RadialGradientPaint) p;
+            Point2D outer = convertLocalPoint(ptl.getPosition(), bounds);
+            Point2D center = convertLocalPoint(pbr.getPosition(), bounds);
+            double deltaX = Math.abs(center.getX() - outer.getX());
+            double deltaY = Math.abs(center.getY() - outer.getY());
+            float radius = (float) Math.sqrt((deltaX * deltaX) + (deltaY * deltaY));
+            return new RadialGradientPaint(
+                    center,
+                    radius,
+                    rgp.getFractions(),
+                    rgp.getColors());
+        } else {
+            return p;
+        }
+    }
+
+    public List<? extends ControlPoint> getControlPoints() {
+        switch (paint.getPaintControlType()) {
+            case control_line:
+                return Arrays.asList(ptl, pbr);
+            case control_rect:
+                return Arrays.asList(ptl, ptr, pbl, pbr);
+            default:
+                return Collections.emptyList();
+        }
+    }
+
+    public void paintFillControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
+        switch (paint.getPaintControlType()) {
+            case control_line:
+                Point2D p1 = convertLocalPoint(ptl.getPosition(), PaintedShape.this.getBounds(0));
+                Point2D p2 = convertLocalPoint(pbr.getPosition(), PaintedShape.this.getBounds(0));
+                g2.setStroke(new BasicStroke((float) pixelSize));
+                g2.setColor(GraphicsHelper.FILL_LINE);
+                g2.draw(new Line2D.Double(p1.getX(), p1.getY(), p2.getX(), p2.getY()));
+                ptl.paintControls(g2, pixelSize, true);
+                pbr.paintControls(g2, pixelSize, true);
+                break;
+            case control_rect:
+                g2.setStroke(new BasicStroke((float) pixelSize));
+                g2.setColor(GraphicsHelper.FILL_LINE);
+                g2.draw(new Rectangle2D.Double(
+                        px1.getValue(),
+                        py1.getValue(),
+                        px2.getValue() - px1.getValue(),
+                        py2.getValue() - py1.getValue()));
+                ptl.paintControls(g2, pixelSize, true);
+                ptr.paintControls(g2, pixelSize, true);
+                pbl.paintControls(g2, pixelSize, true);
+                pbr.paintControls(g2, pixelSize, true);
+                break;
+        }
+    }
+
+    public void move(double moveX, double moveY, boolean snapPixels) {
+        for (ControlPoint controlPoint : getControlPoints()) {
+            if (!(controlPoint instanceof PaintControlPoint)) controlPoint.move(moveX, moveY, snapPixels);
+        }
+    }
+
+    public double getPaintX1() {
+        return px1.getValue();
+    }
+
+    public void setPaintX1(double x1) {
+        this.px1.setValue(x1);
+    }
+
+    public double getPaintX2() {
+        return px2.getValue();
+    }
+
+    public void setPaintX2(double x2) {
+        this.px2.setValue(x2);
+    }
+
+    public double getPaintY1() {
+        return py1.getValue();
+    }
+
+    public void setPaintY1(double y1) {
+        this.py1.setValue(y1);
+    }
+
+    public double getPaintY2() {
+        return py2.getValue();
+    }
+
+    public void setPaintY2(double y2) {
+        this.py2.setValue(y2);
+    }
+
+    // =================================================================================================================
+    // Private helper methods
+
+    private Point2D convertLocalPoint(Point2D point, Rectangle2D bounds) {
+        point.setLocation(
+                bounds.getX() + (point.getX() * bounds.getWidth()),
+                bounds.getY() + (point.getY() * bounds.getHeight())
+        );
+        return point;
+    }
+
+    private Point2D convertScreenPoint(Point2D point, Rectangle2D bounds) {
+        return new Point2D.Double(
+                (point.getX() - bounds.getX()) / bounds.getWidth(),
+                (point.getY() - bounds.getY()) / bounds.getHeight()
+        );
+    }
+
+    // =================================================================================================================
+    // Gradient ControlPoint
+
+    /**
+     * A Special ControlPoint thats internal values are in coordinates relative to the shapes bounds. With 0,0 being the
+     * top left of the shape and 1.0X == shape width and 1.0Y == shapes height.
+     */
+    public class PaintControlPoint extends ControlPoint {
+        public PaintControlPoint() {
+            super(GraphicsHelper.FILL_CP_FILL, GraphicsHelper.FILL_CP_LINE);
+        }
+
+        public PaintControlPoint(DoubleBean x, DoubleBean y) {
+            super(x, y, GraphicsHelper.FILL_CP_FILL, GraphicsHelper.FILL_CP_LINE);
+        }
+
+        public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
+            Point2D p = convertLocalPoint(getPosition(), PaintedShape.this.getBounds(0));
+            g2.setStroke(new BasicStroke((float) pixelSize));
+            double size = pixelSize * 4d;
+            Shape s = new Ellipse2D.Double(p.getX() - size, p.getY() - size,
+                    size * 2, size * 2);
+            g2.setPaint(new GradientPaint(
+                    (float) p.getX(), (float) (p.getY() - size), Color.CYAN,
+                    (float) p.getX(), (float) (p.getY() + size), Color.WHITE
+            ));
+            g2.fill(s);
+            g2.setColor(GraphicsHelper.FILL_CP_LINE);
+            g2.draw(s);
+        }
+
+        public void move(double moveX, double moveY, boolean snapPixels) {
+            Rectangle2D bounds = PaintedShape.this.getBounds(0);
+            moveX = moveX / bounds.getWidth();
+            moveY = moveY / bounds.getHeight();
+            if (snapPixels) {
+                // snap to neareast 0.5
+                double newX = Math.round((x.getValue() + moveX) * 2d) / 2d;
+                double newY = Math.round((y.getValue() + moveY) * 2d) / 2d;
+                setPosition(newX, newY);
+            } else {
+                setPosition(x.getValue() + moveX, y.getValue() + moveY);
+            }
+        }
+
+        public Rectangle2D getBounds(double pixelSize) {
+            Point2D p = convertLocalPoint(getPosition(), PaintedShape.this.getBounds(0));
+            double size = pixelSize * 4d;
+            return new Rectangle2D.Double(p.getX() - size, p.getY() - size,
+                    size * 2, size * 2);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/PathShape.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,194 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * PathShape
+ *
+ * @author Created by Jasper Potts (May 29, 2007)
+ */
+public class PathShape extends PaintedShape {
+
+    private Shape cachedShape = null;
+    private List<BezierControlPoint> controlPoints = new ArrayList<BezierControlPoint>();
+    private PropertyChangeListener cpListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            rebuildShape();
+        }
+    };
+
+    // =================================================================================================================
+    // Constructors
+
+    /** private noargs constructor for JIBX */
+    private PathShape() {
+        this(null);
+    }
+
+    public PathShape(UIDefaults canvasUiDefaults) {
+        super(canvasUiDefaults);
+    }
+
+    public BezierControlPoint addPoint(double x, double y) {
+        BezierControlPoint cp = new BezierControlPoint(x, y);
+        controlPoints.add(cp);
+        cp.addPropertyChangeListener(cpListener);
+        // update shape
+        rebuildShape();
+        // return new control point
+        return cp;
+    }
+
+    public Shape getShape() {
+        if (cachedShape == null) {
+            rebuildShape();
+        }
+        return cachedShape;
+    }
+
+    private void rebuildShape() {
+        GeneralPath path = new GeneralPath();
+        BezierControlPoint first, last;
+        first = last = controlPoints.get(0);
+        path.moveTo((float) first.getX(), (float) first.getY());
+        for (int i = 0; i < controlPoints.size(); i++) {
+            BezierControlPoint controlPoint = controlPoints.get(i);
+            if (last.getCp2().isSharp() && controlPoint.getCp1().isSharp()) {
+                path.lineTo(controlPoint.getX(), controlPoint.getY());
+            } else {
+                path.curveTo(
+                        (float) last.getCp2().getX(), (float) last.getCp2().getY(),
+                        (float) controlPoint.getCp1().getX(), (float) controlPoint.getCp1().getY(),
+                        (float) controlPoint.getX(), (float) controlPoint.getY()
+                );
+            }
+            last = controlPoint;
+        }
+        // close path
+        if (last.getCp2().isSharp() && first.getCp1().isSharp()) {
+            path.lineTo(first.getX(), first.getY());
+        } else {
+            path.curveTo(
+                    (float) last.getCp2().getX(), (float) last.getCp2().getY(),
+                    (float) first.getCp1().getX(), (float) first.getCp1().getY(),
+                    (float) first.getX(), (float) first.getY()
+            );
+        }
+        path.closePath();
+        // fire change
+        cachedShape = path;
+        firePropertyChange("shape", null, cachedShape);
+    }
+
+    @Override
+    public String toString() {
+        String p = "PATH {\n";
+        BezierControlPoint first, last;
+        first = last = controlPoints.get(0);
+        p += "   path.moveTo(" + first.getX() + "," + first.getY() + ");";
+        for (int i = 0; i < controlPoints.size(); i++) {
+            BezierControlPoint controlPoint = controlPoints.get(i);
+            p += "   path.curveTo(" +
+                    (float) last.getCp2().getX() + "," + (float) last.getCp2().getY() + "," +
+                    (float) controlPoint.getCp1().getX() + "," + (float) controlPoint.getCp1().getY() + "," +
+                    (float) controlPoint.getX() + "," + (float) controlPoint.getY() +
+                    ");\n";
+            last = controlPoint;
+        }
+        // close path
+        p += "   path.curveTo(" +
+                (float) last.getCp2().getX() + "," + (float) last.getCp2().getY() + "," +
+                (float) first.getCp1().getX() + "," + (float) first.getCp1().getY() + "," +
+                (float) first.getX() + "," + (float) first.getY() +
+                ");\n";
+        p += "}\n";
+        return p;
+    }
+
+    // =================================================================================================================
+    // Shape Methods
+
+    public Rectangle2D getBounds(double pixelSize) {
+        return getShape().getBounds2D();
+    }
+
+    public List<? extends ControlPoint> getControlPoints() {
+        List<ControlPoint> pts = new ArrayList<ControlPoint>();
+        for (BezierControlPoint controlPoint : controlPoints) {
+            pts.add(controlPoint);
+        }
+        for (ControlPoint controlPoint : super.getControlPoints()) {
+            pts.add(controlPoint);
+        }
+        return pts;
+    }
+
+    public void setControlPoints(List<BezierControlPoint> controlPoints) {
+        List<BezierControlPoint> old = this.controlPoints;
+        for (BezierControlPoint cp : old) {
+            cp.removePropertyChangeListener(cpListener);
+        }
+        this.controlPoints = controlPoints;
+        for (BezierControlPoint cp : this.controlPoints) {
+            cp.addPropertyChangeListener(cpListener);
+        }
+        // update shape
+        rebuildShape();
+    }
+
+    public boolean isHit(Point2D p, double pixelSize) {
+        return getShape().contains(p);
+    }
+
+    public void paint(Graphics2D g2, double pixelSize) {
+        g2.setPaint(getPaint());
+        g2.fill(getShape());
+    }
+
+    public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
+        if (paintControlLines) {
+            g2.setStroke(new BasicStroke((float) pixelSize));
+            g2.setColor(GraphicsHelper.CONTROL_LINE);
+            g2.draw(getShape());
+        }
+        for (BezierControlPoint controlPoint : controlPoints) {
+            if (!controlPoint.isSharpCorner()) controlPoint.paintControls(g2, pixelSize, true);
+        }
+    }
+
+    public List<BezierControlPoint> getBezierControlPoints() {
+        return controlPoints;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/RectangleShape.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,266 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RoundRectangle2D;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * RectangleShape
+ *
+ * @author Created by Jasper Potts (May 22, 2007)
+ */
+public class RectangleShape extends PaintedShape {
+
+    private DoubleBean x1 = new DoubleBean();
+    private DoubleBean x2 = new DoubleBean();
+    private DoubleBean y1 = new DoubleBean();
+    private DoubleBean y2 = new DoubleBean();
+    private ControlPoint tl = new ControlPoint(x1, y1);
+    private ControlPoint tr = new ControlPoint(x2, y1);
+    private ControlPoint bl = new ControlPoint(x1, y2);
+    private ControlPoint br = new ControlPoint(x2, y2);
+    private DoubleBean roundingX = new DoubleBean() {
+        public void setValue(double value) {
+            // contrain y = y1 and x is between x1+1 and (x2-x1)/2
+            boolean x1isLess = x1.getValue() < x2.getValue();
+            double min = x1isLess ? x1.getValue() + 1 : x1.getValue() - 1;
+            double max = x1isLess ? x1.getValue() + ((x2.getValue() - x1.getValue()) / 2) :
+                    x2.getValue() + ((x1.getValue() - x2.getValue()) / 2);
+            double newX = value;
+            if (newX < min) newX = min;
+            if (newX > max) newX = max;
+            super.setValue(newX);
+        }
+    };
+    private ControlPoint rounding = new ControlPoint(roundingX, y1) {
+        public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
+            double size = pixelSize * 3d;
+            Shape s = new Ellipse2D.Double(getX() - size, getY() - size,
+                    size * 2, size * 2);
+            g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_FILL);
+            g2.fill(s);
+            g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_LINE);
+            g2.draw(s);
+        }
+
+        public void setPosition(Point2D position) {
+            // only alow X to change
+            x.setValue(position.getX());
+        }
+
+    };
+
+    // =================================================================================================================
+    // Constructors
+
+    /** private noargs constructor for JIBX */
+    private RectangleShape() {
+        this(null);
+    }
+
+    public RectangleShape(UIDefaults canvasUiDefaults) {
+        super(canvasUiDefaults);
+        x1.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                // keep rounding point in sync
+                roundingX.setValue(roundingX.getValue() +
+                        ((Double) evt.getNewValue() - (Double) evt.getOldValue()));
+                firePropertyChange("bounds", null, getBounds(0));
+            }
+        });
+        x2.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                // keep rounding point in sync
+                double distanceFromX1 = Math.abs(roundingX.getValue() - x1.getValue());
+                roundingX.setValue(
+                        (x1.getValue() < x2.getValue()) ? x1.getValue() + distanceFromX1 :
+                                x1.getValue() - distanceFromX1
+                );
+                firePropertyChange("bounds", null, getBounds(0));
+            }
+        });
+        PropertyChangeListener listener = new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("bounds", null, getBounds(0));
+            }
+        };
+        y1.addPropertyChangeListener(listener);
+        y2.addPropertyChangeListener(listener);
+        rounding.addPropertyChangeListener(listener);
+    }
+
+    public RectangleShape(double x, double y, double w, double h) {
+        this();
+        x1.setValue(x);
+        y1.setValue(y);
+        x2.setValue(x + w);
+        y2.setValue(y + h);
+    }
+
+    public Shape getShape() {
+        double rounding = getRounding();
+        double left = Math.min(x1.getValue(), x2.getValue());
+        double right = Math.max(x1.getValue(), x2.getValue());
+        double top = Math.min(y1.getValue(), y2.getValue());
+        double bottom = Math.max(y1.getValue(), y2.getValue());
+        if (rounding > 0) {
+            return new RoundRectangle2D.Double(
+                    left, top, right - left, bottom - top, rounding, rounding
+            );
+        } else {
+            return new Rectangle2D.Double(left, top, right - left, bottom - top);
+        }
+    }
+
+    public double getRounding() {
+        double rounding = Math.abs(roundingX.getValue() - x1.getValue()) * 2;
+        return rounding > 2 ? rounding : 0;
+    }
+
+    public void setRounding(double rounding) {
+        if (rounding > 0 && rounding < 2) rounding = 0;
+        roundingX.setValue((rounding / 2d) + x1.getValue());
+    }
+
+    public boolean isRounded() {
+        return getRounding() > 0;
+    }
+
+    public double getX1() {
+        return x1.getValue();
+    }
+
+    public void setX1(double x1) {
+        this.x1.setValue(x1);
+    }
+
+    public double getX2() {
+        return x2.getValue();
+    }
+
+    public void setX2(double x2) {
+        this.x2.setValue(x2);
+    }
+
+    public double getY1() {
+        return y1.getValue();
+    }
+
+    public void setY1(double y1) {
+        this.y1.setValue(y1);
+    }
+
+    public double getY2() {
+        return y2.getValue();
+    }
+
+    public void setY2(double y2) {
+        this.y2.setValue(y2);
+    }
+
+    // =================================================================================================================
+    // SimpleShape Methods
+
+    public Rectangle2D getBounds(double pixelSize) {
+        double left = Math.min(x1.getValue(), x2.getValue());
+        double right = Math.max(x1.getValue(), x2.getValue());
+        double top = Math.min(y1.getValue(), y2.getValue());
+        double bottom = Math.max(y1.getValue(), y2.getValue());
+        return new Rectangle2D.Double(left, top, right - left, bottom - top);
+    }
+
+    public boolean isHit(Point2D p, double pixelSize) {
+        return getShape().contains(p);
+    }
+
+    public void paint(Graphics2D g2, double pixelSize) {
+        g2.setPaint(getPaint());
+        g2.fill(getShape());
+    }
+
+    public void setFrame(double x1, double y1, double x2, double y2) {
+        this.x1.setValue(x1);
+        this.y1.setValue(y1);
+        this.x2.setValue(x2);
+        this.y2.setValue(y2);
+    }
+
+    @Override
+    public String toString() {
+        Rectangle2D bounds = getBounds(0);
+        if (isRounded()) {
+            return "ROUND RECT { x=" +  bounds.getX() + ", y=" + bounds.getY() + ", w=" + bounds.getWidth() + ", h=" + bounds.getHeight() + ", rounding=" + getRounding() + " }";
+        } else {
+            return "ROUND RECT { x=" +  bounds.getX() + ", y=" + bounds.getY() + ", w=" + bounds.getWidth() + ", h=" + bounds.getHeight() + " }";
+        }
+    }
+
+    public List<ControlPoint> getControlPoints() {
+        List<ControlPoint> points = new ArrayList<ControlPoint>();
+        points.addAll(super.getControlPoints());
+        points.add(tl);
+        points.add(tr);
+        points.add(bl);
+        points.add(br);
+        points.add(rounding);
+        return points;
+    }
+
+    public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
+        if (paintControlLines) {
+            g2.setStroke(new BasicStroke((float) pixelSize));
+            g2.setColor(GraphicsHelper.CONTROL_LINE);
+            g2.draw(getShape());
+        }
+        tl.paintControls(g2, pixelSize, true);
+        tr.paintControls(g2, pixelSize, true);
+        bl.paintControls(g2, pixelSize, true);
+        br.paintControls(g2, pixelSize, true);
+        rounding.paintControls(g2, pixelSize, true);
+    }
+
+    public void move(double moveX, double moveY, boolean snapPixels) {
+        if (snapPixels) {
+            x1.setValue(Math.round(x1.getValue() + moveX));
+            x2.setValue(Math.round(x2.getValue() + moveX));
+            y1.setValue(Math.round(y1.getValue() + moveY));
+            y2.setValue(Math.round(y2.getValue() + moveY));
+        } else {
+            x1.setValue(x1.getValue() + moveX);
+            x2.setValue(x2.getValue() + moveX);
+            y1.setValue(y1.getValue() + moveY);
+            y2.setValue(y2.getValue() + moveY);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/SimpleShape.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import org.jdesktop.beans.AbstractBean;
+
+import java.awt.Graphics2D;
+import java.awt.Shape;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.util.List;
+
+/**
+ * SimpleShape
+ *
+ * @author Created by Jasper Potts (May 22, 2007)
+ */
+public abstract class SimpleShape extends AbstractBean {
+
+    protected AffineTransform transform = new AffineTransform();
+    protected LayerContainer parent = null;
+
+    public void applyTransform(AffineTransform t) {
+        transform.concatenate(t);
+    }
+
+    public abstract Rectangle2D getBounds(double pixelSize);
+
+    public abstract void paint(Graphics2D g2, double pixelSize);
+
+    public abstract boolean isHit(Point2D p, double pixelSize);
+
+    public boolean intersects(Rectangle2D rect, double pixelSize) {
+        return getBounds(pixelSize).intersects(rect);
+    }
+
+    public abstract List<? extends ControlPoint> getControlPoints();
+
+    public abstract void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines);
+
+    public void move(double moveX, double moveY, boolean snapPixels) {
+        for (ControlPoint controlPoint : getControlPoints()) {
+            controlPoint.move(moveX, moveY, snapPixels);
+        }
+    }
+
+    public LayerContainer getParent() {
+        return parent;
+    }
+
+    public void setParent(LayerContainer parent) {
+        LayerContainer old = getParent();
+        this.parent = parent;
+        firePropertyChange("parent", old, getParent());
+    }
+
+    public abstract Shape getShape();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/TemplateLayer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer;
+
+import org.jdesktop.swingx.designer.effects.Effect;
+
+import javax.imageio.ImageIO;
+import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
+import java.awt.Color;
+import java.awt.FontMetrics;
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.Image;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.lang.ref.SoftReference;
+
+/**
+ * TemplateLayer
+ *
+ * @author Created by Jasper Potts (Jul 2, 2007)
+ */
+public class TemplateLayer extends Layer {
+
+    private String fileName;
+    private transient SoftReference<BufferedImage> imgRef = null;
+
+    public TemplateLayer() {
+        type = LayerType.template;
+    }
+
+    public TemplateLayer(String fileName, BufferedImage templateImage) {
+        super("Template");
+        this.fileName = fileName;
+        type = LayerType.template;
+        if (templateImage != null) {
+            imgRef = new SoftReference<BufferedImage>(templateImage);
+        }
+    }
+
+    // =================================================================================================================
+    // Methods
+
+    public String getName() {
+        return super.getName();
+    }
+
+    /**
+     * template layers are always locked
+     *
+     * @return <code>true</code>
+     */
+    public boolean isLocked() {
+        return true;
+    }
+
+    public void add(SimpleShape shape) {
+        throw new IllegalStateException("Template layers can't contain shapes");
+    }
+
+    public void addEffect(Effect effect) {
+        throw new IllegalStateException("Template layers can't contain effects");
+    }
+
+    public void addLayer(int i, Layer layer) {
+        throw new IllegalStateException("Template layers can't contain sub layers");
+    }
+
+    public void addLayer(Layer layer) {
+        throw new IllegalStateException("Template layers can't contain sub layers");
+    }
+
+    public void paint(Graphics2D g2, double pixelSize) {
+        if (isVisible()) {
+            BufferedImage img = getTemplateImage();
+            if (img != null) g2.drawImage(img, 0, 0, null);
+        }
+    }
+
+
+    public Image getBuffer(GraphicsConfiguration graphicsConfiguration) {
+        return getTemplateImage();
+    }
+
+    public BufferedImage getTemplateImage() {
+        BufferedImage img = null;
+        if (imgRef == null || (img = imgRef.get()) == null) {
+
+            // can not access canvas
+            final File templateImgFile = new File(getCanvas().getTemplatesDir(), fileName);
+            System.out.println("templateImgFile = " + templateImgFile.getAbsolutePath());
+            System.out.println("templateImgFile.exists = " + templateImgFile.exists());
+            try {
+                img = ImageIO.read(templateImgFile);
+                imgRef = new SoftReference<BufferedImage>(img);
+            } catch (IOException e) {
+                e.printStackTrace();
+                // create error image
+                img = new BufferedImage(getCanvas().getSize().width, getCanvas().getSize().height,
+                        BufferedImage.TYPE_INT_RGB);
+                Graphics2D g2 = img.createGraphics();
+                g2.setColor(Color.RED);
+                g2.fillRect(0, 0, img.getWidth(), img.getHeight());
+                g2.setColor(Color.WHITE);
+                g2.setFont(g2.getFont().deriveFont(8f));
+                FontMetrics fontMetrics = g2.getFontMetrics();
+                Rectangle2D stringBounds = fontMetrics.getStringBounds("Missing Image", g2);
+                int offsetX = (int) ((img.getWidth() - stringBounds.getWidth()) / 2d);
+                int offsetY = (int) (((img.getHeight() - stringBounds.getHeight()) / 2d) - stringBounds.getY());
+                g2.drawString("Missing Image", offsetX, offsetY);
+                g2.dispose();
+                imgRef = new SoftReference<BufferedImage>(img);
+            }
+        }
+        return img;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/DropShadowEffect.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,137 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.effects;
+
+import org.jdesktop.swingx.designer.paint.Matte;
+
+import javax.swing.UIDefaults;
+import java.awt.Color;
+import java.awt.image.BufferedImage;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+import java.util.Arrays;
+
+/**
+ * DropShadowEffect
+ *
+ * @author Created by Jasper Potts (Jun 18, 2007)
+ */
+public class DropShadowEffect extends ShadowEffect {
+
+    protected DropShadowEffect() {}
+
+    ;
+
+    public DropShadowEffect(UIDefaults uiDefaults) {
+        color = new Matte(Color.BLACK, uiDefaults);
+    }
+
+    // =================================================================================================================
+    // Effect Methods
+
+    /**
+     * Get the display name for this effect
+     *
+     * @return The user displayable name
+     */
+    public String getDisplayName() {
+        return "Drop Shadow";
+    }
+
+    /**
+     * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted
+     * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be
+     * painted. OVER means the result of apply effect should be painted over the src image.
+     *
+     * @return The effect type
+     */
+    public EffectType getEffectType() {
+        return EffectType.UNDER;
+    }
+
+    /**
+     * Apply the effect to the src image generating the result . The result image may or may not contain the source
+     * image depending on what the effect type is.
+     *
+     * @param src The source image for applying the effect to
+     * @param dst The dstination image to paint effect result into. If this is null then a new image will be created
+     * @param w   The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than
+     *            the area the need effect applied to it
+     * @param h   The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than
+     *            the area the need effect applied to it
+     * @return The result of appl
+     */
+    public BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h) {
+        // calculate offset
+        double trangleAngle = Math.toRadians(angle - 90);
+        int offsetX = (int) (Math.sin(trangleAngle) * distance);
+        int offsetY = (int) (Math.cos(trangleAngle) * distance);
+        // clac expanded size
+        int tmpOffX = offsetX + size;
+        int tmpOffY = offsetY + size;
+        int tmpW = w + offsetX + size + size;
+        int tmpH = h + offsetY + size + size;
+        // create tmp buffers
+        int[] lineBuf = getTmpIntArray(w);
+        byte[] tmpBuf1 = getTmpByteArray1(tmpW * tmpH);
+        Arrays.fill(tmpBuf1, (byte) 0x00);
+        byte[] tmpBuf2 = getTmpByteArray2(tmpW * tmpH);
+        // extract src image alpha channel and inverse and offset
+        Raster srcRaster = src.getRaster();
+        for (int y = 0; y < h; y++) {
+            int dy = (y + tmpOffY);
+            int offset = dy * tmpW;
+            srcRaster.getDataElements(0, y, w, 1, lineBuf);
+            for (int x = 0; x < w; x++) {
+                int dx = x + tmpOffX;
+                tmpBuf1[offset + dx] = (byte) ((lineBuf[x] & 0xFF000000) >>> 24);
+            }
+        }
+        // blur
+        float[] kernel = EffectUtils.createGaussianKernel(size);
+        EffectUtils.blur(tmpBuf1, tmpBuf2, tmpW, tmpH, kernel, size); // horizontal pass
+        EffectUtils.blur(tmpBuf2, tmpBuf1, tmpH, tmpW, kernel, size);// vertical pass
+        //rescale
+        float spread = Math.min(1 / (1 - (0.01f * this.spread)), 255);
+        for (int i = 0; i < tmpBuf1.length; i++) {
+            int val = (int) (((int) tmpBuf1[i] & 0xFF) * spread);
+            tmpBuf1[i] = (val > 255) ? (byte) 0xFF : (byte) val;
+        }
+        // create color image with shadow color and greyscale image as alpha
+        if (dst == null) dst = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+        WritableRaster shadowRaster = dst.getRaster();
+        int red = color.getRed(), green = color.getGreen(), blue = color.getBlue();
+        for (int y = 0; y < h; y++) {
+            int srcY = y + tmpOffY;
+            int shadowOffset = (srcY - offsetY) * tmpW;
+            for (int x = 0; x < w; x++) {
+                int srcX = x + tmpOffX;
+                lineBuf[x] = tmpBuf1[shadowOffset + (srcX - offsetX)] << 24 | red << 16 | green << 8 | blue;
+            }
+            shadowRaster.setDataElements(0, y, w, 1, lineBuf);
+        }
+        return dst;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/Effect.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.effects;
+
+import org.jdesktop.beans.AbstractBean;
+import org.jdesktop.swingx.designer.BlendingMode;
+
+import java.awt.image.BufferedImage;
+import java.lang.ref.SoftReference;
+
+/**
+ * Effect
+ *
+ * @author Created by Jasper Potts (Jun 18, 2007)
+ */
+public abstract class Effect extends AbstractBean {
+    protected boolean visible = true;
+
+    public enum EffectType {
+        UNDER, BLENDED, OVER
+    }
+
+    public boolean isVisible() {
+        return visible;
+    }
+
+    public void setVisible(boolean visible) {
+        boolean old = isVisible();
+        this.visible = visible;
+        firePropertyChange("visible", old, isVisible());
+    }
+
+    public String toString() {
+        return getDisplayName();
+    }
+
+    // =================================================================================================================
+    // Abstract Methods
+
+    /**
+     * Get the display name for this effect
+     *
+     * @return The user displayable name
+     */
+    public abstract String getDisplayName();
+
+    /**
+     * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted
+     * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be
+     * painted. OVER means the result of apply effect should be painted over the src image.
+     *
+     * @return The effect type
+     */
+    public abstract EffectType getEffectType();
+
+    /**
+     * Get the blending mode to use to paint the result effected image if the EffectType is UNDER or OVER.
+     *
+     * @return The blending mode for the effect
+     */
+    public abstract BlendingMode getBlendingMode();
+
+    /**
+     * Get the opacity to use to paint the result effected image if the EffectType is UNDER or OVER.
+     *
+     * @return The opactity for the effect, 0.0f -> 1.0f
+     */
+    public abstract float getOpacity();
+
+    /**
+     * Apply the effect to the src image generating the result . The result image may or may not contain the source
+     * image depending on what the effect type is.
+     *
+     * @param src The source image for applying the effect to
+     * @param dst The dstination image to paint effect result into. If this is null then a new image will be created
+     * @param w   The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than
+     *            the area the need effect applied to it
+     * @param h   The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than
+     *            the area the need effect applied to it
+     * @return The result of appl
+     */
+    public abstract BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h);
+
+    // =================================================================================================================
+    // Static data cache
+
+    private static SoftReference<int[]> tmpIntArray = null;
+    private static SoftReference<byte[]> tmpByteArray1 = null;
+    private static SoftReference<byte[]> tmpByteArray2 = null;
+    private static SoftReference<byte[]> tmpByteArray3 = null;
+
+    protected static int[] getTmpIntArray(int size) {
+        int[] tmp;
+        if (tmpIntArray == null || (tmp = tmpIntArray.get()) == null || tmp.length < size) {
+            // create new array
+            tmp = new int[size];
+            tmpIntArray = new SoftReference<int[]>(tmp);
+        }
+        return tmp;
+    }
+
+    protected static byte[] getTmpByteArray1(int size) {
+        byte[] tmp;
+        if (tmpByteArray1 == null || (tmp = tmpByteArray1.get()) == null || tmp.length < size) {
+            // create new array
+            tmp = new byte[size];
+            tmpByteArray1 = new SoftReference<byte[]>(tmp);
+        }
+        return tmp;
+    }
+
+    protected static byte[] getTmpByteArray2(int size) {
+        byte[] tmp;
+        if (tmpByteArray2 == null || (tmp = tmpByteArray2.get()) == null || tmp.length < size) {
+            // create new array
+            tmp = new byte[size];
+            tmpByteArray2 = new SoftReference<byte[]>(tmp);
+        }
+        return tmp;
+    }
+
+    protected static byte[] getTmpByteArray3(int size) {
+        byte[] tmp;
+        if (tmpByteArray3 == null || (tmp = tmpByteArray3.get()) == null || tmp.length < size) {
+            // create new array
+            tmp = new byte[size];
+            tmpByteArray3 = new SoftReference<byte[]>(tmp);
+        }
+        return tmp;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/EffectUtils.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.effects;
+
+
+/**
+ * EffectUtils
+ *
+ * @author Created by Jasper Potts (Jun 18, 2007)
+ */
+public class EffectUtils {
+
+    /**
+     * <p>Blurs the source pixels into the destination pixels. The force of the blur is specified by the radius which
+     * must be greater than 0.</p> <p>The source and destination pixels arrays are expected to be in the BYTE_GREY
+     * format.</p> <p>After this method is executed, dstPixels contains a transposed and filtered copy of
+     * srcPixels.</p>
+     *
+     * @param srcPixels the source pixels
+     * @param dstPixels the destination pixels
+     * @param width     the width of the source picture
+     * @param height    the height of the source picture
+     * @param kernel    the kernel of the blur effect
+     * @param radius    the radius of the blur effect
+     */
+    public static void blur(byte[] srcPixels, byte[] dstPixels,
+                            int width, int height,
+                            float[] kernel, int radius) {
+        float p;
+        int cp;
+        for (int y = 0; y < height; y++) {
+            int index = y;
+            int offset = y * width;
+            for (int x = 0; x < width; x++) {
+                p = 0.0f;
+                for (int i = -radius; i <= radius; i++) {
+                    int subOffset = x + i;
+                    if (subOffset < 0 || subOffset >= width) {
+                        subOffset = (x + width) % width;
+                    }
+                    int pixel = srcPixels[offset + subOffset] & 0xFF;
+                    float blurFactor = kernel[radius + i];
+                    p += blurFactor * pixel;
+                }
+                cp = (int) (p + 0.5f);
+                dstPixels[index] = (byte) (cp > 255 ? 255 : cp);
+                index += height;
+            }
+        }
+    }
+
+    public static float[] createGaussianKernel(int radius) {
+        if (radius < 1) {
+            throw new IllegalArgumentException("Radius must be >= 1");
+        }
+
+        float[] data = new float[radius * 2 + 1];
+
+        float sigma = radius / 3.0f;
+        float twoSigmaSquare = 2.0f * sigma * sigma;
+        float sigmaRoot = (float) Math.sqrt(twoSigmaSquare * Math.PI);
+        float total = 0.0f;
+
+        for (int i = -radius; i <= radius; i++) {
+            float distance = i * i;
+            int index = i + radius;
+            data[index] = (float) Math.exp(-distance / twoSigmaSquare) / sigmaRoot;
+            total += data[index];
+        }
+
+        for (int i = 0; i < data.length; i++) {
+            data[i] /= total;
+        }
+
+        return data;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/EffectUtilsTemp.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.effects;
+
+import java.awt.Composite;
+import java.awt.CompositeContext;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorModel;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+
+/**
+ * EffectUtilsTemp - effect utils methods that are not being used for now but we might want later
+ *
+ * @author Created by Jasper Potts (Jun 18, 2007)
+ */
+public class EffectUtilsTemp {
+
+    /**
+     * Extract the alpha channel of a image into new greyscale buffered image
+     *
+     * @param src Must but INT_ARGB buffered image
+     * @return new TYPE_BYTE_GRAY image of just the alpha channel
+     */
+    public static BufferedImage extractAlpha(BufferedImage src) {
+        int w = src.getWidth();
+        int h = src.getHeight();
+        // extract image alpha channel as greyscale image
+        final BufferedImage greyImg = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_GRAY);
+        Graphics2D g2 = greyImg.createGraphics();
+        g2.setComposite(new Composite() {
+            public CompositeContext createContext(ColorModel srcColorModel, ColorModel dstColorModel,
+                                                  RenderingHints hints) {
+                return new CompositeContext() {
+                    public void dispose() {}
+
+                    public void compose(Raster src, Raster dstIn, WritableRaster dstOut) {
+                        int width = Math.min(src.getWidth(), dstIn.getWidth());
+                        int height = Math.min(src.getHeight(), dstIn.getHeight());
+                        int[] srcPixels = new int[width];
+                        byte[] dstPixels = new byte[width];
+                        for (int y = 0; y < height; y++) {
+                            src.getDataElements(0, y, width, 1, srcPixels);
+                            for (int x = 0; x < width; x++) {
+                                dstPixels[x] = (byte) ((srcPixels[x] & 0xFF000000) >>> 24);
+                            }
+                            dstOut.setDataElements(0, y, width, 1, dstPixels);
+                        }
+                    }
+                };
+            }
+        });
+        g2.drawImage(src, 0, 0, null);
+        g2.dispose();
+        return greyImg;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/InnerGlowEffect.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.effects;
+
+import org.jdesktop.swingx.designer.paint.Matte;
+
+import javax.swing.UIDefaults;
+import java.awt.Color;
+
+/**
+ * InnerGlowEffect
+ *
+ * @author Created by Jasper Potts (Jun 21, 2007)
+ */
+public class InnerGlowEffect extends InnerShadowEffect {
+
+    protected InnerGlowEffect() {
+        distance = 0;
+    }
+
+    public InnerGlowEffect(UIDefaults uiDefaults) {
+        color = new Matte(new Color(255, 255, 211), uiDefaults);
+    }
+
+    /**
+     * Get the display name for this effect
+     *
+     * @return The user displayable name
+     */
+    public String getDisplayName() {
+        return "Inner Glow";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/InnerShadowEffect.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.effects;
+
+import org.jdesktop.swingx.designer.paint.Matte;
+
+import javax.swing.UIDefaults;
+import java.awt.Color;
+import java.awt.image.BufferedImage;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+import java.util.Arrays;
+
+/**
+ * InnerShadowEffect
+ *
+ * @author Created by Jasper Potts (Jun 18, 2007)
+ */
+public class InnerShadowEffect extends ShadowEffect {
+
+    protected InnerShadowEffect() {}
+
+    ;
+
+    public InnerShadowEffect(UIDefaults uiDefaults) {
+        color = new Matte(Color.BLACK, uiDefaults);
+    }
+
+    // =================================================================================================================
+    // Effect Methods
+
+    /**
+     * Get the display name for this effect
+     *
+     * @return The user displayable name
+     */
+    public String getDisplayName() {
+        return "Inner Shadow";
+    }
+
+    /**
+     * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted
+     * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be
+     * painted. OVER means the result of apply effect should be painted over the src image.
+     *
+     * @return The effect type
+     */
+    public Effect.EffectType getEffectType() {
+        return Effect.EffectType.OVER;
+    }
+
+    /**
+     * Apply the effect to the src image generating the result . The result image may or may not contain the source
+     * image depending on what the effect type is.
+     *
+     * @param src The source image for applying the effect to
+     * @param dst The dstination image to paint effect result into. If this is null then a new image will be created
+     * @param w   The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than
+     *            the area the need effect applied to it
+     * @param h   The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than
+     *            the area the need effect applied to it
+     * @return The result of appl
+     */
+    public BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h) {
+        // calculate offset
+        double trangleAngle = Math.toRadians(angle - 90);
+        int offsetX = (int) (Math.sin(trangleAngle) * distance);
+        int offsetY = (int) (Math.cos(trangleAngle) * distance);
+        // clac expanded size
+        int tmpOffX = offsetX + size;
+        int tmpOffY = offsetY + size;
+        int tmpW = w + offsetX + size + size;
+        int tmpH = h + offsetY + size + size;
+        // create tmp buffers
+        int[] lineBuf = getTmpIntArray(w);
+        byte[] srcAlphaBuf = getTmpByteArray1(tmpW * tmpH);
+        Arrays.fill(srcAlphaBuf, (byte) 0xFF);
+        byte[] tmpBuf1 = getTmpByteArray2(tmpW * tmpH);
+        byte[] tmpBuf2 = getTmpByteArray3(tmpW * tmpH);
+        // extract src image alpha channel and inverse and offset
+        Raster srcRaster = src.getRaster();
+        for (int y = 0; y < h; y++) {
+            int dy = (y + tmpOffY);
+            int offset = dy * tmpW;
+            srcRaster.getDataElements(0, y, w, 1, lineBuf);
+            for (int x = 0; x < w; x++) {
+                int dx = x + tmpOffX;
+                srcAlphaBuf[offset + dx] = (byte) ((255 - ((lineBuf[x] & 0xFF000000) >>> 24)) & 0xFF);
+            }
+        }
+        // blur
+        float[] kernel = EffectUtils.createGaussianKernel(size * 2);
+        EffectUtils.blur(srcAlphaBuf, tmpBuf2, tmpW, tmpH, kernel, size * 2); // horizontal pass
+        EffectUtils.blur(tmpBuf2, tmpBuf1, tmpH, tmpW, kernel, size * 2);// vertical pass
+        //rescale
+        float spread = Math.min(1 / (1 - (0.01f * this.spread)), 255);
+        for (int i = 0; i < tmpBuf1.length; i++) {
+            int val = (int) (((int) tmpBuf1[i] & 0xFF) * spread);
+            tmpBuf1[i] = (val > 255) ? (byte) 0xFF : (byte) val;
+        }
+        // create color image with shadow color and greyscale image as alpha
+        if (dst == null) dst = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+        WritableRaster shadowRaster = dst.getRaster();
+        int red = color.getRed(), green = color.getGreen(), blue = color.getBlue();
+        for (int y = 0; y < h; y++) {
+            int srcY = y + tmpOffY;
+            int offset = srcY * tmpW;
+            int shadowOffset = (srcY - offsetY) * tmpW;
+            for (int x = 0; x < w; x++) {
+                int srcX = x + tmpOffX;
+                int origianlAlphaVal = 255 - ((int) srcAlphaBuf[offset + srcX] & 0xFF);
+                int shadowVal = (int) tmpBuf1[shadowOffset + (srcX - offsetX)] & 0xFF;
+                int alphaVal = Math.min(origianlAlphaVal, shadowVal);
+                lineBuf[x] = ((byte) alphaVal & 0xFF) << 24 | red << 16 | green << 8 | blue;
+            }
+            shadowRaster.setDataElements(0, y, w, 1, lineBuf);
+        }
+        return dst;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/OuterGlowEffect.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.effects;
+
+import org.jdesktop.swingx.designer.paint.Matte;
+
+import javax.swing.UIDefaults;
+import java.awt.Color;
+
+/**
+ * OuterGlowEffect
+ *
+ * @author Created by Jasper Potts (Jun 21, 2007)
+ */
+public class OuterGlowEffect extends DropShadowEffect {
+
+    protected OuterGlowEffect() {
+        distance = 0;
+    }
+
+    public OuterGlowEffect(UIDefaults uiDefaults) {
+        color = new Matte(new Color(255, 255, 211), uiDefaults);
+    }
+
+    /**
+     * Get the display name for this effect
+     *
+     * @return The user displayable name
+     */
+    public String getDisplayName() {
+        return "Outer Glow";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/ShadowEffect.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.effects;
+
+import org.jdesktop.swingx.designer.BlendingMode;
+import org.jdesktop.swingx.designer.paint.Matte;
+
+import javax.swing.UIDefaults;
+import java.awt.Color;
+
+/**
+ * ShadowEffect - base class with all the standard properties for shadow effects
+ *
+ * @author Created by Jasper Potts (Jun 18, 2007)
+ */
+public abstract class ShadowEffect extends Effect {
+    protected Matte color;
+    protected BlendingMode blendingMode = BlendingMode.NORMAL;
+    /** Opacity a float 0-1 for percentage */
+    protected float opacity = 0.75f;
+    /** Angle in degrees between 0-360 */
+    protected int angle = 135;
+    /** Distance in pixels */
+    protected int distance = 5;
+    /** The shadow spread between 0-100 % */
+    protected int spread = 0;
+    /** Size in pixels */
+    protected int size = 5;
+
+    protected ShadowEffect() {}
+
+    ;
+
+    public ShadowEffect(UIDefaults uiDefaults) {
+        color = new Matte(Color.BLACK, uiDefaults);
+    }
+
+    // =================================================================================================================
+    // Bean methods
+
+    public Matte getColor() {
+        return color;
+    }
+
+    public void setColor(Matte color) {
+        Matte old = getColor();
+        this.color = color;
+        firePropertyChange("color", old, getColor());
+    }
+
+    public BlendingMode getBlendingMode() {
+        return blendingMode;
+    }
+
+    public void setBlendingMode(BlendingMode blendingMode) {
+        BlendingMode old = getBlendingMode();
+        this.blendingMode = blendingMode;
+        firePropertyChange("blendingMode", old, getBlendingMode());
+    }
+
+    public float getOpacity() {
+        return opacity;
+    }
+
+    public void setOpacity(float opacity) {
+        float old = getOpacity();
+        this.opacity = opacity;
+        firePropertyChange("opacity", old, getOpacity());
+    }
+
+    public int getAngle() {
+        return angle;
+    }
+
+    public void setAngle(int angle) {
+        int old = getAngle();
+        this.angle = angle;
+        firePropertyChange("angle", old, getAngle());
+    }
+
+    public int getDistance() {
+        return distance;
+    }
+
+    public void setDistance(int distance) {
+        int old = getDistance();
+        this.distance = distance;
+        firePropertyChange("distance", old, getDistance());
+    }
+
+    public int getSpread() {
+        return spread;
+    }
+
+    public void setSpread(int spread) {
+        int old = getSpread();
+        this.spread = spread;
+        firePropertyChange("spread", old, getSpread());
+    }
+
+    public int getSize() {
+        return size;
+    }
+
+    public void setSize(int size) {
+        int old = getSize();
+        this.size = size;
+        firePropertyChange("size", old, getSize());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/font/Typeface.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,484 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.font;
+
+import java.awt.Font;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import javax.swing.UIDefaults;
+import org.jdesktop.beans.AbstractBean;
+import org.jdesktop.swingx.designer.utils.HasUIDefaults;
+import org.jibx.runtime.IUnmarshallingContext;
+
+/**
+ * I don't think the name is technically correct (ie: a typeface is not a font),
+ * but I wanted something besides "font" so, here it is.
+ *
+ * This is a mutable font, much like Matte is a mutable color. Also like Matte,
+ * Typeface can be derived.
+ *
+ * @author rbair
+ */
+public class Typeface extends AbstractBean {
+    //specifies whether to derive bold, or italic.
+    //Default means, get my value from my parent.
+    //Off means, leave bold/italic off.
+    //On means, make bold/italic on.
+    public enum DeriveStyle { Default, Off, On }
+
+    private String uiDefaultParentName;
+    /** This is a local UIDefaults that contains all the UIDefaults in the Model. */
+    private transient UIDefaults uiDefaults = new UIDefaults();
+    private PropertyChangeListener uiDefaultsChangeListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            if (uiDefaultParentName != null && uiDefaultParentName.equals(evt.getPropertyName())) {
+                updateFontFromOffsets();
+            }
+        }
+    };
+
+    /**
+     * The name of the font. If uiDefaultParentName is specified, then this name
+     * will be set to be equal to the name of the parent font.
+     */
+    private String name;
+    /**
+     * The size of the font. If uiDefaultParentName is set, then this value is
+     * updated to reflect the size of the parent font * the sizeOffset.
+     */
+    private int size;
+
+    //this field is not publically accessible. Rather, it is updated based on
+    //"bold" and "italic" as necessary.
+    private int style = Font.PLAIN;
+    private DeriveStyle bold = DeriveStyle.Default;
+    private DeriveStyle italic = DeriveStyle.Default;
+
+    /**
+     * The size offset. Only used if uiDefaultParentName is specified. This offset
+     * will be multiplied with the parent font's size to determine the size of this
+     * typeface. The offset is specified as a percentage, either positive or negative.
+     *
+     * The reason a percentage was used, was so that things would look correctly
+     * when scaled, such as with high DPI situations.
+     */
+    private float sizeOffset;
+
+    /**
+     * Create a new Typeface. Note that, without specifying the uiDefaults,
+     * you cannot have font derivation. Thus, this constructor should never
+     * be called, except for the XML binding stuff.
+     */
+    public Typeface() { }
+
+    /**
+     * Creates a new Typeface.
+     *
+     * @param f The font from which to get the font name, size, and style to use
+     * to initialize this typeface. Note that this font is not used as a parent
+     * font for derivation purposes. Rather, it is used as a source from which to
+     * copy initial settings.
+     *
+     * @param uiDefaults The uiDefaults to use for font derivation purposes.
+     * When the uiDefaultParentName is specified, then this Typeface will inspect
+     * the given UIDefaults for that parent <em>font</em>. Note that the UIDefaults
+     * should be populated with a font, and not with a typeface.
+     */
+    public Typeface(Font f, UIDefaults uiDefaults) {
+        if (f != null) {
+            this.name = f.getName();
+            this.size = f.getSize();
+            this.style = f.getStyle();
+        }
+        setUiDefaults(uiDefaults);
+    }
+
+    // =================================================================================================================
+    // JIBX Methods
+
+    /**
+     * Called by JIBX after all fields have been set
+     *
+     * @param context The JIBX Unmarshalling Context
+     */
+    protected void postSet(IUnmarshallingContext context) {
+        // walk up till we get synth model
+        for (int i = 0; i < context.getStackDepth(); i++) {
+            if (context.getStackObject(i) instanceof HasUIDefaults) {
+                UIDefaults uiDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults();
+                if (uiDefaults != null) {
+                    setUiDefaults(uiDefaults);
+                    break;
+                }
+            }
+        }
+    }
+
+    // =================================================================================================================
+    // Typeface methods
+
+    /**
+     * Is the Typeface an absolute Font not derived from a parent ui default
+     *
+     * @return <code>true</code> if this is a absolute not uidefault derived font
+     */
+    public boolean isAbsolute() {
+        return uiDefaultParentName == null;
+    }
+
+    /**
+     * Set all properties of this Typeface to be the same as <code>src</code> and fire all the change events
+     *
+     * @param src the Typeface to copy properties from
+     */
+    public void copy(Typeface src) {
+        // keep old values
+        Font oldFont = getFont();
+        String oldParentName = uiDefaultParentName;
+        String oldName = name;
+        int oldSize = size;
+        float oldSizeOffset = sizeOffset;
+        DeriveStyle oldBold = bold, oldItalic = italic;
+
+        style = src.style;
+
+        //Note, I don't just call the setters here, because I want to make
+        //sure the "font" PCE is only fired once, at the end.
+        name = src.name;
+        firePropertyChange("name", oldName, name);
+        size = src.size;
+        firePropertyChange("size", oldSize, size);
+        bold = src.bold;
+        firePropertyChange("bold", oldBold, bold);
+        italic = src.italic;
+        firePropertyChange("italic", oldItalic, italic);
+        sizeOffset = src.sizeOffset;
+        firePropertyChange("sizeOffset", oldSizeOffset, sizeOffset);
+        uiDefaultParentName = src.uiDefaultParentName;
+        firePropertyChange("uiDefaultParentName", oldParentName, uiDefaultParentName);
+        setUiDefaults(src.uiDefaults);
+        firePropertyChange("font", oldFont, getFont());
+    }
+
+    // =================================================================================================================
+    // Bean Methods
+
+    /**
+     * Get the local UIDefaults that contains all the UIDefaults in the Model.
+     *
+     * @return The UIDefaults for the model that contains this Typeface, can be null if this Typeface is not part of a bigger
+     *         model
+     */
+    public UIDefaults getUiDefaults() {
+        return uiDefaults;
+    }
+
+    /**
+     * Set the local UIDefaults that contains all the UIDefaults in the Model.
+     *
+     * @param uiDefaults The UIDefaults for the model that contains this Typeface, can be null if this Typeface is not part of
+     *                   a bigger model
+     */
+    public void setUiDefaults(UIDefaults uiDefaults) {
+        if (uiDefaults != this.uiDefaults) {
+            UIDefaults old = getUiDefaults();
+            if (old != null) old.removePropertyChangeListener(uiDefaultsChangeListener);
+            this.uiDefaults = uiDefaults;
+            if (uiDefaults != null) this.uiDefaults.addPropertyChangeListener(uiDefaultsChangeListener);
+            firePropertyChange("uiDefaults", old, getUiDefaults());
+        }
+    }
+
+    /**
+     * Get the name if the uidefault font that is the parent that this Typeface is derived from. If null then this is a
+     * absolute font.
+     *
+     * @return Parent font ui default name
+     */
+    public String getUiDefaultParentName() {
+        return uiDefaultParentName;
+    }
+
+    /**
+     * Set the name if the uidefault font that is the parent that this Typeface is derived from. If null then this is a
+     * absolute font.
+     *
+     * @param uiDefaultParentName Parent font ui default name
+     */
+    public void setUiDefaultParentName(String uiDefaultParentName) {
+        String old = getUiDefaultParentName();
+        this.uiDefaultParentName = uiDefaultParentName;
+        firePropertyChange("uiDefaultParentName", old, getUiDefaultParentName());
+        if (isAbsolute()) {
+            // reset offsets
+            float oldSizeOffset = sizeOffset;
+            sizeOffset = 0;
+            firePropertyChange("sizeOffset", oldSizeOffset, sizeOffset);
+        } else {
+            updateFontFromOffsets();
+        }
+    }
+
+    /**
+     * @return Gets the name of the font
+     */
+    public final String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the name of the font. This method call <em>only</em> works if
+     * <code>isAbsolute</code> returns true. Otherwise, it is ignored.
+     * @param name the name of the font
+     */
+    public void setName(String name) {
+        if (isAbsolute()) {
+            String old = this.name;
+            Font oldF = getFont();
+            this.name = name;
+            firePropertyChange("name", old, this.name);
+            firePropertyChange("font", oldF, getFont());
+        }
+    }
+
+    /**
+     * @return gets the size of the font.
+     */
+    public final int getSize() {
+        return size;
+    }
+
+    /**
+     * <p>Sets the size of the font. THis method call will work whether
+     * <code>isAbsolute</code> returns true or false. If this is an absolute
+     * typeface, then the size is set directly. Otherwise, if this is a
+     * derived typeface, then the sizeOffset will be updated to reflect the
+     * proper offset based on this size, and the size of the parent font.</p>
+     *
+     * <p>For example, if the parent font's size was 12, and the sizeOffset was
+     * -2 (thus yielding as size on this typeface of 10), and you call setSize
+     * passing in "14" as the size, then the sizeOffset will be updated to be
+     * equal to "2".</p>
+     *
+     * @param size the new size for this typeface.
+     */
+    public void setSize(int size) {
+        int old = this.size;
+        Font oldF = getFont();
+        this.size = size;
+        firePropertyChange("size", old, this.size);
+        firePropertyChange("font", oldF, getFont());
+        updateOffsetsFromFont();
+    }
+
+    /**
+     * @return the size offset
+     */
+    public final float getSizeOffset() {
+        return sizeOffset;
+    }
+
+    /**
+     * Sets the percentage by which the size of this font should be different
+     * from its parent font. This property is kept in synch with the size property.
+     *
+     * @param sizeOffset the size offset. May be any float. The value "1" means,
+     * 100%. -1 means "-100%". 2 means "200%", and so on.
+     */
+    public void setSizeOffset(float sizeOffset) {
+        float old = this.sizeOffset;
+        Font oldF = getFont();
+        this.sizeOffset = sizeOffset;
+        firePropertyChange("sizeOffset", old, this.sizeOffset);
+        firePropertyChange("font", oldF, getFont());
+        updateFontFromOffsets();
+    }
+
+    public DeriveStyle getBold() {
+        return bold;
+    }
+
+    public void setBold(DeriveStyle bold) {
+        DeriveStyle old = this.bold;
+        this.bold = bold == null ? DeriveStyle.Default : bold;
+        firePropertyChange("bold", old, this.bold);
+        updateFontFromOffsets();
+    }
+
+    public DeriveStyle getItalic() {
+        return italic;
+    }
+
+    public void setItalic(DeriveStyle italic) {
+        DeriveStyle old = this.italic;
+        this.italic = italic == null ? DeriveStyle.Default : italic;
+        firePropertyChange("italic", old, this.italic);
+        updateFontFromOffsets();
+    }
+
+    /**
+     * @return whether or not the font represented by this typeface is supported
+     * on this operating system platform.
+     */
+    public boolean isFontSupported() {
+        return true;//Font.getFont(name) != null;
+    }
+
+    /**
+     * @return Gets the font associated with this Typeface. If font derivation is
+     * being used, then the Font returned is the result of that derivation.
+     */
+    public Font getFont() {
+        return new Font(name, style, size);
+    }
+
+    /**
+     * Sets the font from which this Typeface should extract the font name, style,
+     * and size. If font derivation is being used, then the font name will be ignored,
+     * the style will be used (and always override the parent font), and the size
+     * will be set and the sizeOffset updated appropriately.
+     *
+     * @param f the Font
+     */
+    public void setFont(Font f) {
+        Font oldFont = getFont();
+        String oldName = name;
+        int oldSize = size;
+        DeriveStyle oldBold = bold, oldItalic = italic;
+        name = f.getName();
+        size = f.getSize();
+        style = f.getStyle();
+        updateOffsetsFromFont();
+        firePropertyChange("name", oldName, name);
+        firePropertyChange("size", oldSize, size);
+        firePropertyChange("bold", oldBold, bold);
+        firePropertyChange("italic", oldItalic, italic);
+        firePropertyChange("font", oldFont, getFont());
+    }
+
+    /**
+     * @inheritDoc
+     *
+     * @return A formatted string representing this Typeface. This String should
+     * not be considered public API, as it may change in a future release.
+     */
+    @Override public String toString() {
+        Font f = getFont();
+        String  strStyle;
+        if (f.isBold()) {
+            strStyle = f.isItalic() ? "bolditalic" : "bold";
+        } else {
+            strStyle = f.isItalic() ? "italic" : "plain";
+        }
+
+        if (isAbsolute()) {
+            return Typeface.class.getName() + "[name=" + name + ", size=" + size + ", style=" + strStyle + "]";
+        } else {
+            return Typeface.class.getName() + "[base=" + uiDefaultParentName +
+                    ", name=" + name + ", size=" + size + "(offset " + sizeOffset + ")" +
+                    ", style=" + strStyle + "]";
+        }
+    }
+
+    @Override public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Typeface typeface = (Typeface) o;
+        if (!typeface.name.equals(name)) return false;
+        if (size != typeface.size) return false;
+        if (bold != typeface.bold) return false;
+        if (italic != typeface.italic) return false;
+        if (sizeOffset != typeface.sizeOffset) return false;
+        if (uiDefaultParentName != null ? !uiDefaultParentName.equals(typeface.uiDefaultParentName) :
+                typeface.uiDefaultParentName != null) return false;
+        return true;
+    }
+
+    @Override public int hashCode() {
+        int result;
+        result = name.hashCode();
+        result = 31 * result + size;
+        result = 31 * result + bold.ordinal();
+        result = 31 * result + italic.ordinal();
+        result = 31 * result + (int)(sizeOffset*100);
+        result = 31 * result + (uiDefaultParentName != null ? uiDefaultParentName.hashCode() : 0);
+        return result;
+    }
+
+    @Override public Typeface clone() {
+        Typeface clone = new Typeface();
+        clone.name = name;
+        clone.size = size;
+        clone.style = style;
+        clone.bold = bold;
+        clone.italic = italic;
+        clone.sizeOffset = sizeOffset;
+        clone.uiDefaultParentName = uiDefaultParentName;
+        clone.setUiDefaults(uiDefaults);
+        return clone;
+    }
+
+    // =================================================================================================================
+    // Private Helper Methods
+
+    private void updateOffsetsFromFont() {
+        if (!isAbsolute()) {
+            float oldSizeOffset = sizeOffset;
+            Font parentFont = uiDefaults.getFont(uiDefaultParentName);
+            if (parentFont != null) {
+                float s = size;
+                float p = parentFont.getSize();
+                sizeOffset = (s/p) - 1f;
+                firePropertyChange("sizeOffset", oldSizeOffset, sizeOffset);
+            }
+        }
+    }
+
+    private void updateFontFromOffsets() {
+        if (!isAbsolute()) {
+            Font oldFont = getFont();
+            // get parent font data
+            Font parentFont = uiDefaults.getFont(uiDefaultParentName);
+            if (parentFont != null) {
+                String oldName = name;
+                int oldSize = size;
+
+                name = parentFont.getName();
+                size = Math.round(parentFont.getSize() * (1f + sizeOffset));
+
+                boolean isBold = (bold == DeriveStyle.Default && parentFont.isBold()) || bold == DeriveStyle.On;
+                boolean isItalic = (italic == DeriveStyle.Default && parentFont.isItalic()) || italic == DeriveStyle.On;
+                style = Font.PLAIN;
+                if (isBold) style = style | Font.BOLD;
+                if (isItalic) style = style | Font.ITALIC;
+
+                // update fire events
+                firePropertyChange("name", oldName, name);
+                firePropertyChange("size", oldSize, size);
+                firePropertyChange("font", oldFont, getFont());
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/CanvasMapper.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.jibxhelpers;
+
+import org.jdesktop.swingx.designer.Canvas;
+import org.jdesktop.swingx.designer.utils.HasPath;
+import org.jdesktop.swingx.designer.utils.HasResources;
+import org.jdesktop.swingx.designer.utils.HasUIDefaults;
+import org.jibx.runtime.BindingDirectory;
+import org.jibx.runtime.IBindingFactory;
+import org.jibx.runtime.IMarshallable;
+import org.jibx.runtime.IMarshaller;
+import org.jibx.runtime.IMarshallingContext;
+import org.jibx.runtime.IUnmarshaller;
+import org.jibx.runtime.IUnmarshallingContext;
+import org.jibx.runtime.JiBXException;
+import org.jibx.runtime.impl.MarshallingContext;
+import org.jibx.runtime.impl.UnmarshallingContext;
+
+import javax.swing.UIDefaults;
+import java.io.File;
+
+/**
+ * CanvasMapper
+ *
+ * @author Created by Jasper Potts (Jun 12, 2007)
+ */
+public class CanvasMapper implements IMarshaller, IUnmarshaller {
+    private static final String ELEMENT_NAME = "canvas";
+    private IBindingFactory bindingFactory;
+
+
+    public CanvasMapper() {
+        try {
+            bindingFactory = BindingDirectory.getFactory(Canvas.class);
+        } catch (JiBXException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public boolean isExtension(int i) {
+        return false;
+    }
+
+    public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        return iUnmarshallingContext.isAt(null, ELEMENT_NAME);
+    }
+
+    public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
+        if (!(object instanceof Canvas)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else if (!(iMarshallingContext instanceof MarshallingContext)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else {
+            // version found, create marshaller for the associated binding
+//            IBindingFactory bindingFactory = BindingDirectory.getFactory(object.getClass());
+            MarshallingContext context = (MarshallingContext) bindingFactory.createMarshallingContext();
+            // configure marshaller for writing document
+            context.setXmlWriter(iMarshallingContext.getXmlWriter());
+            // output object as document
+            ((IMarshallable) object).marshal(context);
+        }
+    }
+
+    public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        // make sure we're at the appropriate start tag
+        UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
+        if (!ctx.isAt(null, ELEMENT_NAME)) {
+            ctx.throwStartTagNameError(null, ELEMENT_NAME);
+        }
+
+//        IBindingFactory bindingFactory = BindingDirectory.getFactory(Canvas.class);
+        UnmarshallingContext uctx = (UnmarshallingContext) bindingFactory.createUnmarshallingContext();
+        uctx.setFromContext(ctx);
+        // get the uiDefaults from SynthModel and set them as user context
+        UIDefaults uiDefaults = ((HasUIDefaults) ctx.getStackObject(ctx.getStackDepth() - 1)).getUiDefaults();
+        uctx.setUserContext(uiDefaults);
+        // get has resources
+        HasResources hasResources = (HasResources) ctx.getStackObject(ctx.getStackDepth() - 1);
+        // get path
+        HasPath hasPath = null;
+        for (int i = 0; i < ctx.getStackDepth(); i++) {
+            if (ctx.getStackObject(i) instanceof HasPath) {
+                hasPath = (HasPath) ctx.getStackObject(i);
+                break;
+            }
+        }
+        // Unmarshal the Canvas
+        Canvas canvas = (Canvas) uctx.unmarshalElement();
+        // set canvas's ui defaults
+        canvas.setUiDefaults(uiDefaults);
+        // get canvas path
+        String canvasPath = hasPath.getPath();
+        // calc and set resources
+        canvas.setResourcesDir(new File(hasResources.getResourcesDir(), canvasPath));
+        canvas.setTemplatesDir(new File(hasResources.getTemplatesDir(), canvasPath));
+        canvas.setImagesDir(new File(hasResources.getImagesDir(), canvasPath));
+        // return canvas
+        return canvas;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/ColorMapper.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.jibxhelpers;
+
+import org.jibx.runtime.IMarshaller;
+import org.jibx.runtime.IMarshallingContext;
+import org.jibx.runtime.IUnmarshaller;
+import org.jibx.runtime.IUnmarshallingContext;
+import org.jibx.runtime.JiBXException;
+import org.jibx.runtime.impl.MarshallingContext;
+import org.jibx.runtime.impl.UnmarshallingContext;
+
+import java.awt.Color;
+
+/**
+ * ColorMapper
+ *
+ * @author Created by Jasper Potts (Jun 8, 2007)
+ */
+public class ColorMapper implements IMarshaller, IUnmarshaller {
+    private static final String ELEMENT_NAME = "color";
+    private static final String RED_NAME = "red";
+    private static final String GREEN_NAME = "green";
+    private static final String BLUE_NAME = "blue";
+    private static final String ALPHA_NAME = "alpha";
+
+    public boolean isExtension(int i) {
+        return false;
+    }
+
+    public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        return iUnmarshallingContext.isAt(null, ELEMENT_NAME);
+    }
+
+    public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
+        if (!(object instanceof Color)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else if (!(iMarshallingContext instanceof MarshallingContext)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else {
+            MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
+            Color color = (Color) object;
+            ctx.startTagAttributes(0, ELEMENT_NAME).
+                    attribute(0, RED_NAME, color.getRed()).
+                    attribute(0, GREEN_NAME, color.getGreen()).
+                    attribute(0, BLUE_NAME, color.getBlue()).
+                    attribute(0, ALPHA_NAME, color.getAlpha()).
+                    closeStartEmpty();
+        }
+    }
+
+    public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        // make sure we're at the appropriate start tag
+        UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
+        if (!ctx.isAt(null, ELEMENT_NAME)) {
+            ctx.throwStartTagNameError(null, ELEMENT_NAME);
+        }
+        // get values
+        int red = ctx.attributeInt(null, RED_NAME, 0);
+        int green = ctx.attributeInt(null, GREEN_NAME, 0);
+        int blue = ctx.attributeInt(null, BLUE_NAME, 0);
+        int alpha = ctx.attributeInt(null, ALPHA_NAME, 0);
+        ctx.parsePastEndTag(null, ELEMENT_NAME);
+        // create
+        return new Color(red, green, blue, alpha);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/DimensionMapper.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.jibxhelpers;
+
+import org.jibx.runtime.IAliasable;
+import org.jibx.runtime.IMarshaller;
+import org.jibx.runtime.IMarshallingContext;
+import org.jibx.runtime.IUnmarshaller;
+import org.jibx.runtime.IUnmarshallingContext;
+import org.jibx.runtime.JiBXException;
+import org.jibx.runtime.impl.MarshallingContext;
+import org.jibx.runtime.impl.UnmarshallingContext;
+
+import java.awt.Dimension;
+
+/**
+ * DimensionMapper
+ *
+ * @author Created by Jasper Potts (Jun 12, 2007)
+ */
+public class DimensionMapper implements IMarshaller, IUnmarshaller, IAliasable {
+    private static final String ELEMENT_NAME = "dimension";
+    private static final String WIDTH_NAME = "width";
+    private static final String HEIGHT_NAME = "height";
+
+    private String uri;
+    private int index;
+    private String name;
+
+    public DimensionMapper() {
+        uri = null;
+        index = 0;
+        name = ELEMENT_NAME;
+    }
+
+    public DimensionMapper(String uri, int index, String name) {
+        this.uri = uri;
+        this.index = index;
+        this.name = name;
+    }
+
+    public boolean isExtension(int i) {
+        return false;
+    }
+
+    public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        return iUnmarshallingContext.isAt(uri, ELEMENT_NAME);
+    }
+
+    public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
+        if (!(object instanceof Dimension)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else if (!(iMarshallingContext instanceof MarshallingContext)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else {
+            MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
+            Dimension dimension = (Dimension) object;
+            ctx.startTagAttributes(index, name).
+                    attribute(index, WIDTH_NAME, dimension.width).
+                    attribute(index, HEIGHT_NAME, dimension.height).
+                    closeStartEmpty();
+        }
+    }
+
+    public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        // make sure we're at the appropriate start tag
+        UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
+        if (!ctx.isAt(uri, name)) {
+            ctx.throwStartTagNameError(uri, name);
+        }
+        // get values
+        int width = ctx.attributeInt(uri, WIDTH_NAME, index);
+        int height = ctx.attributeInt(uri, HEIGHT_NAME, index);
+        // state finished parsing
+        ctx.parsePastEndTag(uri, name);
+        // create
+        return new Dimension(width, height);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/InsetsMapper.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.jibxhelpers;
+
+import org.jibx.runtime.IAliasable;
+import org.jibx.runtime.IMarshaller;
+import org.jibx.runtime.IMarshallingContext;
+import org.jibx.runtime.IUnmarshaller;
+import org.jibx.runtime.IUnmarshallingContext;
+import org.jibx.runtime.JiBXException;
+import org.jibx.runtime.impl.MarshallingContext;
+import org.jibx.runtime.impl.UnmarshallingContext;
+
+import java.awt.Insets;
+
+/**
+ * InsetsMapper
+ *
+ * @author Created by Jasper Potts (Jun 8, 2007)
+ */
+public class InsetsMapper implements IMarshaller, IUnmarshaller, IAliasable {
+    private static final String ELEMENT_NAME = "insets";
+    private static final String TOP_NAME = "top";
+    private static final String BOTTOM_NAME = "bottom";
+    private static final String LEFT_NAME = "left";
+    private static final String RIGHT_NAME = "right";
+
+    private String uri;
+    private int index;
+    private String name;
+
+    public InsetsMapper() {
+        uri = null;
+        index = 0;
+        name = ELEMENT_NAME;
+    }
+
+    public InsetsMapper(String uri, int index, String name) {
+        this.uri = uri;
+        this.index = index;
+        this.name = name;
+//        System.out.println("InsetsMapper.CONSTRCUTED with uri="+uri+" index="+index+" name="+name);
+    }
+
+    public boolean isExtension(int i) {
+        return false;
+    }
+
+    public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        return iUnmarshallingContext.isAt(uri, ELEMENT_NAME);
+    }
+
+    public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
+        if (!(object instanceof Insets)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else if (!(iMarshallingContext instanceof MarshallingContext)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else {
+//            System.out.println("InsetsMapper.marshal name="+name);
+            MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
+            Insets insets = (Insets) object;
+            ctx.startTagAttributes(index, name).
+                    attribute(index, TOP_NAME, insets.top).
+                    attribute(index, BOTTOM_NAME, insets.bottom).
+                    attribute(index, LEFT_NAME, insets.left).
+                    attribute(index, RIGHT_NAME, insets.right).
+                    closeStartEmpty();
+        }
+    }
+
+    public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        // make sure we're at the appropriate start tag
+        UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
+        if (!ctx.isAt(uri, name)) {
+//            System.out.println("InsetsMapper.unmarshal name="+name+" uri="+uri+" currentNode="+ctx.getName());
+            ctx.throwStartTagNameError(uri, name);
+        } else {
+//        System.out.println("InsetsMapper.unmarshal name="+name+" uri="+uri+" currentNode="+ctx.getName());
+        }
+        // get values
+        int top = ctx.attributeInt(uri, TOP_NAME, index);
+        int bottom = ctx.attributeInt(uri, BOTTOM_NAME, index);
+        int left = ctx.attributeInt(uri, LEFT_NAME, index);
+        int right = ctx.attributeInt(uri, RIGHT_NAME, index);
+        // create new hashmap if needed
+        Insets insets = (Insets) object;
+        if (insets == null) {
+            insets = new Insets(top, left, bottom, right);
+        } else {
+            insets.set(top, left, bottom, right);
+        }
+        ctx.parsePastEndTag(uri, name);
+        return insets;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/AbstractGradient.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,280 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.paint;
+
+import java.awt.Color;
+import java.awt.MultipleGradientPaint.CycleMethod;
+import java.awt.Paint;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+/** @author rbair */
+public abstract class AbstractGradient extends PaintModel {
+    private final Comparator<GradientStop> sorter = new Comparator<GradientStop>() {
+        public int compare(GradientStop s1, GradientStop s2) {
+            //since a float value may be -.001 or .001, and since casting
+            //this to an int will round off to 0, I have to do a more direct
+            //comparison
+            float v = s1.getPosition() - s2.getPosition();
+
+            if (v < 0) return -1;
+            else if (v == 0) return 0;
+            else return 1;
+        }
+    };
+    private PropertyChangeListener stopListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            if (evt.getPropertyName().equals("position")) {
+                if (stops.contains((GradientStop) evt.getSource())) {
+                    resortModel(true);
+                } else {
+                    System.err.println("[WARNING] The position of an orphaned stop was changed.");
+                }
+            } else {
+                firePropertyChange("paint", null, getPaint());
+            }
+        }
+    };
+
+    private List<GradientStop> stops = new ArrayList<GradientStop>();
+    private List<GradientStop> unmodifiable;
+    private CycleMethod cycleMethod;
+
+    protected AbstractGradient() {
+        unmodifiable = Collections.unmodifiableList(stops);
+        cycleMethod = CycleMethod.NO_CYCLE;
+        setStops(new GradientStop(0, new Matte(Color.BLUE, null)),
+                new GradientStop(1, new Matte(Color.WHITE, null)));
+    }
+
+    /**
+     * Copy stops and cycleMethod from src to dst
+     *
+     * @param dst The gradient to update to same stops and cycle method as this gradient
+     */
+    protected void copyTo(AbstractGradient dst) {
+        dst.stops.clear();
+        List<GradientStop> stops = new ArrayList<GradientStop>();
+        for (GradientStop stop : this.stops) {
+            stops.add(stop.clone());
+        }
+        dst.setStops(stops);
+        dst.cycleMethod = this.cycleMethod;
+    }
+
+
+    public PaintControlType getPaintControlType() {
+        return PaintControlType.control_line;
+    }
+
+    public void setCycleMethod(CycleMethod method) {
+        CycleMethod old = cycleMethod;
+        Paint oldp = getPaint();
+        cycleMethod = method == null ? CycleMethod.NO_CYCLE : method;
+        firePropertyChange("cycleMethod", old, cycleMethod);
+        firePropertyChange("paint", oldp, getPaint());
+    }
+
+    public final CycleMethod getCycleMethod() {
+        return cycleMethod;
+    }
+
+    public void setStops(GradientStop... stops) {
+        if (stops == null || stops.length < 1) {
+            throw new IllegalArgumentException("Must have more than one stop");
+        }
+        List<GradientStop> old = new ArrayList<GradientStop>(this.stops);
+        for (GradientStop stop : old) {
+            stop.removePropertyChangeListener(stopListener);
+        }
+        Paint oldp = getPaint();
+        this.stops.clear();
+        Collections.addAll(this.stops, stops);
+        for (GradientStop stop : this.stops) {
+            stop.addPropertyChangeListener(stopListener);
+        }
+        resortModel(false);
+        firePropertyChange("stops", old, getStops());
+        firePropertyChange("paint", oldp, getPaint());
+    }
+
+    public final void setStops(List<GradientStop> stops) {
+        setStops(stops == null ? null : stops.toArray(new GradientStop[0]));
+    }
+
+    public final List<GradientStop> getStops() {
+        return unmodifiable;
+    }
+
+    private void resortModel(boolean fireEvent) {
+        Collections.sort(this.stops, sorter);
+        if (fireEvent) {
+            Paint oldp = getPaint();
+            firePropertyChange("stops", null, getStops());
+            firePropertyChange("paint", oldp, getPaint());
+        }
+    }
+
+    //adds a new stop, and interoplates the proper color to use based on
+    //its position
+    public GradientStop addStop(float position) {
+        GradientStop prevStop = null;
+        GradientStop nextStop = null;
+        for (GradientStop stop : stops) {
+            if (stop.getPosition() <= position) {
+                prevStop = stop;
+            } else if (stop.getPosition() >= position) {
+                nextStop = stop;
+            }
+        }
+
+        Matte c = null;
+        if (prevStop != null && nextStop != null) {
+            //interpolate the value of c
+            c = interpolate(prevStop.getColor(), nextStop.getColor(),
+                    position / (nextStop.getPosition() - prevStop.getPosition()));
+        } else if (prevStop != null) {
+            c = prevStop.getColor().clone();
+        } else if (nextStop != null) {
+            c = nextStop.getColor().clone();
+        }
+
+        return addStop(position, c);
+    }
+
+    public GradientStop addStop(float position, Matte color) {
+        GradientStop s = new GradientStop(position, color);
+        s.addPropertyChangeListener(stopListener);
+        List<GradientStop> old = new ArrayList<GradientStop>(stops);
+        Paint oldp = getPaint();
+        stops.add(s);
+        resortModel(false);
+        firePropertyChange("stops", old, getStops());
+        firePropertyChange("paint", oldp, getPaint());
+
+        return s;
+    }
+
+    public GradientStop removeStop(GradientStop s) {
+        List<GradientStop> old = new ArrayList<GradientStop>(stops);
+        Paint oldp = getPaint();
+        stops.remove(s);
+        s.removePropertyChangeListener(stopListener);
+        resortModel(false);
+        firePropertyChange("stops", old, getStops());
+        firePropertyChange("paint", oldp, getPaint());
+        return s;
+    }
+
+    @Override public Paint getPaint() {
+        if (stops.size() == 0) {
+            return null;
+        }
+
+        //there are stops.size() number of main stops. Between each is
+        //a fractional stop. Thus, there are:
+        //stops.size() + stops.size() - 1
+        //number of fractions and colors.
+
+        float[] fractions = new float[stops.size() + stops.size() - 1];
+        Matte[] colors = new Matte[fractions.length];
+
+        //for each stop, create the stop and it's associated fraction
+        int index = 0; // the index into fractions and colors
+        for (int i = 0; i < stops.size(); i++) {
+            GradientStop s = stops.get(i);
+            //copy over the stop's data
+            colors[index] = s.getColor();
+            fractions[index] = s.getPosition();
+
+            //If this isn't the last stop, then add in the fraction
+            if (index < fractions.length - 1) {
+                float f1 = s.getPosition();
+                float f2 = stops.get(i + 1).getPosition();
+
+                index++;
+                fractions[index] = f1 + (f2 - f1) * s.getMidpoint();
+                colors[index] = interpolate(colors[index - 1], stops.get(i + 1).getColor(), .5f);
+            }
+
+            index++;
+        }
+
+        for (int i = 1; i < fractions.length; i++) {
+            //to avoid an error with LinearGradientPaint where two fractions
+            //are identical, bump up the fraction value by a miniscule amount
+            //if it is identical to the previous one
+            //NOTE: The <= is critical because the previous value may already
+            //have been bumped up
+            if (fractions[i] <= fractions[i - 1]) {
+                fractions[i] = fractions[i - 1] + .000001f;
+            }
+        }
+
+        //another boundary condition where multiple stops are all at the end. The
+        //previous loop bumped all but one of these past 1.0, which is bad.
+        //so remove any fractions (and their colors!) that are beyond 1.0
+        int outOfBoundsIndex = -1;
+        for (int i = 0; i < fractions.length; i++) {
+            if (fractions[i] > 1) {
+                outOfBoundsIndex = i;
+                break;
+            }
+        }
+
+        if (outOfBoundsIndex >= 0) {
+            float[] f = fractions;
+            Matte[] c = colors;
+            fractions = new float[outOfBoundsIndex];
+            colors = new Matte[outOfBoundsIndex];
+            System.arraycopy(f, 0, fractions, 0, outOfBoundsIndex);
+            System.arraycopy(c, 0, colors, 0, outOfBoundsIndex);
+        }
+
+        return createPaint(fractions, colors, cycleMethod);
+    }
+
+    protected abstract Paint createPaint(float[] fractions, Matte[] colors, CycleMethod method);
+
+    protected static Matte interpolate(Matte v0, Matte v1, float fraction) {
+        return new Matte(interpolate(v0.getColor(), v1.getColor(), fraction), v0.getUiDefaults());
+    }
+
+    protected static Color interpolate(Color v0, Color v1, float fraction) {
+        int r = v0.getRed() +
+                (int) ((v1.getRed() - v0.getRed()) * fraction + 0.5f);
+        int g = v0.getGreen() +
+                (int) ((v1.getGreen() - v0.getGreen()) * fraction + 0.5f);
+        int b = v0.getBlue() +
+                (int) ((v1.getBlue() - v0.getBlue()) * fraction + 0.5f);
+        int a = v0.getAlpha() +
+                (int) ((v1.getAlpha() - v0.getAlpha()) * fraction + 0.5f);
+        return new Color(r, g, b, a);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Gradient.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.paint;
+
+import java.awt.Color;
+import java.awt.LinearGradientPaint;
+import java.awt.MultipleGradientPaint.CycleMethod;
+import java.awt.Paint;
+
+/**
+ * Represents a GradientPaint or LinearGradientPaint.
+ *
+ * @author rbair
+ */
+public class Gradient extends AbstractGradient implements Cloneable {
+    protected Paint createPaint(float[] fractions, Matte[] mattes, CycleMethod method) {
+        Color[] colors = new Color[mattes.length];
+        for (int i = 0; i < colors.length; i++) {
+            colors[i] = mattes[i].getColor();
+        }
+        return new LinearGradientPaint(0, 0, 1, 0, fractions, colors, method);
+    }
+
+    @Override public Gradient clone() {
+        Gradient gradient = new Gradient();
+        copyTo(gradient);
+        return gradient;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/GradientStop.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.paint;
+
+import org.jdesktop.beans.AbstractBean;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+/** Each stop is defined linearly, at positions between 0 and 1. */
+public final class GradientStop extends AbstractBean implements Cloneable {
+    private float position;
+    private Matte color;
+    private PropertyChangeListener matteListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            firePropertyChange("color", null, color);
+        }
+    };
+
+    /**
+     * The midpoint to the right of the stop. Must be 0 &lt;= midpoint &lt;= 1. The midpoint value of the last Stop is
+     * ignored.
+     */
+    private float midpoint;
+
+    public GradientStop() {}
+
+    public GradientStop(float position, Matte color) {
+        if (color == null) {
+            throw new IllegalArgumentException("Color must not be null");
+        }
+
+        this.position = clamp(0, 1, position);
+        this.color = color;
+        this.midpoint = .5f;
+
+        if (this.color != null) {
+            this.color.addPropertyChangeListener("color", matteListener);
+        }
+    }
+
+
+    public GradientStop clone() {
+        GradientStop clone = new GradientStop(this.position, this.color.clone());
+        clone.midpoint = midpoint;
+        return clone;
+    }
+
+    public final float getPosition() {
+        return position;
+    }
+
+    public final void setPosition(float position) {
+        float old = this.position;
+        this.position = clamp(0, 1, position);
+        firePropertyChange("position", old, this.position);
+    }
+
+    public final Matte getColor() {
+        return color;
+    }
+
+    public final void setColor(Matte c) {
+        if (c == null) throw new IllegalArgumentException("Color must not be null");
+        Matte old = this.color;
+        if (old != null) old.removePropertyChangeListener(matteListener);
+        this.color = c;
+        if (this.color != null) this.color.addPropertyChangeListener(matteListener);
+        firePropertyChange("color", old, c);
+    }
+
+    public final void setOpacity(int opacity) {
+        int old = getOpacity();
+        color.setAlpha(opacity);
+        firePropertyChange("opacity", old, getOpacity());
+    }
+
+    public final int getOpacity() {
+        return color.getAlpha();
+    }
+
+    public final float getMidpoint() {
+        return midpoint;
+    }
+
+    public final void setMidpoint(float midpoint) {
+        float old = this.midpoint;
+        this.midpoint = clamp(0, 1, midpoint);
+        firePropertyChange("midpoint", old, this.midpoint);
+    }
+
+    private float clamp(float lo, float hi, float value) {
+        if (value < lo) {
+            return lo;
+        } else if (value > hi) {
+            return hi;
+        } else {
+            return value;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Matte.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,610 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.paint;
+
+import org.jdesktop.swingx.designer.utils.HasUIDefaults;
+import org.jibx.runtime.IUnmarshallingContext;
+
+import javax.swing.UIDefaults;
+import java.awt.Color;
+import java.awt.Paint;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+/**
+ * Representing a single uniform color. Basically, it represents the java.awt.Color. It can either be absolute or
+ * derived from a UIDefault color.
+ *
+ * @author rbair & jasper potts
+ */
+public class Matte extends PaintModel implements HasUIDefaults {
+    private float[] tmpf1 = new float[3];
+    private float[] tmpf2 = new float[3];
+
+    private int red;
+    private int green;
+    private int blue;
+    private int alpha;
+    private Color cached = null;
+
+    /**
+     * The name of the ui default key to derive this color from.
+     */
+    private String uiDefaultParentName = null;
+    /**
+     * The name of the bean property, or client property, on this component
+     * from which to extract a color used for painting. So for example the color
+     * used in a painter could be the background of the component.
+     */
+    private String componentPropertyName = null;
+    private float hueOffset = 0, saturationOffset = 0, brightnessOffset = 0;
+    private int alphaOffset = 0;
+    /**
+     * When true this color will become a UIResource in the UIManager defaults
+     * table. If false, then it will not be a UIResource. This is sometimes
+     * required, such as with colors installed on renderers.
+     */
+    private boolean uiResource = true;
+
+    /** This is a local UIDefaults that contains all the UIDefaults in the Model. */
+    private transient UIDefaults uiDefaults = new UIDefaults();
+    private PropertyChangeListener uiDefaultsChangeListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            if (uiDefaultParentName != null && uiDefaultParentName.equals(evt.getPropertyName())) {
+                updateARGBFromOffsets();
+            }
+        }
+    };
+
+    // =================================================================================================================
+    // Constructors
+
+    /** propected constructor for JIBX */
+    protected Matte() {}
+
+    public Matte(Color c, UIDefaults uiDefaults) {
+        if (c != null) {
+            this.red = c.getRed();
+            this.green = c.getGreen();
+            this.blue = c.getBlue();
+            this.alpha = c.getAlpha();
+        }
+        setUiDefaults(uiDefaults);
+    }
+
+    // =================================================================================================================
+    // JIBX Methods
+
+    /**
+     * Called by JIBX after all fields have been set
+     *
+     * @param context The JIBX Unmarshalling Context
+     */
+    protected void postSet(IUnmarshallingContext context) {
+        // walk up till we get synth model
+        for (int i = 0; i < context.getStackDepth(); i++) {
+            if (context.getStackObject(i) instanceof HasUIDefaults) {
+                UIDefaults uiDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults();
+                if (uiDefaults != null) {
+                    setUiDefaults(uiDefaults);
+                    break;
+                }
+            }
+        }
+    }
+
+    // =================================================================================================================
+    // Matte methods
+
+    /**
+     * Is the matte an absolute color ot derived from a parent ui default
+     *
+     * @return <code>true</code> if this is a absolute not uidefault derived color
+     */
+    public boolean isAbsolute() {
+        return uiDefaultParentName == null;
+    }
+
+    /**
+     * Set all properties of this matte to be the same as <code>srcMatte</code> and fire all the change events
+     *
+     * @param srcMatte the matte to copy properties from
+     */
+    public void copy(Matte srcMatte) {
+        // keep old values
+        Color oldColor = getColor();
+        String oldParentName = uiDefaultParentName;
+        String oldComponentPropertyName = componentPropertyName;
+        boolean oldUiResource = uiResource;
+        int oldR = red, oldG = green, oldB = blue, oldA = alpha;
+        float oldH = hueOffset, oldS = saturationOffset, oldBr = brightnessOffset;
+        // set properties
+        if (uiResource != srcMatte.uiResource) {
+            uiResource = srcMatte.uiResource;
+            firePropertyChange("uiResource", oldUiResource, isUiResource());
+        }
+        if (red != srcMatte.red) {
+            red = srcMatte.red;
+            firePropertyChange("red", oldR, getRed());
+        }
+        if (green != srcMatte.green) {
+            green = srcMatte.green;
+            firePropertyChange("green", oldG, getGreen());
+        }
+        if (blue != srcMatte.blue) {
+            blue = srcMatte.blue;
+            firePropertyChange("blue", oldB, getBlue());
+        }
+        if (alpha != srcMatte.alpha) {
+            alpha = srcMatte.alpha;
+            firePropertyChange("alpha", oldA, getAlpha());
+        }
+        if (hueOffset != srcMatte.hueOffset) {
+            hueOffset = srcMatte.hueOffset;
+            firePropertyChange("hueOffset", oldH, getHueOffset());
+        }
+        if (saturationOffset != srcMatte.saturationOffset) {
+            saturationOffset = srcMatte.saturationOffset;
+            firePropertyChange("saturationOffset", oldS, getSaturationOffset());
+        }
+        if (brightnessOffset != srcMatte.brightnessOffset) {
+            brightnessOffset = srcMatte.brightnessOffset;
+            firePropertyChange("brightnessOffset", oldBr, getBrightnessOffset());
+        }
+        if (alphaOffset != srcMatte.alphaOffset) {
+            alphaOffset = srcMatte.alphaOffset;
+            firePropertyChange("alphaOffset", oldA, getAlphaOffset());
+        }
+        if (uiDefaultParentName != srcMatte.uiDefaultParentName) {
+            uiDefaultParentName = srcMatte.uiDefaultParentName;
+            firePropertyChange("uiDefaultParentName", oldParentName, getUiDefaultParentName());
+        }
+        if (componentPropertyName != srcMatte.componentPropertyName) {
+            componentPropertyName = srcMatte.componentPropertyName;
+            firePropertyChange("componentPropertyName", oldComponentPropertyName, getComponentPropertyName());
+        }
+        if (uiDefaults != srcMatte.uiDefaults) {
+            setUiDefaults(srcMatte.uiDefaults);
+        }
+        if (!oldColor.equals(srcMatte.getColor())) {
+            firePropertyChange("paint", oldColor, getColor());
+            firePropertyChange("color", oldColor, getColor());
+            fireHSBChange(oldR, oldG, oldB);
+        }
+    }
+
+    // =================================================================================================================
+    // PaintModel methods
+
+    public PaintControlType getPaintControlType() {
+        return PaintControlType.none;
+    }
+
+    // =================================================================================================================
+    // Bean Methods
+
+    /**
+     * Get the local UIDefaults that contains all the UIDefaults in the Model.
+     *
+     * @return The UIDefaults for the model that contains this Matte, can be null if this Matte is not part of a bigger
+     *         model
+     */
+    public UIDefaults getUiDefaults() {
+        return uiDefaults;
+    }
+
+    /**
+     * Set the local UIDefaults that contains all the UIDefaults in the Model.
+     *
+     * @param uiDefaults The UIDefaults for the model that contains this Matte, can be null if this Matte is not part of
+     *                   a bigger model
+     */
+    public void setUiDefaults(UIDefaults uiDefaults) {
+        if (uiDefaults != this.uiDefaults) {
+            UIDefaults old = getUiDefaults();
+            if (old != null) old.removePropertyChangeListener(uiDefaultsChangeListener);
+            this.uiDefaults = uiDefaults;
+            if (uiDefaults != null) this.uiDefaults.addPropertyChangeListener(uiDefaultsChangeListener);
+            firePropertyChange("uiDefaults", old, getUiDefaults());
+        }
+    }
+
+    /**
+     * Get the name if the uidefault color that is the parent that this matte is derived from. If null then this is a
+     * absolute color.
+     *
+     * @return Parent color ui default name
+     */
+    public String getUiDefaultParentName() {
+        return uiDefaultParentName;
+    }
+
+    /**
+     * Set the name if the uidefault color that is the parent that this matte is derived from. If null then this is a
+     * absolute color.
+     *
+     * @param uiDefaultParentName Parent color ui default name
+     */
+    public void setUiDefaultParentName(String uiDefaultParentName) {
+        String old = getUiDefaultParentName();
+        this.uiDefaultParentName = uiDefaultParentName;
+        firePropertyChange("uiDefaultParentName", old, getUiDefaultParentName());
+        if (isAbsolute()) {
+            // reset offsets
+            float oldH = hueOffset, oldS = saturationOffset, oldB = brightnessOffset;
+            int oldA = alphaOffset;
+            hueOffset = 0;
+            saturationOffset = 0;
+            brightnessOffset = 0;
+            alphaOffset = 0;
+            firePropertyChange("hueOffset", oldH, getHueOffset());
+            firePropertyChange("saturationOffset", oldS, getSaturationOffset());
+            firePropertyChange("brightnessOffset", oldB, getBrightnessOffset());
+            firePropertyChange("alphaOffset", oldA, getAlphaOffset());
+        }
+        updateARGBFromOffsets();
+    }
+
+    /**
+     * Sets the property to use for extracting the color for whatever component
+     * is passed to the painter. Can be a key in client properties. Can be null.
+     * @param name
+     */
+    public void setComponentPropertyName(String name) {
+        String old = componentPropertyName;
+        firePropertyChange("componentPropertyName", old, componentPropertyName = name);
+    }
+
+    /**
+     * Gets the name of the bean property, or client property, on this component
+     * from which to extract a color used for painting. So for example the color
+     * used in a painter could be the background of the component.
+     *
+     * @return
+     */
+    public String getComponentPropertyName() {
+        return componentPropertyName;
+    }
+
+    /**
+     * Sets whether this color should be represented as a UIResource in UIDefaults
+     * @param b true if the color should be a ui resource
+     */
+    public void setUiResource(boolean b) {
+        boolean old = uiResource;
+        firePropertyChange("uiResource", old, uiResource = b);
+    }
+
+    /**
+     * When false this color will become a non-UIResource in the UIManager defaults
+     * table. This is sometimes required to force swing to use the given color,
+     * such as with renderers.
+     * @return false if the color should not be a uiresource
+     */
+    public boolean isUiResource() {
+        return uiResource;
+    }
+
+    public float getHueOffset() {
+        return hueOffset;
+    }
+
+    public void setHueOffset(float hueOffset) {
+        float old = getHueOffset();
+        this.hueOffset = hueOffset;
+        firePropertyChange("hueOffset", old, getHueOffset());
+        updateARGBFromOffsets();
+    }
+
+    public float getSaturationOffset() {
+        return saturationOffset;
+    }
+
+    public void setSaturationOffset(float satOffset) {
+        float old = getSaturationOffset();
+        this.saturationOffset = satOffset;
+        firePropertyChange("saturationOffset", old, getSaturationOffset());
+        updateARGBFromOffsets();
+    }
+
+    public float getBrightnessOffset() {
+        return brightnessOffset;
+    }
+
+    public void setBrightnessOffset(float brightOffset) {
+        float old = getBrightnessOffset();
+        this.brightnessOffset = brightOffset;
+        firePropertyChange("brightnessOffset", old, getBrightnessOffset());
+        updateARGBFromOffsets();
+    }
+
+    public int getAlphaOffset() {
+        return alphaOffset;
+    }
+
+    public void setAlphaOffset(int alphaOffset) {
+        int old = getAlphaOffset();
+        this.alphaOffset = alphaOffset;
+        firePropertyChange("alphaOffset", old, alphaOffset);
+        updateARGBFromOffsets();
+    }
+
+
+    public void setRed(int red) {
+        red = clamp(red);
+        if (this.red != red) {
+            Color old = getColor();
+            int oldr = this.red;
+            this.red = red;
+            firePropertyChange("paint", old, getColor());
+            firePropertyChange("color", old, getColor());
+            firePropertyChange("red", oldr, red);
+            fireHSBChange(oldr, green, blue);
+            updateOffsetsFromARGB();
+        }
+    }
+
+    public final int getRed() {
+        return red;
+    }
+
+    public void setGreen(int green) {
+        green = clamp(green);
+        if (this.green != green) {
+            Color old = getColor();
+            int oldg = this.green;
+            this.green = green;
+            firePropertyChange("paint", old, getColor());
+            firePropertyChange("color", old, getColor());
+            firePropertyChange("green", oldg, green);
+            fireHSBChange(red, oldg, blue);
+            updateOffsetsFromARGB();
+        }
+    }
+
+    public final int getGreen() {
+        return green;
+    }
+
+    public void setBlue(int blue) {
+        blue = clamp(blue);
+        if (this.blue != blue) {
+            Color old = getColor();
+            int oldb = this.blue;
+            this.blue = blue;
+            firePropertyChange("paint", old, getColor());
+            firePropertyChange("color", old, getColor());
+            firePropertyChange("blue", oldb, blue);
+            fireHSBChange(red, green, oldb);
+            updateOffsetsFromARGB();
+        }
+    }
+
+    public final int getBlue() {
+        return blue;
+    }
+
+    public void setAlpha(int alpha) {
+        alpha = clamp(alpha);
+        if (this.alpha != alpha) {
+            int old = getAlpha();
+            this.alpha = alpha;
+            firePropertyChange("alpha", old, alpha);
+            firePropertyChange("paint", old, getColor());
+            firePropertyChange("color", old, getColor());
+            updateOffsetsFromARGB();
+        }
+    }
+
+    public final int getAlpha() {
+        return alpha;
+    }
+
+    public Color getColor() {
+        if (cached == null || red != cached.getRed() || green != cached.getGreen() ||
+                blue != cached.getBlue() || alpha != cached.getAlpha()) {
+            cached = new Color(red, green, blue, alpha);
+        }
+        return cached;
+    }
+
+    public void setColor(Color c) {
+        setColor(c, false);
+    }
+
+    public void setColor(Color c, boolean dontSetAlpha) {
+        Color oldColor = getColor();
+        int oldR = red, oldG = green, oldB = blue, oldA = alpha;
+        cached = c;
+        red = c.getRed();
+        green = c.getGreen();
+        blue = c.getBlue();
+        if (!dontSetAlpha) alpha = c.getAlpha();
+        updateOffsetsFromARGB();
+        firePropertyChange("red", oldR, getRed());
+        firePropertyChange("green", oldG, getGreen());
+        firePropertyChange("blue", oldB, getBlue());
+        fireHSBChange(oldR, oldG, oldB);
+        if (!dontSetAlpha) firePropertyChange("alpha", oldA, getAlpha());
+        firePropertyChange("paint", oldColor, getColor());
+        firePropertyChange("color", oldColor, getColor());
+    }
+
+    @Override public Paint getPaint() {
+        return getColor();
+    }
+
+
+    @Override public String toString() {
+        if (isAbsolute()) {
+            return Matte.class.getName() + "[r=" + red + ", g=" + green + ", b=" + blue + ", a=" + alpha + "]";
+        } else {
+            return Matte.class.getName() + "[base=" + uiDefaultParentName + ", H+" + hueOffset +
+                    ", S+" + saturationOffset + ", B+" + brightnessOffset + ", A+" + alphaOffset + "]";
+        }
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Matte matte = (Matte) o;
+        if (alpha != matte.alpha) return false;
+        if (alphaOffset != matte.alphaOffset) return false;
+        if (Float.compare(matte.alpha, alpha) != 0) return false;
+        if (blue != matte.blue) return false;
+        if (Float.compare(matte.brightnessOffset, brightnessOffset) != 0)
+            return false;
+        if (green != matte.green) return false;
+        if (Float.compare(matte.hueOffset, hueOffset) != 0) return false;
+        if (red != matte.red) return false;
+        if (uiResource != matte.uiResource) return false;
+        if (Float.compare(matte.saturationOffset, saturationOffset) != 0)
+            return false;
+        if (componentPropertyName != null ?
+                !componentPropertyName.equals(componentPropertyName) :
+                matte.componentPropertyName != null) return false;
+
+        if (uiDefaultParentName != null ?
+                !uiDefaultParentName.equals(matte.uiDefaultParentName) :
+                matte.uiDefaultParentName != null) return false;
+        return true;
+    }
+
+    public int hashCode() {
+        int result;
+        result = red;
+        result = 31 * result + green;
+        result = 31 * result + blue;
+        result = 31 * result + alpha;
+        result = 31 * result + (uiDefaultParentName != null ?
+            uiDefaultParentName.hashCode() : 0);
+        result = 31 * result + (componentPropertyName != null ?
+            componentPropertyName.hashCode() : 0);
+        result = 31 * result + hueOffset != +0.0f ?
+            Float.floatToIntBits(hueOffset) : 0;
+        result = 31 * result + saturationOffset != +0.0f ?
+            Float.floatToIntBits(saturationOffset) : 0;
+        result = 31 * result + brightnessOffset != +0.0f ?
+            Float.floatToIntBits(brightnessOffset) : 0;
+        result = 31 * result + (uiResource ? 1 : 0);
+        return result;
+    }
+
+    @Override public Matte clone() {
+        Matte m = new Matte();
+        m.red = red;
+        m.green = green;
+        m.blue = blue;
+        m.alpha = alpha;
+        m.brightnessOffset = brightnessOffset;
+        m.hueOffset = hueOffset;
+        m.saturationOffset = saturationOffset;
+        m.alphaOffset = alphaOffset;
+        m.uiDefaultParentName = uiDefaultParentName;
+        m.componentPropertyName = componentPropertyName;
+        m.uiResource = uiResource;
+        m.setUiDefaults(uiDefaults);
+        return m;
+    }
+
+    // =================================================================================================================
+    // Private Helper Methods
+
+    private void updateOffsetsFromARGB() {
+        if (!isAbsolute()) {
+            tmpf1 = Color.RGBtoHSB(red, green, blue, tmpf1);
+            Color parentColor = uiDefaults.getColor(uiDefaultParentName);
+            tmpf2 = Color.RGBtoHSB(parentColor.getRed(), parentColor.getGreen(), parentColor.getBlue(), tmpf2);
+            // update offset properties and fire events
+            float oldH = hueOffset, oldS = saturationOffset, oldB = brightnessOffset;
+            int oldA = alphaOffset;
+            hueOffset = tmpf1[0] - tmpf2[0];
+            saturationOffset = tmpf1[1] - tmpf2[1];
+            brightnessOffset = tmpf1[2] - tmpf2[2];
+            alphaOffset = alpha - parentColor.getAlpha();
+            firePropertyChange("hueOffset", oldH, getHueOffset());
+            firePropertyChange("saturationOffset", oldS, getSaturationOffset());
+            firePropertyChange("brightnessOffset", oldB, getBrightnessOffset());
+            firePropertyChange("alphaOffset", oldA, getAlphaOffset());
+        }
+    }
+
+    private void updateARGBFromOffsets() {
+        if (!isAbsolute()) {
+            Color oldColor = getColor();
+            // get parent color HSB
+            Color parentColor = uiDefaults.getColor(uiDefaultParentName);
+            tmpf1 = Color.RGBtoHSB(parentColor.getRed(), parentColor.getGreen(), parentColor.getBlue(), tmpf1);
+            // apply offsets
+            tmpf1[0] = clamp(tmpf1[0] + hueOffset);
+            tmpf1[1] = clamp(tmpf1[1] + saturationOffset);
+            tmpf1[2] = clamp(tmpf1[2] + brightnessOffset);
+            int oldA = getAlpha();
+            alpha = clamp(parentColor.getAlpha() + alphaOffset);
+            updateRGB(tmpf1);
+            // update fire events
+            firePropertyChange("alpha", oldA, getAlpha());
+            firePropertyChange("paint", oldColor, getColor());
+            firePropertyChange("color", oldColor, getColor());
+        }
+    }
+
+    private void updateRGB(float[] hsb) {
+        int oldR = red, oldG = green, oldB = blue;
+        int rgb = Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]);
+        red = (rgb >> 16) & 0xFF;
+        green = (rgb >> 8) & 0xFF;
+        blue = rgb & 0xFF;
+        firePropertyChange("red", oldR, getRed());
+        firePropertyChange("green", oldG, getGreen());
+        firePropertyChange("blue", oldB, getBlue());
+    }
+
+    private void fireHSBChange(int oldR, int oldG, int oldB) {
+        tmpf1 = Color.RGBtoHSB(oldR, oldG, oldB, tmpf1);
+        tmpf2 = Color.RGBtoHSB(red, green, blue, tmpf2);
+        firePropertyChange("hue", tmpf1[0], tmpf2[0]);
+        firePropertyChange("saturation", tmpf1[1], tmpf2[1]);
+        firePropertyChange("brightness", tmpf1[2], tmpf2[2]);
+    }
+
+    private float clamp(float value) {
+        if (value < 0) {
+            value = 0;
+        } else if (value > 1) {
+            value = 1;
+        }
+        return value;
+    }
+
+    private int clamp(int value) {
+        if (value < 0) {
+            value = 0;
+        } else if (value > 255) {
+            value = 255;
+        }
+        return value;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/PaintModel.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.paint;
+
+import org.jdesktop.beans.AbstractBean;
+
+import java.awt.Paint;
+
+/**
+ * I'd have just called it Paint, but sadly, that name was already taken, and would have been too confusing.
+ * <p/>
+ * Whenever size or position values are required (for example with Texture or Gradient), they are specified in the unit
+ * square: that is, between 0 and 1 inclusive. They can then later be scaled as necessary by any painting code.
+ *
+ * @author rbair
+ */
+public abstract class PaintModel extends AbstractBean implements Cloneable {
+    public static enum PaintControlType {
+        none, control_line, control_rect
+    }
+
+    protected PaintModel() { }
+
+    /**
+     * @return an instance of Paint that is represented by this PaintModel. This is often not a reversable operation,
+     *         and hence there is no "setPaint" method. Rather, tweaking the exposed properties of the PaintModel fires,
+     *         when necessary, property change events for the "paint" property, and results in different values returned
+     *         from this method.
+     */
+    public abstract Paint getPaint();
+
+    /**
+     * Get the type of controls for this paint model
+     *
+     * @return The type of paint controls, one of PaintControlType.none, PaintControlType.control_line or
+     *         PaintControlType.control_rect
+     */
+    public abstract PaintControlType getPaintControlType();
+
+
+    public abstract PaintModel clone();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/RadialGradient.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.paint;
+
+import java.awt.Color;
+import java.awt.MultipleGradientPaint.CycleMethod;
+import java.awt.Paint;
+import java.awt.RadialGradientPaint;
+
+/**
+ * Represents a RadialGradientPaint.
+ *
+ * @author rbair
+ */
+public class RadialGradient extends AbstractGradient {
+    protected Paint createPaint(float[] fractions, Matte[] mattes, CycleMethod method) {
+        Color[] colors = new Color[mattes.length];
+        for (int i = 0; i < colors.length; i++) {
+            colors[i] = mattes[i].getColor();
+        }
+        return new RadialGradientPaint(.5f, .5f, 1, fractions, colors, method);
+    }
+
+    @Override public RadialGradient clone() {
+        RadialGradient gradient = new RadialGradient();
+        copyTo(gradient);
+        return gradient;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Texture.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.paint;
+
+import java.awt.Paint;
+import java.awt.TexturePaint;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+/**
+ * Represents a TexturePaint.
+ *
+ * @author rbair
+ */
+public class Texture extends PaintModel {
+    private static final Rectangle2D RECT = new Rectangle2D.Double(0, 0, 1, 1);
+    private BufferedImage img;
+
+    public Texture() {
+    }
+
+    public PaintControlType getPaintControlType() {
+        return PaintControlType.control_rect;
+    }
+
+    public void setImage(BufferedImage img) {
+        BufferedImage old = this.img;
+        this.img = img;
+        firePropertyChange("paint", old, this.img);
+        firePropertyChange("image", old, this.img);
+    }
+
+    public final BufferedImage getImage() {
+        return img;
+    }
+
+    public Paint getPaint() {
+        return new TexturePaint(img, RECT);
+    }
+
+
+    public Texture clone() {
+        Texture newTexture = new Texture();
+        newTexture.img = this.img;
+        return newTexture;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/utils/HasPath.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.utils;
+
+/**
+ * HasPath - interface for model nodes that can provide there path in the tree
+ *
+ * @author Created by Jasper Potts (Jul 2, 2007)
+ */
+public interface HasPath {
+    public String getPath();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/utils/HasResources.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.utils;
+
+import java.io.File;
+
+/**
+ * HasResources - interface for model nodes that have resources
+ *
+ * @author Created by Jasper Potts (Jul 2, 2007)
+ */
+public interface HasResources {
+
+    public File getResourcesDir();
+
+    public File getImagesDir();
+
+    public File getTemplatesDir();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/utils/HasUIDefaults.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.swingx.designer.utils;
+
+import javax.swing.UIDefaults;
+
+/**
+ * HasUIDefaults - A tagging interface for any class that has UIDefaults
+ *
+ * @author Created by Jasper Potts (Jun 22, 2007)
+ */
+public interface HasUIDefaults {
+    public UIDefaults getUiDefaults();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/DefaultsGenerator.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,726 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.generator;
+
+import org.jdesktop.swingx.designer.Canvas;
+import org.jdesktop.swingx.designer.font.Typeface;
+import org.jdesktop.swingx.designer.paint.Matte;
+import org.jdesktop.swingx.designer.paint.PaintModel;
+import static org.jdesktop.synthdesigner.generator.GeneratorUtils.makePretty;
+import static org.jdesktop.synthdesigner.generator.GeneratorUtils.toConstantName;
+import static org.jdesktop.synthdesigner.generator.ObjectCodeConvertors.convert;
+import static org.jdesktop.synthdesigner.generator.TemplateWriter.read;
+import static org.jdesktop.synthdesigner.generator.TemplateWriter.writeSrcFile;
+import org.jdesktop.synthdesigner.synthmodel.SynthModel;
+import org.jdesktop.synthdesigner.synthmodel.UIComponent;
+import org.jdesktop.synthdesigner.synthmodel.UIFont;
+import org.jdesktop.synthdesigner.synthmodel.UIIconRegion;
+import org.jdesktop.synthdesigner.synthmodel.UIPaint;
+import org.jdesktop.synthdesigner.synthmodel.UIProperty;
+import org.jdesktop.synthdesigner.synthmodel.UIRegion;
+import org.jdesktop.synthdesigner.synthmodel.UIState;
+import org.jdesktop.synthdesigner.synthmodel.UIStateType;
+import org.jdesktop.synthdesigner.synthmodel.UIStyle;
+
+import javax.swing.border.BevelBorder;
+import javax.swing.border.Border;
+import javax.swing.border.CompoundBorder;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.EtchedBorder;
+import javax.swing.border.LineBorder;
+import javax.swing.border.MatteBorder;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Insets;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import org.jdesktop.synthdesigner.synthmodel.PainterBorder;
+
+/**
+ * DefaultsGenerator
+ * <p/>
+ * There are two main sets of defaults that must be configured. The first is
+ * the actual UI defaults tree. The second is a map of components + regions, which
+ * are used to decide what SynthStyle to use.
+ *
+ * @author Jasper Potts
+ * @author Richard Bair
+ */
+public class DefaultsGenerator {
+    private static String stateTypeImplTemplate;
+
+    private static String getStateTypeTemplate() {
+        if (stateTypeImplTemplate == null) {
+            //load the painter template file into an in-memory string to improve performance
+            //when generating a lot of classes
+            try {
+                stateTypeImplTemplate = read("resources/StateImpl.template");
+            } catch (IOException e) {
+                System.err.println("Failed to read template files.");
+                throw new RuntimeException(e);
+            }
+        }
+        return stateTypeImplTemplate;
+    }
+
+    /**
+     * Generate the defaults file and all painter files for a SynthModel. This method
+     * is the main entry point, called by the Generator class.
+     *
+     * @param uiDefaultInit      The buffer to write ui default put methods of the form <code>d.put("activeCaption", new
+     *                           ColorUIResource(123, 45, 200));</code>
+     * @param styleInit          The buffer to write out code to generate Synth Style populating the styles map <code>m
+     *                           = new HashMap<Key, LazyStyle>()</code>
+     * @param model              The Synth Model we are writing out defaults class for
+     * @param variables          The variables map pre populated with "PACKAGE" and "LAF_NAME"
+     * @param packageNamePrefix  The package name associated with this synth look and feel. For example,
+     *                           org.mypackage.mylaf
+     * @param painterPackageRoot The directory to write painters out to
+     */
+    public static void generateDefaults(StringBuilder uiDefaultInit, StringBuilder styleInit, SynthModel model,
+                                        Map<String, String> variables, String packageNamePrefix,
+                                        File painterPackageRoot) {
+        // write color palette
+        uiDefaultInit.append("        //Color palette\n");
+        writeColorPalette(uiDefaultInit, model.getColorPalette());
+        uiDefaultInit.append("\n");
+        // write fonts palette
+        uiDefaultInit.append("        //Font palette\n");
+        uiDefaultInit.append("        d.put(\"defaultFont\", new FontUIResource(defaultFont));\n");
+        writeFontPalette(uiDefaultInit, model.getFontPalette());
+        uiDefaultInit.append("\n");
+        // TODO: Other palettes
+        uiDefaultInit.append("        //Border palette\n");
+        uiDefaultInit.append("\n");
+        // write global style
+        uiDefaultInit.append("        //The global style definition\n");
+        writeStyle(model.getStyle(), uiDefaultInit, "");
+        uiDefaultInit.append("\n");
+        // write components
+        for (UIComponent c : model.getComponents()) {
+            String prefix = escape(c.getKey());
+            uiDefaultInit.append("        //Initialize ").append(prefix)
+                    .append("\n");
+            writeRegion(c, c, prefix, uiDefaultInit,
+                    styleInit, variables, packageNamePrefix, painterPackageRoot);
+            uiDefaultInit.append("\n");
+        }
+    }
+
+    private static void writeColorPalette(StringBuilder uiDefaultInit, List<UIPaint> colors) {
+        for (UIPaint color : colors) {
+            uiDefaultInit.append("        d.put(\"")
+                    .append(color.getName())
+                    .append("\",")
+                    .append(convertPaint(color.getValue()))
+                    .append(");\n");
+        }
+    }
+
+    private static void writeFontPalette(StringBuilder uiDefaultInit, List<UIFont> fonts) {
+        for (UIFont font : fonts) {
+            // We have no way of doing CSS style font lists yet so will just
+            // just the first font
+            if (!font.getFonts().isEmpty()){
+                Typeface t = font.getFonts().get(0);
+                if (t.isAbsolute()){
+                    Font f = t.getFont();
+                    uiDefaultInit.append("        d.put(\"")
+                        .append(font.getName())
+                        .append("\", new javax.swing.plaf.FontUIResource(\"")
+                        .append(f.getName())
+                        .append("\", ")
+                        .append(f.getStyle())
+                        .append(", ")
+                        .append(f.getSize())
+                        .append("));\n");
+                } else {
+                    uiDefaultInit.append("        d.put(\"")
+                        .append(font.getName())
+                        .append("\", new DerivedFont(\"")
+                        .append(t.getUiDefaultParentName())
+                        .append("\", ")
+                        .append(t.getSizeOffset())
+                        .append("f, ");
+                    switch (t.getBold()){
+                        case Default:
+                            uiDefaultInit.append("null");
+                            break;
+                        case On:
+                            uiDefaultInit.append("true");
+                            break;
+                        case Off:
+                            uiDefaultInit.append("false");
+                            break;
+                    }
+                    uiDefaultInit.append(", ");
+                    switch (t.getItalic()){
+                        case Default:
+                            uiDefaultInit.append("null");
+                            break;
+                        case On:
+                            uiDefaultInit.append("true");
+                            break;
+                        case Off:
+                            uiDefaultInit.append("false");
+                            break;
+                    }
+                    uiDefaultInit.append("));\n");
+                }
+            }
+        }
+    }
+
+    /**
+     * Write out the UIDefaults entries for a style
+     *
+     * @param style         The style to write defaults entries for
+     * @param uiDefaultInit The buffer to write ui default put methods of the form <code>d.put("activeCaption", new
+     *                      ColorUIResource(123, 45, 200));</code>
+     * @param prefix        The prefix for the style property names, for the model path where the style is from, should
+     *                      end with a "."
+     */
+    private static void writeStyle(UIStyle style, StringBuilder uiDefaultInit, String prefix) {
+        if (!style.isTextForegroundInherited()) writeMatte(prefix + "textForeground", style.getTextForeground(), uiDefaultInit);
+        if (!style.isTextBackgroundInherited()) writeMatte(prefix + "textBackground", style.getTextBackground(), uiDefaultInit);
+        if (!style.isBackgroundInherited()) writeMatte(prefix + "background", style.getBackground(), uiDefaultInit);
+        if (!style.isFontInherited()) writeTypeFace(prefix + "font", style.getFont(), uiDefaultInit);
+        for (UIProperty property : style.getUiProperties()) {
+            switch (property.getType()) {
+                case BOOLEAN:
+                    Boolean b = ((Boolean)property.getValue());
+                    if (b != null) {
+                        uiDefaultInit.append("        d.put(\"")
+                                .append(prefix)
+                                .append(property.getName())
+                                .append("\", ")
+                                .append(b ? "Boolean.TRUE" : "Boolean.FALSE")
+                                .append(");\n");
+                    }
+                    break;
+                case STRING:
+                    uiDefaultInit.append("        d.put(\"")
+                            .append(prefix)
+                            .append(property.getName())
+                            .append("\", \"")
+                            .append(property.getValue().toString())
+                            .append("\");\n");
+                    break;
+                case INT:
+                    uiDefaultInit.append("        d.put(\"")
+                            .append(prefix)
+                            .append(property.getName())
+                            .append("\", new Integer(")
+                            .append(((Integer) property.getValue()).intValue())
+                            .append("));\n");
+                    break;
+                case FLOAT:
+                    uiDefaultInit.append("        d.put(\"")
+                            .append(prefix)
+                            .append(property.getName())
+                            .append("\", new Float(")
+                            .append(((Float) property.getValue()).floatValue())
+                            .append("f));\n");
+                    break;
+                case DOUBLE:
+                    uiDefaultInit.append("        d.put(\"")
+                            .append(prefix)
+                            .append(property.getName())
+                            .append("\", new Double(")
+                            .append(((Double) property.getValue()).doubleValue())
+                            .append("));\n");
+                    break;
+                case COLOR:
+                    uiDefaultInit.append("        d.put(\"")
+                            .append(prefix)
+                            .append(property.getName())
+                            .append("\", ")
+                            .append(convertPaint((Matte)property.getValue()))
+                            .append(");\n");
+                    break;
+                case FONT:
+                    writeTypeFace(prefix.replace("\"", "\\\"") + property.getName(),
+                            (Typeface) property.getValue(), uiDefaultInit);
+                    break;
+                case INSETS:
+                    Insets i = (Insets) property.getValue();
+                    uiDefaultInit.append("        d.put(\"")
+                            .append(prefix)
+                            .append(property.getName())
+                            .append("\", new InsetsUIResource(")
+                            .append(i.top).append(", ").append(i.left).append(", ").append(i.bottom).append(", ")
+                            .append(i.right)
+                            .append("));\n");
+                    break;
+                case DIMENSION:
+                    Dimension d = (Dimension) property.getValue();
+                    uiDefaultInit.append("        d.put(\"")
+                            .append(prefix)
+                            .append(property.getName())
+                            .append("\", new DimensionUIResource(")
+                            .append(d.width).append(", ").append(d.height)
+                            .append("));\n");
+                    break;
+                case BORDER:
+                    uiDefaultInit.append("        d.put(\"")
+                            .append(prefix)
+                            .append(property.getName())
+                            .append("\", new BorderUIResource(");
+                    uiDefaultInit.append(convertBorder(
+                            (Border)property.getValue()));
+                    uiDefaultInit.append("));\n");
+                    break;
+            }
+        }
+    }
+
+    private static void writeMatte(String propertyName, Matte matte, StringBuilder uiDefaultInit) {
+        if (matte==null) System.err.println("Error matte is NULL for ["+propertyName+"]");
+        uiDefaultInit.append("        d.put(\"")
+                    .append(propertyName)
+                    .append("\", ")
+                    .append(convertPaint(matte))
+                    .append(");\n");
+    }
+
+    private static void writeTypeFace(String propertyName, Typeface typeface, StringBuilder uiDefaultInit) {
+        uiDefaultInit.append("        d.put(\"")
+                .append(propertyName)
+                .append("\", new DerivedFont(\"")
+                .append(typeface.getUiDefaultParentName())
+                .append("\", ")
+                .append(typeface.getSizeOffset())
+                .append("f, ");
+        switch (typeface.getBold()) {
+            case Default:
+                uiDefaultInit.append("null,");
+                break;
+            case Off:
+                uiDefaultInit.append("Boolean.FALSE,");
+                break;
+            case On:
+                uiDefaultInit.append("Boolean.TRUE,");
+                break;
+        }
+        switch (typeface.getItalic()) {
+            case Default:
+                uiDefaultInit.append("null");
+                break;
+            case Off:
+                uiDefaultInit.append("Boolean.FALSE");
+                break;
+            case On:
+                uiDefaultInit.append("Boolean.TRUE");
+                break;
+        }
+        uiDefaultInit.append("));\n");
+    }
+
+
+    /**
+     * Write out code for a Component or Region
+     *
+     * @param comp               This may be the same as the region <code>reg</code> or is the parent component
+     *                           containing the region
+     * @param region             The region we are writing out
+     * @param prefix             This is dot sperated path of component and sub regions to and including the region
+     *                           <code>reg</code> of the form [Comp].[Region]......[Region] path
+     * @param uiDefaultInit      This is for inserting into org.mypackage.mylaf.MyDefaults#getDefaults() method
+     * @param styleInit          This is for inserting into org.mypackage.mylaf.MyDefaults#initialize() method
+     * @param variables          The variables map pre populated with "PACKAGE" and "LAF_NAME"
+     * @param packageNamePrefix  The package name associated with this synth look and feel. For example,
+     *                           org.mypackage.mylaf
+     * @param painterPackageRoot The directory to write painters out to
+     */
+    private static void writeRegion(UIComponent comp, UIRegion region, String prefix, StringBuilder uiDefaultInit,
+                                    StringBuilder styleInit, Map<String, String> variables,
+                                    String packageNamePrefix, File painterPackageRoot) {
+        // register component with LAF
+        String regionCode = GeneratorUtils.getRegionNameCaps(region.getName());
+        if (regionCode == null) {
+            throw new IllegalStateException("We were asked to encode a region we know nothing about: " + region.getName());
+        } else {
+            regionCode = "Region." + regionCode;
+        }
+
+        //construct the list of States that accompany this registration.
+        StringBuffer regString = new StringBuffer(); //like: Enabled,Disabled,Foo,Default,Etc
+        List<UIStateType> types = comp.getStateTypes(); //state types are only defined on the UIComponent level
+        if (types != null && types.size() > 0) {
+            for (UIStateType type : types) {
+                regString.append(type.getKey());
+                regString.append(",");
+            }
+            //remove the last ","
+            regString.deleteCharAt(regString.length()-1);
+        }
+
+        styleInit.append("        register(")
+                .append(regionCode)
+                .append(", \"")
+                .append(prefix);
+        styleInit.append("\"");
+        styleInit.append(");\n");
+
+        // write content margins
+        Insets i = (Insets) region.getContentMargins();
+        uiDefaultInit.append("        d.put(\"")
+                .append(prefix)
+                .append(".contentMargins")
+                .append("\", new InsetsUIResource(")
+                .append(i.top).append(", ").append(i.left).append(", ").append(i.bottom).append(", ").append(i.right)
+                .append("));\n");
+        // write opaque if true
+        if (region instanceof UIComponent && ((UIComponent)region).isOpaque()) {
+            uiDefaultInit.append("        d.put(\"")
+                    .append(prefix)
+                    .append(".opaque")
+                    .append("\", Boolean.TRUE);\n");
+        }
+        //write the State, if necessary
+        if (!regString.equals("Enabled,MouseOver,Pressed,Disabled,Focused,Selected,Default") && types.size() > 0) {
+            //there were either custom states, or the normal states were in a custom order
+            //so go ahead and write out prefix.State
+            uiDefaultInit.append("        d.put(\"")
+                    .append(prefix)
+                    .append(".States")
+                    .append("\", \"")
+                    .append(regString)
+                    .append("\");\n");
+        }
+        //write out any custom states, if necessary
+        for (UIStateType type : types) {
+            String synthState = type.getKey();
+            if (!"Enabled".equals(synthState) &&
+                !"MouseOver".equals(synthState) &&
+                !"Pressed".equals(synthState) &&
+                !"Disabled".equals(synthState) &&
+                !"Focused".equals(synthState) &&
+                !"Selected".equals(synthState) &&
+                !"Default".equals(synthState)) {
+                //what we have here, gentlemen, is a bona-fide custom state.
+                try {
+                    //if the type is not one of the standard types, then construct a name for
+                    //the new type, and write out a new subclass of State.
+                    java.lang.String className = makePretty(prefix) + synthState + "State";
+                    java.lang.String body = type.getCodeSnippet();
+                    variables.put("STATE_NAME", className);
+                    variables.put("STATE_KEY", synthState);
+                    variables.put("BODY", body);
+
+                    writeSrcFile(getStateTypeTemplate(), variables, new java.io.File(painterPackageRoot, className + ".java"));
+
+                    variables.remove("STATE_NAME");
+                    variables.remove("STATE_KEY");
+                    variables.remove("BODY");
+
+                    uiDefaultInit.append("        d.put(\"")
+                            .append(prefix)
+                            .append(".")
+                            .append(synthState)
+                            .append("\", new ")
+                            .append(className)
+                            .append("());\n");
+                } catch (IOException ex) {
+                    ex.printStackTrace();
+                }
+            }
+        }
+        // write region style
+        writeStyle(region.getStyle(), uiDefaultInit, prefix + ".");
+
+        try {
+            boolean hasCanvas = hasCanvas(region);
+            if (hasCanvas) {
+                PainterGenerator.writePainter(region, variables, painterPackageRoot, prefix);
+            }
+            String fileNamePrefix = makePretty(prefix) + "Painter";
+            // write states ui defaults
+            for (UIState state : region.getBackgroundStates()) {
+                String statePrefix = prefix + "[" + state.getName() + "]";
+                // write state style
+                writeStyle(state.getStyle(), uiDefaultInit, statePrefix + ".");
+                // write painter
+                if (hasCanvas) {
+                    writeLazyPainter(state, uiDefaultInit, statePrefix, packageNamePrefix, fileNamePrefix, "background");
+                }
+            }
+            for (UIState state : region.getForegroundStates()) {
+                String statePrefix = prefix + "[" + state.getName() + "]";
+                // write state style
+                writeStyle(state.getStyle(), uiDefaultInit, statePrefix + ".");
+                // write painter
+                if (hasCanvas) {
+                    writeLazyPainter(state, uiDefaultInit, statePrefix, packageNamePrefix, fileNamePrefix, "foreground");
+                }
+            }
+            for (UIState state : region.getBorderStates()) {
+                String statePrefix = prefix + "[" + state.getName() + "]";
+                // write state style
+                writeStyle(state.getStyle(), uiDefaultInit, statePrefix + ".");
+                // write painter
+                if (hasCanvas) {
+                    writeLazyPainter(state, uiDefaultInit, statePrefix, packageNamePrefix, fileNamePrefix, "border");
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        // handle sub regions
+        for (UIRegion subRegion : region.getSubRegions()) {
+            String subregionName = prefix + ":" + escape(subRegion.getKey());
+            if (subRegion instanceof UIIconRegion) {
+                writeIconRegion(comp, (UIIconRegion) subRegion, prefix, uiDefaultInit,
+                        variables, packageNamePrefix, painterPackageRoot);
+            } else if (subRegion instanceof UIComponent) {
+                // inner named component
+                UIComponent subComponent = (UIComponent) subRegion;
+                writeRegion(subComponent, subRegion, subregionName,
+                        uiDefaultInit, styleInit, variables, packageNamePrefix, painterPackageRoot);
+            } else {
+                writeRegion(comp, subRegion, subregionName, uiDefaultInit, styleInit, variables,
+                        packageNamePrefix, painterPackageRoot);
+            }
+        }
+    }
+
+    private static void writeLazyPainter(UIState state, StringBuilder uiDefaultInit, String statePrefix, String packageNamePrefix, String fileNamePrefix, String painterSuffix) {
+        Canvas canvas = state.getCanvas();
+        if (!canvas.isBlank()) {
+            Insets si = canvas.getStretchingInsets();
+            boolean inverted = state.isInverted();
+            UIStyle.CacheMode cache = state.getStyle().getCacheMode();
+            String cacheModeString = null;
+            switch (cache) {
+                case NO_CACHING: cacheModeString = "AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING"; break;
+                case FIXED_SIZES: cacheModeString = "AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES"; break;
+                case NINE_SQUARE_SCALE: cacheModeString = "AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE"; break;
+            }
+            double maxH = state.getStyle().getMaxHozCachedImgScaling();
+            double maxV = state.getStyle().getMaxVertCachedImgScaling();
+            String stateConstant = toConstantName(painterSuffix + "_" + UIState.keysToString(state.getStateKeys()));
+
+            uiDefaultInit.append("        d.put(\"")
+                    .append(statePrefix)
+                    .append(".").append(painterSuffix).append("Painter\", new LazyPainter(\"")
+                    .append(packageNamePrefix).append(".").append(fileNamePrefix)
+                    .append("\", ")
+                    .append(fileNamePrefix).append(".").append(stateConstant).append(", ")
+                    .append(convert(si)).append(", ")
+                    .append(convert(canvas.getSize())).append(", ")
+                    .append(inverted).append(", ")
+                    .append(cacheModeString).append(", ")
+                    .append(maxH == Double.POSITIVE_INFINITY ? "Double.POSITIVE_INFINITY" : maxH).append(", ")
+                    .append(maxV == Double.POSITIVE_INFINITY ? "Double.POSITIVE_INFINITY" : maxV).append("));\n");
+        }
+    }
+
+
+    /**
+     * Write out code for a IconRegion
+     *
+     * @param comp               This may be the same as the region <code>region</code> or is the parent component
+     *                           containing the region
+     * @param region             The region we are writing out
+     * @param prefix             This is [Comp][Region]......[Region] path
+     * @param key                The key for this icon.
+     * @param uiDefaultInit      This is for inserting into org.mypackage.mylaf.MyDefaults#getDefaults() method
+     * @param variables          The variables map pre populated with "PACKAGE" and "LAF_NAME"
+     * @param packageNamePrefix  The package name associated with this synth look and feel. For example,
+     *                           org.mypackage.mylaf
+     * @param painterPackageRoot The directory to write painters out to
+     */
+    private static void writeIconRegion(UIComponent comp, UIIconRegion region, String prefix,
+                                        StringBuilder uiDefaultInit, Map<String, String> variables,
+                                        String packageNamePrefix, File painterPackageRoot) {
+
+        Dimension size = null;
+        String fileNamePrefix = makePretty(prefix) + "Painter";
+        // write states ui defaults
+        for (UIState state : region.getBackgroundStates()) {// TODO: Handle Background,Foreground and Borders States Lists? Actually not sure that IconRegions need support borders or foregrounds
+            Canvas canvas = state.getCanvas();
+            if (!canvas.isBlank()) {
+                String statePrefix = prefix + "[" + state.getName() + "]";
+                // Put Painter in UiDefaults
+                writeLazyPainter(state, uiDefaultInit, statePrefix, packageNamePrefix, fileNamePrefix, region.getKey());
+                size = canvas.getSize();
+            }
+        }
+
+        if (size != null) {
+            // Put SynthIconImpl wrapper in UiDefaults
+            String key = region.getBasicKey() == null ? prefix + "." + region.getKey() : region.getBasicKey();
+            uiDefaultInit.append("        d.put(\"")
+                    .append(key)
+                    .append("\", new NimbusIcon(\"") //TODO should this be wrapped in an IconUIResource?
+                    .append(prefix)
+                    .append("\", \"")
+                    .append(region.getKey())
+                    .append("Painter")
+                    .append("\", ")
+                    .append(size.width)
+                    .append(", ")
+                    .append(size.height)
+                    .append("));\n");
+        }
+
+        // handle sub regions
+        if (region.getSubRegions().length > 0) {
+            // there is no meaning to a sub region inside a IconRegion
+            throw new IllegalStateException("You can not have sub regions inside UiIconRegions. \"" +
+                    comp.getSubRegions()[0].getName() + "\" is inside \""
+                    + prefix.substring(0, prefix.length() - 1) + "\"");
+        }
+    }
+
+    /**
+     * Utility method for escaping all double quotes with backslash double-quote.
+     */
+    private static String escape(String s) {
+        return s.replace("\"", "\\\"");
+    }
+
+    private static String convertPaint(PaintModel paint){
+        if (paint instanceof Matte){
+            Matte matte = (Matte)paint;
+            if (matte.isAbsolute()){
+                String colorParams = convert(matte.getColor());
+                if (matte.isUiResource()) {
+                    return "new ColorUIResource(" + colorParams + ")";
+                } else {
+                    return colorParams;
+                }
+            } else {
+                String s = "getDerivedColor(\"" +
+                            matte.getUiDefaultParentName()+"\","+
+                            matte.getHueOffset()+"f,"+matte.getSaturationOffset()+
+                            "f,"+matte.getBrightnessOffset()+"f,"+
+                            matte.getAlphaOffset();
+                if (matte.isUiResource()) {
+                    return s + ")";
+                } else {
+                    return s + ",false)";
+                }
+            }
+        } else {
+            //TODO: What about gradients etc here?
+            System.err.println("Error: Could not write paint in " +
+                    "DefaultsGenerator as it was not a Matte. = "+
+                    paint.getClass().getName());
+            return "";
+        }
+    }
+
+    private static String convertBorder(Border val) {
+        StringBuilder uiDefaultInit = new StringBuilder();
+        Insets i;
+        if (val instanceof PainterBorder) {
+            PainterBorder pb = (PainterBorder) val;
+            i = pb.getBorderInsets();
+            uiDefaultInit.append("new PainterBorder(\"")
+                    .append(pb.getPainterName())
+                    .append("\", new Insets(")
+                    .append(i.top).append(", ")
+                    .append(i.left).append(", ")
+                    .append(i.bottom).append(", ")
+                    .append(i.right)
+                    .append("))");
+        } else if (val instanceof EmptyBorder) {
+            i = ((EmptyBorder) val).getBorderInsets();
+            uiDefaultInit.append("BorderFactory.createEmptyBorder(")
+                    .append(i.top).append(", ")
+                    .append(i.left).append(", ")
+                    .append(i.bottom).append(", ")
+                    .append(i.right)
+                    .append(")");
+        } else if (val instanceof LineBorder) {
+            LineBorder border = (LineBorder) val;
+            uiDefaultInit.append("BorderFactory.createLineBorder(")
+                    .append(convert(border.getLineColor()))
+                    .append(",")
+                    .append(border.getThickness())
+                    .append(")");
+        } else if (val instanceof EtchedBorder) {
+            EtchedBorder border = (EtchedBorder) val;
+            uiDefaultInit.append("BorderFactory.createEtchedBorder(")
+                    .append(border.getEtchType())
+                    .append(",")
+                    .append(convert(border.getHighlightColor()))
+                    .append(",")
+                    .append(convert(border.getShadowColor()))
+                    .append(")");
+        } else if (val instanceof BevelBorder) {
+            BevelBorder border = (BevelBorder) val;
+            uiDefaultInit.append("BorderFactory.createEtchedBorder(")
+                    .append(border.getBevelType())
+                    .append(",")
+                    .append(convert(border.getHighlightOuterColor()))
+                    .append(",")
+                    .append(convert(border.getHighlightInnerColor()))
+                    .append(",")
+                    .append(convert(border.getShadowOuterColor()))
+                    .append(",")
+                    .append(convert(border.getShadowInnerColor()))
+                    .append(")");
+        } else if (val instanceof MatteBorder) {
+            MatteBorder border = (MatteBorder) val;
+            i = border.getBorderInsets();
+            uiDefaultInit.append("BorderFactory.createEmptyBorder(")
+                    .append(i.top).append(", ")
+                    .append(i.left).append(", ")
+                    .append(i.bottom).append(", ")
+                    .append(i.right).append(", ")
+                    .append(convert(border.getMatteColor()))
+                    .append(")");
+        } else if (val instanceof CompoundBorder) {
+            CompoundBorder border = (CompoundBorder) val;
+            uiDefaultInit.append("BorderFactory.createEmptyBorder(")
+                    .append(convertBorder(border.getOutsideBorder()))
+                    .append(",")
+                    .append(convertBorder(border.getInsideBorder()))
+                    .append(")");
+        }
+        return uiDefaultInit.toString();
+    }
+
+    private static boolean hasCanvas(UIRegion region) {
+        for (UIState s : region.getBackgroundStates()) {
+            if (!s.getCanvas().isBlank()) return true;
+        }
+        for (UIState s : region.getBorderStates()) {
+            if (!s.getCanvas().isBlank()) return true;
+        }
+        for (UIState s : region.getForegroundStates()) {
+            if (!s.getCanvas().isBlank()) return true;
+        }
+        for (UIRegion subregion : region.getSubRegions()) {
+            if (hasCanvas(subregion)) return true;
+        }
+        return false;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/Generator.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,289 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.generator;
+
+import static org.jdesktop.synthdesigner.generator.TemplateWriter.read;
+import static org.jdesktop.synthdesigner.generator.TemplateWriter.writeSrcFile;
+import org.jdesktop.synthdesigner.synthmodel.SynthModel;
+import org.jibx.runtime.BindingDirectory;
+import org.jibx.runtime.IBindingFactory;
+import org.jibx.runtime.IUnmarshallingContext;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Generates the various Java artifacts based on a SynthModel.
+ * <p/>
+ * Generated source files are split up among two different locations. There are those source files that are meant to be
+ * edited (generally, only the LookAndFeel class itself) and those that are autogenerated (everything else).
+ * <p/>
+ * All autogenerated files are placed in "buildPackageRoot" and are package private. A LAF author (one who has access to
+ * the generated sources) will be able to access any of the generated classes. Those referencing the library, however,
+ * will only be able to access the main LookAndFeel class itself (since everything else is package private).
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class Generator {
+    /** A map of variables that are used for variable substitution in the template files. */
+    private Map<String, String> variables;
+
+    private boolean full = false;
+    private File buildPackageRoot;
+    private File srcPackageRoot;
+    private String packageNamePrefix;
+    private String lafName;
+    private SynthModel model;
+
+    /**
+     * MAIN APPLICATION
+     * <p/>
+     * This is for using the generator as part of the java build process
+     *
+     * @param args The commandline arguments
+     */
+    public static void main(String[] args) {
+        if (args.length == 0 || (args.length % 2) != 0) {
+            System.out.println("Usage: generator [-options]\n" +
+                    "    -full <true|false>     True if we should build the whole LAF or false for building just states and painters.\n" +
+                    "    -skinFile <value>      Path to the skin.laf file for the LAF to be generated from.\n" +
+                    "    -buildDir <value>      The directory beneath which the build-controlled artifacts (such as the Painters) should\n" +
+                    "                           be placed. This is the root directory beneath which the necessary packages and source\n" +
+                    "                           files will be created.\n" +
+                    "    -srcDir <value>        The directory beneath which the normal user-controlled artifacts (such as the core\n" +
+                    "                           LookAndFeel file) should be placed. These are one-time generated files. This is the root\n" +
+                    "                           directory beneath which the necessary packages and source files will be created.\n" +
+                    "    -resourcesDir <value>  The resources directory containing templates and images.\n" +
+                    "    -packagePrefix <value> The package name associated with this synth look and feel. For example,\n" +
+                    "                           \"org.mypackage.mylaf\"\n" +
+                    "    -lafName <value>       The name of the laf, such as \"MyLAF\".\n");
+        } else {
+            boolean full = false;
+            File skinFile = new File(System.getProperty("user.dir"));
+            File buildDir = new File(System.getProperty("user.dir"));
+            File srcDir = new File(System.getProperty("user.dir"));
+            File resourcesDir = new File(System.getProperty("user.dir"));
+            String packagePrefix = "org.mypackage.mylaf";
+            String lafName = "MyLAF";
+            for (int i = 0; i < args.length; i += 2) {
+                String key = args[i].trim().toLowerCase();
+                String value = args[i + 1].trim();
+                if ("-full".equals(key)) {
+                    full = Boolean.parseBoolean(value);
+                } else if ("-skinfile".equals(key)) {
+                    skinFile = new File(value);
+                } else if ("-builddir".equals(key)) {
+                    buildDir = new File(value);
+                } else if ("-srcdir".equals(key)) {
+                    srcDir = new File(value);
+                } else if ("-resourcesdir".equals(key)) {
+                    resourcesDir = new File(value);
+                } else if ("-packageprefix".equals(key)) {
+                    packagePrefix = value;
+                } else if ("-lafname".equals(key)) {
+                    lafName = value;
+                }
+            }
+            System.out.println("### GENERATING LAF CODE ################################");
+            System.out.println("   full          :" + full);
+            System.out.println("   skinFile      :" + skinFile.getAbsolutePath());
+            System.out.println("   buildDir      :" + buildDir.getAbsolutePath());
+            System.out.println("   srcDir        :" + srcDir.getAbsolutePath());
+            System.out.println("   resourcesDir  :" + resourcesDir.getAbsolutePath());
+            System.out.println("   packagePrefix :" +packagePrefix);
+            System.out.println("   lafName       :" +lafName);
+            try {
+                // LOAD SKIN MODEL
+                IBindingFactory bindingFactory = BindingDirectory.getFactory(SynthModel.class);
+                IUnmarshallingContext mctx = bindingFactory.createUnmarshallingContext();
+                mctx.setDocument(new FileInputStream(skinFile), "UTF-8");
+                // pass resources directory in as user context so it can be used in SynthModel preSet
+                mctx.setUserContext(resourcesDir);
+                SynthModel model = (SynthModel) mctx.unmarshalElement();
+                // create and run generator
+                Generator generator = new Generator(full, buildDir, srcDir, packagePrefix, lafName, model);
+                generator.generate();
+            } catch (Exception e) {
+                System.err.println("Error loading skin and generating java src:");
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * Creates a new Generator, capable of outputting the source code artifacts related to a given SynthModel. It is
+     * capable of generating the one-time artifacts in addition to the regeneration of build-controlled artifacts.
+     *
+     * @param full              True if we should build the whole LAF or false for building just states and painters.
+     * @param buildDir          The directory beneath which the build-controlled artifacts (such as the Painters) should
+     *                          be placed. This is the root directory beneath which the necessary packages and source
+     *                          files will be created.
+     * @param srcDir            The directory beneath which the normal user-controlled artifacts (such as the core
+     *                          LookAndFeel file) should be placed. These are one-time generated files. This is the root
+     *                          directory beneath which the necessary packages and source files will be created.
+     * @param packageNamePrefix The package name associated with this synth look and feel. For example,
+     *                          org.mypackage.mylaf
+     * @param lafName           The name of the laf, such as MyLAF.
+     * @param model             The actual SynthModel to base these generated files on.
+     */
+    public Generator(boolean full, File buildDir, File srcDir, String packageNamePrefix, String lafName,
+                     SynthModel model) {
+        this.full = full;
+        //validate the input variables
+        if (packageNamePrefix == null) {
+            throw new IllegalArgumentException("You must specify a package name prefix");
+        }
+        if (buildDir == null) {
+            throw new IllegalArgumentException("You must specify the build directory");
+        }
+        if (srcDir == null) {
+            throw new IllegalArgumentException("You must specify the source directory");
+        }
+        if (model == null) {
+            throw new IllegalArgumentException("You must specify the SynthModel");
+        }
+        if (lafName == null) {
+            throw new IllegalArgumentException("You must specify the name of the look and feel");
+        }
+
+        //construct the map which is used to do variable substitution of the template
+        //files
+        variables = new HashMap<String, String>();
+        variables.put("PACKAGE", packageNamePrefix);
+        variables.put("LAF_NAME", lafName);
+
+        //generate and save references to the package-root directories.
+        //(That is, given the buildDir and srcDir, generate references to the
+        //org.mypackage.mylaf subdirectories)
+        buildPackageRoot = new File(buildDir, packageNamePrefix.replaceAll("\\.", "\\/"));
+        buildPackageRoot.mkdirs();
+        srcPackageRoot = new File(srcDir, packageNamePrefix.replaceAll("\\.", "\\/"));
+        srcPackageRoot.mkdirs();
+
+        //save the variables
+        this.packageNamePrefix = packageNamePrefix;
+        this.lafName = lafName;
+        this.model = model;
+    }
+
+    public void generate() {
+        //Generate the one-time files. If these files already exist, skip the
+        //ones that exist and create the missing ones. Register warnings for the
+        //already existing files.
+
+        //TODO Skip existing files, send warnings, etc.
+        if (full) {
+            try {
+                //create the LookAndFeel file
+                String template = read("resources/LookAndFeel.template");
+                writeSrcFile(template, variables, new File(srcPackageRoot, lafName + "LookAndFeel.java"));
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        //create the painters and such.
+        regenerate();
+    }
+
+    public void regenerate() {
+        try {
+            if (full) {
+                //first, create the AbstractRegionPainter.java file.
+                String template = read("resources/AbstractRegionPainter.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "AbstractRegionPainter.java"));
+
+                //write out BlendingMode.java
+                template = read("resources/BlendingMode.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "BlendingMode.java"));
+
+                //create the SynthPainterImpl class
+                template = read("resources/SynthPainterImpl.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "SynthPainterImpl.java"));
+
+                //create the IconImpl class
+                template = read("resources/IconImpl.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, lafName + "Icon.java"));
+
+                //create the StyleImpl class
+                template = read("resources/StyleImpl.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, lafName + "Style.java"));
+
+                //write out Effect.java
+                template = read("resources/Effect.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "Effect.java"));
+
+                //write out EffectUtils.java
+                template = read("resources/EffectUtils.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "EffectUtils.java"));
+
+                //write out ShadowEffect.java
+                template = read("resources/ShadowEffect.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "ShadowEffect.java"));
+
+                //write out DropShadowEffect.java
+                template = read("resources/DropShadowEffect.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "DropShadowEffect.java"));
+
+                //write out InnerShadowEffect.java
+                template = read("resources/InnerShadowEffect.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "InnerShadowEffect.java"));
+
+                //write out InnerGlowEffect.java
+                template = read("resources/InnerGlowEffect.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "InnerGlowEffect.java"));
+
+                //write out OuterGlowEffect.java
+                template = read("resources/OuterGlowEffect.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "OuterGlowEffect.java"));
+
+                //write out State.java
+                template = read("resources/State.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "State.java"));
+
+                template = read("resources/ImageCache.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "ImageCache.java"));
+
+                template = read("resources/ImageScalingHelper.template");
+                writeSrcFile(template, variables, new File(buildPackageRoot, "ImageScalingHelper.java"));
+            }
+            //next, populate the first set of ui defaults based on what is in the
+            //various palettes of the synth model
+            StringBuilder uiDefaultInit = new StringBuilder();
+            StringBuilder styleInit = new StringBuilder();
+            DefaultsGenerator.generateDefaults(uiDefaultInit, styleInit, model, variables, packageNamePrefix,
+                    buildPackageRoot);
+            variables.put("UI_DEFAULT_INIT", uiDefaultInit.toString());
+            variables.put("STYLE_INIT", styleInit.toString());
+            writeSrcFile(read("resources/Defaults.template"), variables,
+                    new File(buildPackageRoot, lafName + "Defaults.java"));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/GeneratorUtils.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,295 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.generator;
+
+import javax.swing.plaf.synth.Region;
+import javax.swing.plaf.synth.SynthConstants;
+
+/**
+ * GeneratorUtils
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+class GeneratorUtils {
+    private GeneratorUtils() {}
+
+    /**
+     * Given a synth state, create the appropriate name as it would be used for a ui default key.
+     * <p/>
+     * For example:
+     * <p/>
+     * enabled enabled+over enabled+over+selected
+     */
+    static String toUIDefaultKey(int state) {
+        StringBuffer buffer = new StringBuffer();
+        if ((state & SynthConstants.DEFAULT) == SynthConstants.DEFAULT) {
+            buffer.append("default");
+        }
+        if ((state & SynthConstants.DISABLED) == SynthConstants.DISABLED) {
+            if (buffer.length() > 0) buffer.append("+");
+            buffer.append("disabled");
+        }
+        if ((state & SynthConstants.ENABLED) == SynthConstants.ENABLED) {
+            if (buffer.length() > 0) buffer.append("+");
+            buffer.append("enabled");
+        }
+        if ((state & SynthConstants.FOCUSED) == SynthConstants.FOCUSED) {
+            if (buffer.length() > 0) buffer.append("+");
+            buffer.append("focused");
+        }
+        if ((state & SynthConstants.MOUSE_OVER) == SynthConstants.MOUSE_OVER) {
+            if (buffer.length() > 0) buffer.append("+");
+            buffer.append("over");
+        }
+        if ((state & SynthConstants.PRESSED) == SynthConstants.PRESSED) {
+            if (buffer.length() > 0) buffer.append("+");
+            buffer.append("down");
+        }
+        if ((state & SynthConstants.SELECTED) == SynthConstants.SELECTED) {
+            if (buffer.length() > 0) buffer.append("+");
+            buffer.append("selected");
+        }
+        return buffer.toString();
+    }
+
+    //takes a states string of the form Enabled+Foo+Bar.
+    //removes any whitespace. Replaces the + signs with And.
+    static String toClassName(String states) {
+        String s = states.replace(" ", "");
+        s = states.replace("+", "And");
+        return s;
+    }
+
+    //takes a states string of the form Enabled+Foo+Bar.
+    //removes any whitespace. Replaces the + signs with _.
+    //capitalizes the whole lot
+    static String toConstantName(String states) {
+        String s = states.replace(" ", "");
+        s = states.replace("+", "_");
+        return s.toUpperCase();
+    }
+
+    /**
+     * Given a string "s" of the form:
+     *
+     * A.\"A.a\".B
+     *
+     * Make it such that:
+     *
+     * AAAB
+     *
+     * For example, ComboBox.\"ComboBox.arrowButton\" would become
+     * ComboBoxComboBoxArrowButton
+     *
+     * @param s
+     * @return
+     */
+    static String makePretty(String s) {
+        char[] src = s.toCharArray();
+        char[] dst = new char[src.length];
+        int dstIndex = 0;
+        for (int i=0; i<src.length; i++) {
+            //if the src char is a period and there is a following character,
+            //make sure the character is capitalized.
+            if ((src[i] == '.' || src[i] == ':') && i < src.length -1) {
+                src[i+1] = Character.toUpperCase(src[i+1]);
+                continue;
+            }
+            //if the src char is one that is to be removed, skip it.
+            if (src[i] == '.' || src[i] == ':' || src[i] == '\\' || src[i] == '"') {
+                continue;
+            }
+            //copy over the current char.
+            dst[dstIndex++] = src[i];
+        }
+        //at this point, dstIndex is 1 greater than the last valid index position in dst
+        //or in other words it represents the count.
+        return new String(dst, 0, dstIndex);
+    }
+
+    /**
+     * Encodes the given synth state as if it were specified in java code, such as
+     * <p/>
+     * SynthConstants.ENABLED | SynthConstants.MOUSE_OVER
+     */
+    static String toJavaList(int state) {
+        StringBuffer buffer = new StringBuffer();
+        if ((state & SynthConstants.DEFAULT) == SynthConstants.DEFAULT) {
+            buffer.append("SynthConstants.DEFAULT");
+        }
+        if ((state & SynthConstants.DISABLED) == SynthConstants.DISABLED) {
+            if (buffer.length() > 0) buffer.append(" | ");
+            buffer.append("SynthConstants.DISABLED");
+        }
+        if ((state & SynthConstants.ENABLED) == SynthConstants.ENABLED) {
+            if (buffer.length() > 0) buffer.append(" | ");
+            buffer.append("SynthConstants.ENABLED");
+        }
+        if ((state & SynthConstants.FOCUSED) == SynthConstants.FOCUSED) {
+            if (buffer.length() > 0) buffer.append(" | ");
+            buffer.append("SynthConstants.FOCUSED");
+        }
+        if ((state & SynthConstants.MOUSE_OVER) == SynthConstants.MOUSE_OVER) {
+            if (buffer.length() > 0) buffer.append(" | ");
+            buffer.append("SynthConstants.MOUSE_OVER");
+        }
+        if ((state & SynthConstants.PRESSED) == SynthConstants.PRESSED) {
+            if (buffer.length() > 0) buffer.append(" | ");
+            buffer.append("SynthConstants.PRESSED");
+        }
+        if ((state & SynthConstants.SELECTED) == SynthConstants.SELECTED) {
+            if (buffer.length() > 0) buffer.append(" | ");
+            buffer.append("SynthConstants.SELECTED");
+        }
+        return buffer.toString();
+    }
+
+    /**
+     * Checks the given region name to discover if it is one of the standard synth regions. If so, return the name in
+     * caps and such. Otherwise, return a big fat null.
+     * <p/>
+     * I have to do this because, unfortunately, synth's Region doesn't implement equals.
+     */
+    static String getRegionNameCaps(String regionName) {
+        if (Region.ARROW_BUTTON.getName().equals(regionName)) {
+            return "ARROW_BUTTON";
+        } else if (Region.BUTTON.getName().equals(regionName)) {
+            return "BUTTON";
+        } else if (Region.CHECK_BOX.getName().equals(regionName)) {
+            return "CHECK_BOX";
+        } else if (Region.CHECK_BOX_MENU_ITEM.getName().equals(regionName)) {
+            return "CHECK_BOX_MENU_ITEM";
+        } else if (Region.COLOR_CHOOSER.getName().equals(regionName)) {
+            return "COLOR_CHOOSER";
+        } else if (Region.COMBO_BOX.getName().equals(regionName)) {
+            return "COMBO_BOX";
+        } else if (Region.DESKTOP_ICON.getName().equals(regionName)) {
+            return "DESKTOP_ICON";
+        } else if (Region.DESKTOP_PANE.getName().equals(regionName)) {
+            return "DESKTOP_PANE";
+        } else if (Region.EDITOR_PANE.getName().equals(regionName)) {
+            return "EDITOR_PANE";
+        } else if (Region.FILE_CHOOSER.getName().equals(regionName)) {
+            return "FILE_CHOOSER";
+        } else if (Region.FORMATTED_TEXT_FIELD.getName().equals(regionName)) {
+            return "FORMATTED_TEXT_FIELD";
+        } else if (Region.INTERNAL_FRAME.getName().equals(regionName)) {
+            return "INTERNAL_FRAME";
+        } else if (Region.INTERNAL_FRAME_TITLE_PANE.getName().equals(regionName)) {
+            return "INTERNAL_FRAME_TITLE_PANE";
+        } else if (Region.LABEL.getName().equals(regionName)) {
+            return "LABEL";
+        } else if (Region.LIST.getName().equals(regionName)) {
+            return "LIST";
+        } else if (Region.MENU.getName().equals(regionName)) {
+            return "MENU";
+        } else if (Region.MENU_BAR.getName().equals(regionName)) {
+            return "MENU_BAR";
+        } else if (Region.MENU_ITEM.getName().equals(regionName)) {
+            return "MENU_ITEM";
+        } else if (Region.MENU_ITEM_ACCELERATOR.getName().equals(regionName)) {
+            return "MENU_ITEM_ACCELERATOR";
+        } else if (Region.OPTION_PANE.getName().equals(regionName)) {
+            return "OPTION_PANE";
+        } else if (Region.PANEL.getName().equals(regionName)) {
+            return "PANEL";
+        } else if (Region.PASSWORD_FIELD.getName().equals(regionName)) {
+            return "PASSWORD_FIELD";
+        } else if (Region.POPUP_MENU.getName().equals(regionName)) {
+            return "POPUP_MENU";
+        } else if (Region.POPUP_MENU_SEPARATOR.getName().equals(regionName)) {
+            return "POPUP_MENU_SEPARATOR";
+        } else if (Region.PROGRESS_BAR.getName().equals(regionName)) {
+            return "PROGRESS_BAR";
+        } else if (Region.RADIO_BUTTON.getName().equals(regionName)) {
+            return "RADIO_BUTTON";
+        } else if (Region.RADIO_BUTTON_MENU_ITEM.getName().equals(regionName)) {
+            return "RADIO_BUTTON_MENU_ITEM";
+        } else if (Region.ROOT_PANE.getName().equals(regionName)) {
+            return "ROOT_PANE";
+        } else if (Region.SCROLL_BAR.getName().equals(regionName)) {
+            return "SCROLL_BAR";
+        } else if (Region.SCROLL_BAR_THUMB.getName().equals(regionName)) {
+            return "SCROLL_BAR_THUMB";
+        } else if (Region.SCROLL_BAR_TRACK.getName().equals(regionName)) {
+            return "SCROLL_BAR_TRACK";
+        } else if (Region.SCROLL_PANE.getName().equals(regionName)) {
+            return "SCROLL_PANE";
+        } else if (Region.SEPARATOR.getName().equals(regionName)) {
+            return "SEPARATOR";
+        } else if (Region.SLIDER.getName().equals(regionName)) {
+            return "SLIDER";
+        } else if (Region.SLIDER_THUMB.getName().equals(regionName)) {
+            return "SLIDER_THUMB";
+        } else if (Region.SLIDER_TRACK.getName().equals(regionName)) {
+            return "SLIDER_TRACK";
+        } else if (Region.SPINNER.getName().equals(regionName)) {
+            return "SPINNER";
+        } else if (Region.SPLIT_PANE.getName().equals(regionName)) {
+            return "SPLIT_PANE";
+        } else if (Region.SPLIT_PANE_DIVIDER.getName().equals(regionName)) {
+            return "SPLIT_PANE_DIVIDER";
+        } else if (Region.TABBED_PANE.getName().equals(regionName)) {
+            return "TABBED_PANE";
+        } else if (Region.TABBED_PANE_CONTENT.getName().equals(regionName)) {
+            return "TABBED_PANE_CONTENT";
+        } else if (Region.TABBED_PANE_TAB.getName().equals(regionName)) {
+            return "TABBED_PANE_TAB";
+        } else if (Region.TABBED_PANE_TAB_AREA.getName().equals(regionName)) {
+            return "TABBED_PANE_TAB_AREA";
+        } else if (Region.TABLE.getName().equals(regionName)) {
+            return "TABLE";
+        } else if (Region.TABLE_HEADER.getName().equals(regionName)) {
+            return "TABLE_HEADER";
+        } else if (Region.TEXT_AREA.getName().equals(regionName)) {
+            return "TEXT_AREA";
+        } else if (Region.TEXT_FIELD.getName().equals(regionName)) {
+            return "TEXT_FIELD";
+        } else if (Region.TEXT_PANE.getName().equals(regionName)) {
+            return "TEXT_PANE";
+        } else if (Region.TOGGLE_BUTTON.getName().equals(regionName)) {
+            return "TOGGLE_BUTTON";
+        } else if (Region.TOOL_BAR.getName().equals(regionName)) {
+            return "TOOL_BAR";
+        } else if (Region.TOOL_BAR_CONTENT.getName().equals(regionName)) {
+            return "TOOL_BAR_CONTENT";
+        } else if (Region.TOOL_BAR_DRAG_WINDOW.getName().equals(regionName)) {
+            return "TOOL_BAR_DRAG_WINDOW";
+        } else if (Region.TOOL_BAR_SEPARATOR.getName().equals(regionName)) {
+            return "TOOL_BAR_SEPARATOR";
+        } else if (Region.TOOL_TIP.getName().equals(regionName)) {
+            return "TOOL_TIP";
+        } else if (Region.TREE.getName().equals(regionName)) {
+            return "TREE";
+        } else if (Region.TREE_CELL.getName().equals(regionName)) {
+            return "TREE_CELL";
+        } else if (Region.VIEWPORT.getName().equals(regionName)) {
+            return "VIEWPORT";
+        }
+        System.err.println("[Info] Couldn't find a Region for " + regionName);
+        return null;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/ObjectCodeConvertors.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.generator;
+
+import java.awt.*;
+
+/**
+ * ObjectCodeConvertors
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class ObjectCodeConvertors {
+    static java.math.MathContext ctx = new java.math.MathContext(3);
+
+    /**
+     * Given a value (x), encode it such that 0 -> 1 is to the left of a, 1 -> 2 is between a and b, and 2 -> 3
+     * is to the right of b.
+     *
+     * @param w width in the case of the x axis, height in the case of the y axis.
+     */
+    static float encode(float x, float a, float b, float w) {
+        float r = 0;
+        if (x < a) {
+            r = (x / a);
+        } else if (x > b) {
+            r = 2 + ((x - b) / (w - b));
+        } else if (x == a && x == b) {
+            return 1.5f;
+        } else {
+            r = 1 + ((x - a) / (b - a));
+        }
+
+        if (Float.isNaN(r)) {
+            System.err.println("[Error] Encountered NaN: encode(" + x + ", " + a + ", " + b + ", " + w + ")");
+            return 0;
+        } else if (Float.isInfinite(r)) {
+            System.err.println("[Error] Encountered Infinity: encode(" + x + ", " + a + ", " + b + ", " + w + ")");
+            return 0;
+        } else if (r < 0) {
+            System.err.println("[Error] encoded value was less than 0: encode(" + x + ", " + a + ", " + b + ", " + w + ")");
+            return 0;
+        } else if (r > 3) {
+            System.err.println("[Error] encoded value was greater than 3: encode(" + x + ", " + a + ", " + b + ", " + w + ")");
+            return 3;
+        } else {
+            //for prettyness sake (and since we aren't really going to miss
+            //any accuracy here) I'm rounding this to 3 decimal places
+//                return java.math.BigDecimal.valueOf(r).round(ctx).doubleValue();
+            return r;
+        }
+    }
+
+    static String convert(Paint paint) {
+        //TODO need to support writing out other Paints, such as gradients
+        if (paint instanceof Color) {
+            return convert((Color) paint);
+        } else {
+            System.err.println("[WARNING] Unable to encode a paint in the encode(Paint) method: " + paint);
+            return "null";
+        }
+    }
+
+    /**
+     * Given a Color, write out the java code required to create a new Color.
+     *
+     * @param color The color to convert
+     * @return String of the code for the color
+     */
+    static String convert(Color color) {
+        return "new Color(" +
+                color.getRed() + ", " +
+                color.getGreen() + ", " +
+                color.getBlue() + ", " +
+                color.getAlpha() + ")";
+    }
+
+    static String convert(Insets i) {
+        return "new Insets(" + i.top + ", " + i.left + ", " + i.bottom + ", " + i.right + ")";
+    }
+
+    static String convert(Dimension d) {
+        return "new Dimension(" + d.width + ", " + d.height + ")";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/PainterGenerator.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,758 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.generator;
+
+import org.jdesktop.swingx.designer.BezierControlPoint;
+import org.jdesktop.swingx.designer.Canvas;
+import org.jdesktop.swingx.designer.EllipseShape;
+import org.jdesktop.swingx.designer.Layer;
+import org.jdesktop.swingx.designer.PaintedShape;
+import org.jdesktop.swingx.designer.PathShape;
+import org.jdesktop.swingx.designer.RectangleShape;
+import org.jdesktop.swingx.designer.SimpleShape;
+import org.jdesktop.swingx.designer.TemplateLayer;
+import org.jdesktop.swingx.designer.paint.Gradient;
+import org.jdesktop.swingx.designer.paint.Matte;
+import org.jdesktop.swingx.designer.paint.PaintModel;
+import org.jdesktop.swingx.designer.paint.RadialGradient;
+import org.jdesktop.swingx.designer.paint.GradientStop;
+import org.jdesktop.swingx.designer.paint.AbstractGradient;
+import static org.jdesktop.synthdesigner.generator.GeneratorUtils.makePretty;
+import static org.jdesktop.synthdesigner.generator.GeneratorUtils.toClassName;
+import static org.jdesktop.synthdesigner.generator.GeneratorUtils.toConstantName;
+import static org.jdesktop.synthdesigner.generator.TemplateWriter.read;
+import static org.jdesktop.synthdesigner.generator.TemplateWriter.writeSrcFile;
+import org.jdesktop.synthdesigner.synthmodel.UIIconRegion;
+import org.jdesktop.synthdesigner.synthmodel.UIRegion;
+import org.jdesktop.synthdesigner.synthmodel.UIState;
+
+import java.awt.*;
+import java.awt.geom.Point2D;
+import java.beans.Beans;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.swing.JComponent;
+import javax.swing.SwingUtilities;
+import javax.swing.JList;
+import javax.swing.JTable;
+import javax.swing.text.JTextComponent;
+
+/**
+ * PainterGenerator - Class for generating Painter class java source from a Canvas
+ *
+ * Following in the general theory that is used to generate a Painter file.
+ *
+ * Each Painter file represents a Region. So there is one painter file per region. In
+ * skin.laf we support Icon subregions, which are really just hacked versions of the
+ * parent region.
+ *
+ * In order to generate the most compact and efficient bytecode possible for the
+ * Painters, we actually perform the generation sequence in two steps. The first
+ * step is the analysis phase, where we walk through the SynthModel for the region
+ * and discover commonality among the different states in the region. For example,
+ * do they have common paths? Do they have common colors? Gradients? Is the painting
+ * code for the different states identical other than for colors?
+ *
+ * We gather this information up. On the second pass, we use this data to determine the
+ * methods that need to be generated, and the class variables that need to be generated.
+ * We try to keep the actual bytecode count as small as possible so that we may reduce
+ * the overall size of the look and feel significantly.
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class PainterGenerator {
+    private static String painterImplTemplate;
+    private static String getPainterImplTemplate() {
+        if (painterImplTemplate == null) {
+            //load the painter template file into an in-memory string to improve performance
+            //when generating a lot of classes
+            try {
+                painterImplTemplate = read("resources/PainterImpl.template");
+            } catch (IOException e) {
+                System.err.println("Failed to read template files.");
+                throw new RuntimeException(e);
+            }
+        }
+        return painterImplTemplate;
+    }
+
+
+    //a handful of counters, incremented whenever the associated object type is encounted.
+    //These counters form the basis of the field and method suffixes.
+    //These are all 1 based, because I felt like it :-)
+    private int colorCounter = 1;
+    private int gradientCounter = 1;
+    private int radialCounter = 1;
+    private int pathCounter = 1;
+    private int rectCounter = 1;
+    private int roundRectCounter = 1;
+    private int ellipseCounter = 1;
+
+    private int stateTypeCounter = 1;
+
+    //during the first pass, we will construct these maps
+    private Map<String, String> colors = new HashMap<String, String>();
+    /**
+     * Code=>method name.
+     */
+    private Map<String, String> methods = new HashMap<String, String>();
+
+    //these variables hold the generated code
+    /**
+     * The source code in this variable will be used to define the various state types
+     */
+    private StringBuilder stateTypeCode = new StringBuilder();
+    /**
+     * The source code in this variable will be used to define the switch statement for painting
+     */
+    private StringBuilder switchCode = new StringBuilder();
+    /**
+     * The source code in this variable will be used to define the methods for painting each state
+     */
+    private StringBuilder paintingCode = new StringBuilder();
+    /**
+     * The source code in this variable will be used to add getExtendedCacheKeys
+     * implementation if needed.
+     */
+    private StringBuilder getExtendedCacheKeysCode = new StringBuilder();
+    /**
+     * The source code in this variable will be used to define the methods for decoding gradients
+     * and shapes.
+     */
+    private StringBuilder gradientsCode = new StringBuilder();
+    private StringBuilder colorCode = new StringBuilder();
+    private StringBuilder shapesCode = new StringBuilder();
+    /**
+     * Map of component colors keyed by state constant name
+     */
+    private Map<String, List<ComponentColor>> componentColorsMap =
+            new LinkedHashMap<String, List<ComponentColor>>();
+    /**
+     * For the current state the list of all component colors used by this
+     * painter, the index in this list is also the index in the runtime array
+     * of defaults and keys.
+     */
+    private List<ComponentColor> componentColors = null;
+
+    PainterGenerator(UIRegion r) {
+        generate(r);
+    }
+
+    private void generate(UIRegion r) {
+        for (UIState state : r.getBackgroundStates()) {
+            System.out.println("------>" + state.getName());
+
+            Canvas canvas = state.getCanvas();
+            String type = r instanceof UIIconRegion ? ((UIIconRegion)r).getKey() : "Background";
+            generate(state, canvas, type);
+        }
+        for (UIState state : r.getForegroundStates()) {
+            Canvas canvas = state.getCanvas();
+            generate(state, canvas, "Foreground");
+        }
+        for (UIState state : r.getBorderStates()) {
+            Canvas canvas = state.getCanvas();
+            generate(state, canvas, "Border");
+        }
+        //now check for any uiIconRegions, since these are collapsed together.
+        for (UIRegion sub : r.getSubRegions()) {
+            if (sub instanceof UIIconRegion) {
+                generate(sub);
+            }
+        }
+        //generate all the code for component colors
+        if (!componentColorsMap.isEmpty()) {
+            getExtendedCacheKeysCode
+                    .append("    protected Object[] getExtendedCacheKeys(JComponent c) {\n")
+                    .append("        Object[] extendedCacheKeys = null;\n")
+                    .append("        switch(state) {\n");
+            for (Map.Entry<String, List<ComponentColor>> entry : componentColorsMap.entrySet()) {
+                getExtendedCacheKeysCode
+                    .append("            case ")
+                    .append(entry.getKey()).append(":\n")
+                    .append("                extendedCacheKeys = new Object[] {\n");
+                for (int i=0; i<entry.getValue().size(); i++) {
+                    ComponentColor cc = entry.getValue().get(i);
+                    getExtendedCacheKeysCode
+                    .append("                     getComponentColor(c, \"")
+                    .append(cc.propertyName).append("\", ")
+                    .append(cc.defaultColorVariableName).append(", ")
+                    .append(cc.saturationOffset).append("f, ")
+                    .append(cc.brightnessOffset).append("f, ")
+                    .append(cc.alphaOffset);
+                    if (i + 1 < entry.getValue().size()) {
+                        getExtendedCacheKeysCode.append("),\n");
+                    } else {
+                        getExtendedCacheKeysCode.append(")");
+                    }
+                }
+                getExtendedCacheKeysCode.append("};\n")
+                    .append("                break;\n");
+            }
+            getExtendedCacheKeysCode
+                    .append("        }\n")
+                    .append("        return extendedCacheKeys;\n")
+                    .append("    }");
+        }
+    }
+
+    //type is background, foreground, border, upArrowIcon, etc.
+    private void generate(UIState state, Canvas canvas, String type) {
+        String states = UIState.keysToString(state.getStateKeys());
+        String stateType = toConstantName(type + "_" + states);
+        String paintMethodName = "paint" + type + toClassName(states);
+        //create new array for component colors for this state
+        componentColors = new ArrayList<ComponentColor>();
+
+        stateTypeCode.append("    static final int ").append(stateType).append(" = ").append(stateTypeCounter++).append(";\n");
+
+        if (canvas.isBlank()) {
+            return;
+        }
+
+        switchCode.append("            case ").append(stateType).append(": ").append(paintMethodName).append("(g); break;\n");
+        paintingCode.append("    private void ").append(paintMethodName).append("(Graphics2D g) {\n");
+
+        //start by setting up common info needed to encode the control points
+        Insets in = canvas.getStretchingInsets();
+        float a = in.left;
+        float b = canvas.getSize().width - in.right;
+        float c = in.top;
+        float d = canvas.getSize().height - in.bottom;
+        float width = canvas.getSize().width;
+        float height = canvas.getSize().height;
+        float cw = b - a;
+        float ch = d - c;
+
+        Layer[] layers = canvas.getLayers().toArray(new Layer[0]);
+        for (int index=layers.length-1; index >= 0; index--) {
+            Layer layer = layers[index];
+            if (layer instanceof TemplateLayer) {
+                continue;
+            }
+            //shapes must be painted in reverse order
+            List<SimpleShape> shapes = layer.getShapes();
+            for (int i=shapes.size()-1; i>=0; i--) {
+                SimpleShape s = shapes.get(i);
+                if (s instanceof PaintedShape) {
+                    PaintedShape shape = (PaintedShape)s;
+                    PaintModel paint = shape.getPaintModel();
+
+                    /*
+                        We attempt to write the minimal number of bytecodes as possible when
+                        generating code. Due to the inherit complexities in determining what
+                        is extraneous, we use the following system:
+
+                        We first generate the code for the shape. Then, we check to see if
+                        this shape has already been generated. If so, then we defer to an
+                        existing method. If not, then we will create a new methods, stick
+                        the code in it, and refer to that method.
+                    */
+
+                    String shapeMethodName = null; // will contain the name of the method which creates the shape
+                    String shapeVariable = null; // will be one of rect, roundRect, ellipse, or path.
+                    String shapeMethodBody = null;
+
+                    if (shape instanceof RectangleShape) {
+                        RectangleShape rshape = (RectangleShape) shape;
+                        float x1 = encode((float)rshape.getX1(), a, b, width);
+                        float y1 = encode((float)rshape.getY1(), c, d, height);
+                        float x2 = encode((float)rshape.getX2(), a, b, width);
+                        float y2 = encode((float)rshape.getY2(), c, d, height);
+                        if (rshape.isRounded()) {
+                            //it is a rounded rectangle
+                            float rounding = (float)rshape.getRounding();
+
+                            shapeMethodBody =
+                                    "        roundRect.setRoundRect(" +
+                                    writeDecodeX(x1) + ", //x\n" +
+                                    "                               " + writeDecodeY(y1) + ", //y\n" +
+                                    "                               " + writeDecodeX(x2) + " - " + writeDecodeX(x1) + ", //width\n" +
+                                    "                               " + writeDecodeY(y2) + " - " + writeDecodeY(y1) + ", //height\n" +
+                                    "                               " + rounding + "f, " + rounding + "f); //rounding";
+                            shapeVariable = "roundRect";
+                        } else {
+                            shapeMethodBody =
+                                    "            rect.setRect(" +
+                                    writeDecodeX(x1) + ", //x\n" +
+                                    "                         " + writeDecodeY(y1) + ", //y\n" +
+                                    "                         " + writeDecodeX(x2) + " - " + writeDecodeX(x1) + ", //width\n" +
+                                    "                         " + writeDecodeY(y2) + " - " + writeDecodeY(y1) + "); //height";
+                            shapeVariable = "rect";
+                        }
+                    } else if (shape instanceof EllipseShape) {
+                        EllipseShape eshape = (EllipseShape) shape;
+                        float x1 = encode((float)eshape.getX1(), a, b, width);
+                        float y1 = encode((float)eshape.getY1(), c, d, height);
+                        float x2 = encode((float)eshape.getX2(), a, b, width);
+                        float y2 = encode((float)eshape.getY2(), c, d, height);
+                        shapeMethodBody =
+                                "        ellipse.setFrame(" +
+                                writeDecodeX(x1) + ", //x\n" +
+                                "                         " + writeDecodeY(y1) + ", //y\n" +
+                                "                         " + writeDecodeX(x2) + " - " + writeDecodeX(x1) + ", //width\n" +
+                                "                         " + writeDecodeY(y2) + " - " + writeDecodeY(y1) + "); //height";
+                        shapeVariable = "ellipse";
+                    } else if (shape instanceof PathShape) {
+                        PathShape pshape = (PathShape) shape;
+                        List<BezierControlPoint> controlPoints = pshape.getBezierControlPoints();
+                        BezierControlPoint first, last;
+                        first = last = controlPoints.get(0);
+                        StringBuilder buffer = new StringBuilder();
+                        buffer.append("        path.reset();\n");
+                        buffer.append("        path.moveTo(" + writeDecodeX(encode((float)first.getX(), a, b, width)) + ", " + writeDecodeY(encode((float)first.getY(), c, d, height)) + ");\n");
+                        for (int j=1; j<controlPoints.size(); j++) {
+                            BezierControlPoint cp = controlPoints.get(j);
+                            if (last.getCp2().isSharp() && cp.getCp1().isSharp()) {
+                                float x = encode((float)cp.getX(), a, b, width);
+                                float y = encode((float)cp.getY(), c, d, height);
+                                buffer.append("        path.lineTo(" + writeDecodeX(x) + ", " + writeDecodeY(y) + ");\n");
+                            } else {
+                                float x1 = encode((float)last.getX(), a, b, width);
+                                float y1 = encode((float)last.getY(), c, d, height);
+                                float x2 = encode((float)cp.getX(), a, b, width);
+                                float y2 = encode((float)cp.getY(), c, d, height);
+                                buffer.append(
+                                        "        path.curveTo(" + writeDecodeBezierX(x1, last.getX(), last.getCp2X()) + ", "
+                                                                + writeDecodeBezierY(y1, last.getY(), last.getCp2Y()) + ", "
+                                                                + writeDecodeBezierX(x2, cp.getX(), cp.getCp1X()) + ", "
+                                                                + writeDecodeBezierY(y2, cp.getY(), cp.getCp1Y()) + ", "
+                                                                + writeDecodeX(x2) + ", " + writeDecodeY(y2) + ");\n");
+                            }
+                            last = cp;
+                        }
+                        if (last.getCp2().isSharp() && first.getCp1().isSharp()) {
+                            float x = encode((float)first.getX(), a, b, width);
+                            float y = encode((float)first.getY(), c, d, height);
+                            buffer.append("        path.lineTo(" + writeDecodeX(x) + ", " + writeDecodeY(y) + ");\n");
+                        } else {
+                            float x1 = encode((float)last.getX(), a, b, width);
+                            float y1 = encode((float)last.getY(), c, d, height);
+                            float x2 = encode((float)first.getX(), a, b, width);
+                            float y2 = encode((float)first.getY(), c, d, height);
+                            buffer.append(
+                                    "        path.curveTo(" + writeDecodeBezierX(x1, last.getX(), last.getCp2X()) + ", "
+                                                            + writeDecodeBezierY(y1, last.getY(), last.getCp2Y()) + ", "
+                                                            + writeDecodeBezierX(x2, first.getX(), first.getCp1X()) + ", "
+                                                            + writeDecodeBezierY(y2, first.getY(), first.getCp1Y()) + ", "
+                                                            + writeDecodeX(x2) + ", " + writeDecodeY(y2) + ");\n");
+                        }
+                        buffer.append("        path.closePath();");
+                        shapeMethodBody = buffer.toString();
+                        shapeVariable = "path";
+                    } else {
+                        throw new RuntimeException("Cannot happen unless a new Shape has been defined");
+                    }
+
+                    //now that we have the shape defined in shapeMethodBody, and a shapeVariable name,
+                    //look to see if such a body has been previously defined.
+                    shapeMethodName = methods.get(shapeMethodBody);
+                    String returnType = null;
+                    if (shapeMethodName == null) {
+                        if ("rect".equals(shapeVariable)) {
+                            shapeMethodName = "decodeRect" + rectCounter++;
+                            returnType = "Rectangle2D";
+                        } else if ("roundRect".equals(shapeVariable)) {
+                            shapeMethodName = "decodeRoundRect" + roundRectCounter++;
+                            returnType = "RoundRectangle2D";
+                        } else if ("ellipse".equals(shapeVariable)) {
+                            shapeMethodName = "decodeEllipse" + ellipseCounter++;
+                            returnType = "Ellipse2D";
+                        } else {
+                            shapeMethodName = "decodePath" + pathCounter++;
+                            returnType = "Path2D";
+                        }
+                        methods.put(shapeMethodBody, shapeMethodName);
+
+                        //since the method wasn't previously defined, time to define it
+                        shapesCode.append("    private ").append(returnType).append(" ").append(shapeMethodName).append("() {\n");
+                        shapesCode.append(shapeMethodBody);
+                        shapesCode.append("\n");
+                        shapesCode.append("        return " + shapeVariable + ";\n");
+                        shapesCode.append("    }\n\n");
+                    }
+
+                    //now that the method has been defined, I can go on and decode the
+                    //paint. After the paint is decoded, I can write the g.fill() method call,
+                    //using the result of the shapeMethodName. Yay!
+
+//            if (shapeVariable != null) {
+                //first, calculate the bounds of the shape being painted and store in variables
+                    paintingCode.append("        ").append(shapeVariable).append(" = ").append(shapeMethodName).append("();\n");
+
+                    if (paint instanceof Matte) {
+                        String colorVariable = encodeMatte((Matte)paint);
+                        paintingCode.append("        g.setPaint(").append(colorVariable).append(");\n");
+                    } else if (paint instanceof Gradient) {
+                        String gradientMethodName = encodeGradient(shape, (Gradient)paint);
+                        paintingCode.append("        g.setPaint(").append(gradientMethodName).append("(").append(shapeVariable).append("));\n");
+                    } else if (paint instanceof RadialGradient) {
+                        String radialMethodName = encodeRadial(shape, (RadialGradient)paint);
+                        paintingCode.append("        g.setPaint(").append(radialMethodName).append("(").append(shapeVariable).append("));\n");
+                    }
+                    paintingCode.append("        g.fill(").append(shapeVariable).append(");\n");
+                }
+            }
+        }
+
+        paintingCode.append("\n    }\n\n");
+
+        //collect component colors
+        if (!componentColors.isEmpty()) {
+            componentColorsMap.put(stateType, componentColors);
+            componentColors = null;
+        }
+    }
+
+    private float encode(float x, float a, float b, float width) {
+        return ObjectCodeConvertors.encode(x, a, b, width);
+    }
+
+    private String writeDecodeX(float encodedX) {
+        return "decodeX(" + encodedX + "f)";
+    }
+
+    private String writeDecodeY(float encodedY) {
+        return "decodeY(" + encodedY + "f)";
+    }
+
+    /**
+     *
+     * @param ex encoded x value
+     * @param x unencoded x value
+     * @param cpx unencoded cpx value
+     * @return
+     */
+    private static String writeDecodeBezierX(double ex, double x, double cpx) {
+        return "decodeAnchorX(" + ex + "f, " + (cpx - x) + "f)";
+    }
+
+    /**
+     *
+     * @param ey encoded y value
+     * @param y unencoded y value
+     * @param cpy unencoded cpy value
+     * @return
+     */
+    private static String writeDecodeBezierY(double ey, double y, double cpy) {
+        return "decodeAnchorY(" + ey + "f, " + (cpy - y) + "f)";
+    }
+
+    private String encodeMatte(Matte m) {
+        String declaration = null;
+        if (m.isAbsolute()) {
+            Color c = m.getColor();
+            declaration = ObjectCodeConvertors.convert(c);
+        } else {
+            declaration = "decodeColor(\"" + m.getUiDefaultParentName() +
+                          "\", " + m.getHueOffset() + "f, " +
+                          m.getSaturationOffset() + "f, " +
+                          m.getBrightnessOffset() + "f, " +
+                          m.getAlphaOffset() + ")";
+        }
+
+        String variableName = colors.get(declaration);
+        if (variableName == null) {
+            variableName = "color" + colorCounter++;
+            colors.put(declaration, variableName);
+            colorCode.append("    private Color ").append(variableName).append(" = ");
+            colorCode.append(declaration).append(";\n");
+        }
+        // handle component colors
+        if (m.getComponentPropertyName() != null) {
+            ComponentColor cc = new ComponentColor(m.getComponentPropertyName(),
+                    variableName, m.getSaturationOffset(),
+                    m.getBrightnessOffset(), m.getAlphaOffset());
+            int index = componentColors.indexOf(cc);
+            if (index == -1) {
+                index = componentColors.size();
+                componentColors.add(cc);
+            }
+            return "(Color)componentColors[" + index + "]";
+        } else {
+            return variableName;
+        }
+    }
+
+    private String encodeColor(Color c) {
+        String declaration = ObjectCodeConvertors.convert(c);
+        String variableName = colors.get(declaration);
+        if (variableName == null) {
+            variableName = "color" + colorCounter++;
+            colors.put(declaration, variableName);
+            colorCode.append("    private Color ").append(variableName).append(" = ");
+            colorCode.append(declaration).append(";\n");
+        }
+
+        return variableName;
+    }
+
+    private String encodeGradient(PaintedShape ps, Gradient g) {
+        StringBuilder b = new StringBuilder();
+        float x1 = (float)ps.getPaintX1();
+        float y1 = (float)ps.getPaintY1();
+        float x2 = (float)ps.getPaintX2();
+        float y2 = (float)ps.getPaintY2();
+        b.append("        return decodeGradient((");
+        b.append(x1);
+        b.append("f * w) + x, (");
+        b.append(y1);
+        b.append("f * h) + y, (");
+        b.append(x2);
+        b.append("f * w) + x, (");
+        b.append(y2);
+        b.append("f * h) + y,\n");
+        encodeGradientColorsAndFractions(g,b);
+        b.append(");");
+
+        String methodBody = b.toString();
+        String methodName = methods.get(methodBody);
+        if (methodName == null) {
+            methodName = "decodeGradient" + gradientCounter++;
+            gradientsCode.append("    private Paint ").append(methodName).append("(Shape s) {\n");
+            gradientsCode.append("        Rectangle2D bounds = s.getBounds2D();\n");
+            gradientsCode.append("        float x = (float)bounds.getX();\n");
+            gradientsCode.append("        float y = (float)bounds.getY();\n");
+            gradientsCode.append("        float w = (float)bounds.getWidth();\n");
+            gradientsCode.append("        float h = (float)bounds.getHeight();\n");
+            gradientsCode.append(methodBody);
+            gradientsCode.append("\n    }\n\n");
+            methods.put(methodBody, methodName);
+        }
+        return methodName;
+    }
+
+    /**
+     * Takes a abstract gradient and creates the code for the fractions float
+     * array and the colors array that can be used in the constructors of linear
+     * and radial gradients.
+     *
+     * @param g The abstract gradient to get stops from
+     * @param b Append code string of the form "new float[]{...},
+     *          new Color[]{...}" to this StringBuilder
+     */
+    private void encodeGradientColorsAndFractions(AbstractGradient g,
+                                                    StringBuilder b) {
+        List<GradientStop> stops = g.getStops();
+        // there are stops.size() number of main stops. Between each is a
+        // fractional stop. Thus, there are: stops.size() + stops.size() - 1
+        // number of fractions and colors.
+        float[] fractions = new float[stops.size() + stops.size() - 1];
+        String[] colors = new String[fractions.length];
+        //for each stop, create the stop and it's associated fraction
+        int index = 0; // the index into fractions and colors
+        for (int i = 0; i < stops.size(); i++) {
+            GradientStop s = stops.get(i);
+            //copy over the stop's data
+            colors[index] = encodeMatte(s.getColor());
+            fractions[index] = s.getPosition();
+
+            //If this isn't the last stop, then add in the fraction
+            if (index < fractions.length - 1) {
+                float f1 = s.getPosition();
+                float f2 = stops.get(i + 1).getPosition();
+                index++;
+                fractions[index] = f1 + (f2 - f1) * s.getMidpoint();
+                colors[index] = "decodeColor("+
+                        colors[index - 1]+","+
+                        encodeMatte(stops.get(i + 1).getColor())+",0.5f)";
+            }
+            index++;
+        }
+        // Check boundry conditions
+        for (int i = 1; i < fractions.length; i++) {
+            //to avoid an error with LinearGradientPaint where two fractions
+            //are identical, bump up the fraction value by a miniscule amount
+            //if it is identical to the previous one
+            //NOTE: The <= is critical because the previous value may already
+            //have been bumped up
+            if (fractions[i] <= fractions[i - 1]) {
+                fractions[i] = fractions[i - 1] + .000001f;
+            }
+        }
+        //another boundary condition where multiple stops are all at the end. The
+        //previous loop bumped all but one of these past 1.0, which is bad.
+        //so remove any fractions (and their colors!) that are beyond 1.0
+        int outOfBoundsIndex = -1;
+        for (int i = 0; i < fractions.length; i++) {
+            if (fractions[i] > 1) {
+                outOfBoundsIndex = i;
+                break;
+            }
+        }
+        if (outOfBoundsIndex >= 0) {
+            float[] f = fractions;
+            String[] c = colors;
+            fractions = new float[outOfBoundsIndex];
+            colors = new String[outOfBoundsIndex];
+            System.arraycopy(f, 0, fractions, 0, outOfBoundsIndex);
+            System.arraycopy(c, 0, colors, 0, outOfBoundsIndex);
+        }
+        // build string
+        b.append("                new float[] { ");
+        for (int i = 0; i < fractions.length; i++) {
+            if (i>0)b.append(',');
+            b.append(fractions[i]);
+            b.append('f');
+        }
+        b.append(" },\n                new Color[] { ");
+        for (int i = 0; i < colors.length; i++) {
+            if (i>0) b.append(",\n                            ");
+            b.append(colors[i]);
+        }
+        b.append("}");
+    }
+
+    private String encodeRadial(PaintedShape ps, RadialGradient g) {
+        float centerX1 = (float)ps.getPaintX1();
+        float centerY1 = (float)ps.getPaintY1();
+        float x2 = (float)ps.getPaintX2();
+        float y2 = (float)ps.getPaintY2();
+        float radius = (float)Point2D.distance(centerX1, centerY1, x2, y2);
+        StringBuilder b = new StringBuilder();
+
+        b.append("        return decodeRadialGradient((");
+        b.append(centerX1);
+        b.append("f * w) + x, (");
+        b.append(centerY1);
+        b.append("f * h) + y, ");
+        b.append(radius);
+        b.append("f,\n");
+        encodeGradientColorsAndFractions(g,b);
+        b.append(");");
+
+        String methodBody = b.toString();
+        String methodName = methods.get(methodBody);
+        if (methodName == null) {
+            methodName = "decodeRadial" + radialCounter++;
+            gradientsCode.append("    private Paint ").append(methodName).append("(Shape s) {\n");
+            gradientsCode.append("        Rectangle2D bounds = s.getBounds2D();\n");
+            gradientsCode.append("        float x = (float)bounds.getX();\n");
+            gradientsCode.append("        float y = (float)bounds.getY();\n");
+            gradientsCode.append("        float w = (float)bounds.getWidth();\n");
+            gradientsCode.append("        float h = (float)bounds.getHeight();\n");
+            gradientsCode.append(methodBody);
+            gradientsCode.append("\n    }\n\n");
+            methods.put(methodBody, methodName);
+        }
+        return methodName;
+    }
+
+    //note that this method is not thread-safe. In fact, none of this class is.
+    static void writePainter(UIRegion r, Map<String, String> variables, File painterPackageRoot, String prefix) throws IOException {
+        //Need only write out the stuff for this region, don't need to worry about subregions
+        //since this method will be called for each of those (and they go in their own file, anyway).
+        //The only subregion that we compound into this is the one for icons.
+
+        String painterName = makePretty(prefix) + "Painter";
+        PainterGenerator gen = new PainterGenerator(r);
+        System.out.println("Generating source file: " + painterName + ".java");
+        System.out.println(gen.stateTypeCode.toString());
+        variables.put("PAINTER_NAME", painterName);
+        variables.put("STATIC_DECL", gen.stateTypeCode.toString());
+        variables.put("COLORS_DECL", gen.colorCode.toString());
+        variables.put("DO_PAINT_SWITCH_BODY", gen.switchCode.toString());
+        variables.put("PAINTING_DECL", gen.paintingCode.toString());
+        variables.put("GET_EXTENDED_CACHE_KEYS", gen.getExtendedCacheKeysCode.toString());
+        variables.put("SHAPES_DECL", gen.shapesCode.toString());
+        variables.put("GRADIENTS_DECL", gen.gradientsCode.toString());
+
+        writeSrcFile(getPainterImplTemplate(), variables, new File(painterPackageRoot, painterName + ".java"));
+
+        variables.remove("PAINTER_NAME");
+        variables.remove("STATIC_DECL");
+        variables.remove("COLORS_DECL");
+        variables.remove("DO_PAINT_SWITCH_BODY");
+        variables.remove("PAINTING_DECL");
+        variables.remove("SHAPES_DECL");
+        variables.remove("GRADIENTS_DECL");
+    }
+
+    /**
+     * Represents the usage of a color from a component within a painter. That
+     * is, a painter can use colors from the component when it paints. This
+     * class represents the usage of such a color, containing a reference to
+     * the name of the property that contains the color, and the various
+     * derivation offsets to apply to that color.
+     */
+    private static class ComponentColor {
+        public String propertyName;
+        public String defaultColorVariableName;
+        private float saturationOffset = 0, brightnessOffset = 0;
+        private int alphaOffset = 0;
+
+        private ComponentColor(String propertyName,
+                               String defaultColorVariableName,
+                               float saturationOffset,
+                               float brightnessOffset,
+                               int alphaOffset) {
+            this.propertyName = propertyName;
+            this.defaultColorVariableName = defaultColorVariableName;
+            this.saturationOffset = saturationOffset;
+            this.brightnessOffset = brightnessOffset;
+            this.alphaOffset = alphaOffset;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (o == null || getClass() != o.getClass()) return false;
+
+            ComponentColor c = (ComponentColor)o;
+            if (alphaOffset != c.alphaOffset) return false;
+            if (Float.compare(saturationOffset, c.saturationOffset) != 0)
+                return false;
+            if (Float.compare(brightnessOffset, c.brightnessOffset) != 0)
+                return false;
+            if (defaultColorVariableName != null ?
+                    !defaultColorVariableName.equals(c.defaultColorVariableName) :
+                    c.defaultColorVariableName != null) return false;
+            if (propertyName != null ? !propertyName.equals(c.propertyName) :
+                    c.propertyName != null) return false;
+            return true;
+        }
+
+        @Override
+        public int hashCode() {
+            int hash = 5;
+            hash = 61 * hash + (this.propertyName != null ?
+                this.propertyName.hashCode() : 0);
+            hash = 61 * hash + (this.defaultColorVariableName != null ?
+                this.defaultColorVariableName.hashCode() : 0);
+            hash = 61 * hash + Float.floatToIntBits(this.saturationOffset);
+            hash = 61 * hash + Float.floatToIntBits(this.brightnessOffset);
+            hash = 61 * hash + this.alphaOffset;
+            return hash;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/TemplateWriter.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.generator;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.io.StringReader;
+import java.util.Map;
+
+/**
+ * TemplateWriter - Class for writing Java Source files using a src template and variable subsitution
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class TemplateWriter {
+
+    /**
+     * Write a Java source file by taking a template file and applying variable substitution and writing to the output
+     * file.
+     *
+     * @param template  The template to use
+     * @param variables Map of the variable names and values to substitute in the template
+     * @param output    The file to write to
+     * @throws IOException If there was a problem writing the Java source file
+     */
+    static void writeSrcFile(String template, Map<String, String> variables, File output) throws IOException {
+        TemplateReader in = new TemplateReader(variables, template);
+        PrintWriter out =
+                new PrintWriter(new FileWriter(output));
+
+        String line = in.readLine();
+        while (line != null) {
+            out.println(line);
+            line = in.readLine();
+        }
+
+        out.close();
+    }
+
+    /**
+     * Read a template file into a string
+     *
+     * @param name The template file path relative to Generator class
+     * @return The contents of the template file as string
+     * @throws IOException If there was a problem reading the template file
+     */
+    static String read(String name) throws IOException {
+        InputStream in = Generator.class.getResourceAsStream(name);
+        if (in==null) throw new IOException("Could not find template ["+name+
+                "] relative to class ["+Generator.class.getName()+"]");
+        byte[] data = new byte[4096];
+        int length = -1;
+        StringBuilder buffer = new StringBuilder();
+        while ((length = in.read(data)) != -1) {
+            buffer.append(new String(data, 0, length));
+        }
+        return buffer.toString();
+    }
+
+    /** A BufferedReader implementation that automatically performs string replacements as needed. */
+    private static final class TemplateReader extends BufferedReader {
+        private Map<String, String> variables;
+
+        TemplateReader(Map<String, String> variables, String template) {
+            super(new StringReader(template));
+            this.variables = variables;
+        }
+
+        /**
+         * @return a line of text from the template but with variables substituted. Other methods will return the text
+         *         sans substitution. Call this method.
+         * @throws java.io.IOException
+         */
+        public String readLine() throws IOException {
+            return substituteVariables(super.readLine());
+        }
+
+        private String substituteVariables(String input) {
+            if (input == null) return null;
+            for (Map.Entry<String, String> variable : variables.entrySet()) {
+                input = input.replace("${" + variable.getKey() + "}", variable.getValue());
+            }
+            return input;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/CustomUIDefault.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+/**
+ * CustomUIDefault
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class CustomUIDefault<T> extends UIDefault<T> {
+    private static int counter = -1;
+
+    public CustomUIDefault() {
+        super("Unnamed" + (++counter == 0 ? "" : counter), null);
+    }
+
+    public void setName(String id) {
+        super.setName(id);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/HasUIStyle.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+/**
+ * HasUIStyle - A marker interface for all classes that have a UIStyle
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public interface HasUIStyle {
+
+    public UIStyle getStyle();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/PainterBorder.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import javax.swing.border.EmptyBorder;
+
+/**
+ * Represents a border that refers to a Painter to do it's work. This border
+ * doesn't actually render -- it is just used as part of the model.
+ *
+ * @author Richard Bair
+ */
+public class PainterBorder extends EmptyBorder {
+    private String painterName;
+    public PainterBorder(String painterName, int top, int left, int bottom, int right) {
+        super(top, left, bottom, right);
+        this.painterName = painterName;
+    }
+
+    public String getPainterName() { return painterName; }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/SynthModel.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,530 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import org.jdesktop.beans.AbstractBean;
+import org.jdesktop.swingx.designer.utils.HasResources;
+import org.jdesktop.swingx.designer.utils.HasUIDefaults;
+import org.jibx.runtime.IUnmarshallingContext;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JColorChooser;
+import javax.swing.JComboBox;
+import javax.swing.JDesktopPane;
+import javax.swing.JEditorPane;
+import javax.swing.JFileChooser;
+import javax.swing.JFormattedTextField;
+import javax.swing.JInternalFrame;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JPopupMenu;
+import javax.swing.JProgressBar;
+import javax.swing.JRadioButton;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.JRootPane;
+import javax.swing.JScrollBar;
+import javax.swing.JScrollPane;
+import javax.swing.JSeparator;
+import javax.swing.JSlider;
+import javax.swing.JSpinner;
+import javax.swing.JSplitPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.JTextPane;
+import javax.swing.JToggleButton;
+import javax.swing.JToolBar;
+import javax.swing.JToolTip;
+import javax.swing.JTree;
+import javax.swing.JViewport;
+import javax.swing.UIDefaults;
+import javax.swing.plaf.basic.BasicLookAndFeel;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+import static javax.swing.plaf.synth.SynthConstants.*;
+import javax.swing.table.JTableHeader;
+import java.awt.Insets;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Models a Synth look and feel. Contains all of the colors, fonts, painters, states, etc that compose a synth look and
+ * feel.
+ * <p/>
+ * To model Synth properly, I need to both Model the way Synth works (with styles, and so forth) and the way a look and
+ * feel works (UIDefaults table, etc) since both of these are supported ways of doing things in Synth.
+ * <p/>
+ * One important (but non-visual) thing that needs to be configurable is the support for InputMaps per component. In
+ * Synth, an input map can be associated with the main Synth element, meaning it applies to everything. Or it can be
+ * associated with a single style. An Inputmap can have an id, and it can contain multiple key/action pairs (where
+ * actions are denoted by name).
+ * <p/>
+ * It looks like Regions can have InputMaps? Sounds fishy to me. I think only Components really have input maps.
+ * <p/>
+ * I would like some way of denoting special keys between mac and other platforms. For example, cut, copy, paste etc
+ * should be different. In general, the ctrl key and apple (meta) key are reversed from what is typically on windows.
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class SynthModel extends AbstractBean implements HasUIDefaults, HasUIStyle, HasResources {
+    //I'm going to want:
+    //entries related to the Control color, and other colors of the Basic LAF
+    //entries related to fonts (standard fonts) used in the Basic LAF
+    //entries related to standard insets, borders, dimensions, icons
+    //entries related to component specific entries in the LAF
+    private List<UIPaint> colors;
+    private List<UIFont> fonts;
+    private List<UIInsets> insets;
+    private List<UIBorder> borders;
+    private List<UIDimension> dimensions;
+    private List<UIIcon> icons;
+    private List<UIComponent> components;
+    /**
+     * This is a local UIDefaults that contains all the UIDefaults in this synth model. It is kept uptodate by the
+     * indervidual UIDefaults nodes
+     */
+    private transient UIDefaults modelDefaults = new UIDefaults();
+    private transient UIStyle globalStyle = new UIStyle();
+
+    private transient File resourcesDir;
+    private transient File imagesDir;
+    private transient File templatesDir;
+
+    /** Default constructor used by JIBX to create new empty SynthModel */
+    protected SynthModel() {
+        this(false);
+    }
+
+    public SynthModel(boolean populateWithDefaults) {
+        // create observable lists that fire changes on as property changes
+        colors = new ArrayList<UIPaint>();
+        fonts = new ArrayList<UIFont>();
+        insets = new ArrayList<UIInsets>();
+        borders = new ArrayList<UIBorder>();
+        dimensions = new ArrayList<UIDimension>();
+        icons = new ArrayList<UIIcon>();
+        components = new ArrayList<UIComponent>();
+
+        if (populateWithDefaults) {
+            //get the ui defaults from the SynthLookAndFeel. Using the UIDefaults table,
+            //pre initialize everything.
+//        SynthLookAndFeel synth = new SynthLookAndFeel();
+            BasicLookAndFeel synth = new MetalLookAndFeel();
+            UIDefaults defaults = synth.getDefaults();
+
+            //pre-init the palettes
+            colors.add(new UIColor("desktop", defaults.getColor("desktop"), modelDefaults));
+            colors.add(new UIColor("activeCaption", defaults.getColor("activeCaption"), modelDefaults));
+            colors.add(new UIColor("activeCaptionText", defaults.getColor("activeCaptionText"), modelDefaults));
+            colors.add(new UIColor("activeCaptionBorder", defaults.getColor("activeCaptionBorder"), modelDefaults));
+            colors.add(new UIColor("inactiveCaption", defaults.getColor("inactiveCaption"), modelDefaults));
+            colors.add(new UIColor("inactiveCaptionText", defaults.getColor("inactiveCaptionText"), modelDefaults));
+            colors.add(new UIColor("inactiveCaptionBorder", defaults.getColor("inactiveCaptionBorder"), modelDefaults));
+            colors.add(new UIColor("window", defaults.getColor("window"), modelDefaults));
+            colors.add(new UIColor("windowBorder", defaults.getColor("windowBorder"), modelDefaults));
+            colors.add(new UIColor("windowText", defaults.getColor("windowText"), modelDefaults));
+            colors.add(new UIColor("menu", defaults.getColor("menu"), modelDefaults));
+            colors.add(new UIColor("menuText", defaults.getColor("menuText"), modelDefaults));
+            colors.add(new UIColor("text", defaults.getColor("text"), modelDefaults));
+            colors.add(new UIColor("textText", defaults.getColor("textText"), modelDefaults));
+            colors.add(new UIColor("textHighlight", defaults.getColor("textHighlight"), modelDefaults));
+            colors.add(new UIColor("textHighlightText", defaults.getColor("textHighlightText"), modelDefaults));
+            colors.add(new UIColor("textInactiveText", defaults.getColor("textInactiveText"), modelDefaults));
+            colors.add(new UIColor("control", defaults.getColor("control"), modelDefaults));
+            colors.add(new UIColor("controlText", defaults.getColor("controlText"), modelDefaults));
+            colors.add(new UIColor("controlHighlight", defaults.getColor("controlHighlight"), modelDefaults));
+            colors.add(new UIColor("controlLHighlight", defaults.getColor("controlLHighlight"), modelDefaults));
+            colors.add(new UIColor("controlShadow", defaults.getColor("controlShadow"), modelDefaults));
+            colors.add(new UIColor("controlDkShadow", defaults.getColor("controlDkShadow"), modelDefaults));
+            colors.add(new UIColor("scrollbar", defaults.getColor("scrollbar"), modelDefaults));
+            colors.add(new UIColor("info", defaults.getColor("info"), modelDefaults));
+            colors.add(new UIColor("infoText", defaults.getColor("infoText"), modelDefaults));
+
+            fonts.add(new UIFont("dialogPlain", defaults.getFont("Button.font"), modelDefaults));
+            fonts.add(new UIFont("serifPlain", defaults.getFont("TextPane.font"), modelDefaults));
+            fonts.add(new UIFont("sansSerifPlain", defaults.getFont("ToolTip.font"), modelDefaults));
+            fonts.add(new UIFont("monospacedPlain", defaults.getFont("TextArea.font"), modelDefaults));
+            fonts.add(new UIFont("dialogBold", defaults.getFont("InternalFrame.titleFont"), modelDefaults));
+
+            insets.add(new UIInsets("zeroInsets", new Insets(0, 0, 0, 0)));
+            insets.add(new UIInsets("twoInsets", new Insets(2, 2, 2, 2)));
+            insets.add(new UIInsets("threeInsets", new Insets(3, 3, 3, 3)));
+
+            borders.add(new UIBorder("marginBorder", defaults.getBorder("MenuItem.border")));
+            borders.add(new UIBorder("etchedBorder", defaults.getBorder("TitledBorder.border")));
+            borders.add(new UIBorder("loweredBevelBorder", defaults.getBorder("Table.scrollPaneBorder")));
+            borders.add(new UIBorder("blackLineBorder", defaults.getBorder("ToolTip.border")));
+
+            //TODO have to deal with the special arrow button region
+
+            //pre-init the list of UI components
+            UIComponent button = new UIComponent("Button", JButton.class.getName(), "ButtonUI");
+            addStates(this, button, DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(button);
+
+            UIComponent toggleButton =
+                    new UIComponent("ToggleButton", JToggleButton.class.getName(), "ToggleButtonUI");
+            addStates(this, toggleButton, DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED,
+                    SELECTED | PRESSED, SELECTED | MOUSE_OVER, DISABLED | SELECTED);
+            components.add(toggleButton);
+
+            UIComponent radioButton =
+                    new UIComponent("RadioButton", JRadioButton.class.getName(), "RadioButtonUI");
+            addStates(this, radioButton, DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED,
+                    SELECTED | PRESSED, SELECTED | MOUSE_OVER, DISABLED | SELECTED);
+            components.add(radioButton);
+
+            UIComponent checkBox =
+                    new UIComponent("CheckBox", JCheckBox.class.getName(), "CheckBoxUI");
+            addStates(this, checkBox, DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED,
+                    SELECTED | PRESSED, SELECTED | MOUSE_OVER, DISABLED | SELECTED);
+            components.add(checkBox);
+
+            UIComponent colorChooser =
+                    new UIComponent("ColorChooser", JColorChooser.class.getName(), "ColorChooserUI");
+            addStates(this, colorChooser, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(colorChooser);
+
+            UIComponent comboBox =
+                    new UIComponent("ComboBox", JComboBox.class.getName(), "ComboBoxUI");
+            addStates(this, comboBox, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(comboBox);
+
+            UIComponent fileChooser =
+                    new UIComponent("FileChooser", JFileChooser.class.getName(), "FileChooserUI");
+            addStates(this, fileChooser, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(fileChooser);
+
+            //not represented in Synth
+//        UIComponent  fileView = new UIComponent ("FileView",
+//                list(DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+
+            UIComponent internalFrame =
+                    new UIComponent("InternalFrame", JInternalFrame.class.getName(), "InternalFrameUI");
+            addStates(this, internalFrame, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            //has an internal frame title pane region
+            components.add(internalFrame);
+
+            //TODO DesktopIcon ???
+
+            UIComponent desktop =
+                    new UIComponent("Desktop", JDesktopPane.class.getName(), "DesktopPaneUI");
+            addStates(this, desktop, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(desktop);
+
+            UIComponent label = new UIComponent("Label", JLabel.class.getName(), "LabelUI");
+            addStates(this, label, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(label);
+
+            UIComponent list = new UIComponent("List", JList.class.getName(), "ListUI");
+            addStates(this, list, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(list);
+
+            UIComponent menuBar = new UIComponent("MenuBar", JMenuBar.class.getName(), "MenuBarUI");
+            addStates(this, menuBar, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(menuBar);
+
+            UIComponent menuItem =
+                    new UIComponent("MenuItem", JMenuItem.class.getName(), "MenuItemUI");
+            addStates(this, menuItem, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            //has a menuItemAccelerator region
+            components.add(menuItem);
+
+            UIComponent radioButtonMenuItem =
+                    new UIComponent("RadioButtonMenuItem", JRadioButtonMenuItem.class.getName(),
+                            "RadioButtonMenuItemUI");
+            addStates(this, radioButtonMenuItem, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(radioButtonMenuItem);
+
+            UIComponent checkBoxMenuItem =
+                    new UIComponent("CheckBoxMenuItem", JCheckBoxMenuItem.class.getName(),
+                            "CheckBoxMenuItemUI");
+            addStates(this, checkBoxMenuItem, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(checkBoxMenuItem);
+
+            UIComponent menu = new UIComponent("Menu", JMenu.class.getName(), "MenuUI");
+            addStates(this, menu, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(menu);
+
+            UIComponent popupMenu =
+                    new UIComponent("PopupMenu", JPopupMenu.class.getName(), "PopupMenuUI");
+            addStates(this, popupMenu, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            //has a popupMenuSeparator region
+            components.add(popupMenu);
+
+            UIComponent optionPane =
+                    new UIComponent("OptionPane", JOptionPane.class.getName(), "OptionPaneUI");
+            addStates(this, optionPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(optionPane);
+
+            UIComponent panel = new UIComponent("Panel", JPanel.class.getName(), "PanelUI");
+            addStates(this, panel, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(panel);
+
+            UIComponent progressBar =
+                    new UIComponent("ProgressBar", JProgressBar.class.getName(), "ProgressBarUI");
+            addStates(this, progressBar, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(progressBar);
+
+            UIComponent separator =
+                    new UIComponent("Separator", JSeparator.class.getName(), "SeparatorUI");
+            addStates(this, separator, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(separator);
+
+            UIRegion scrollBarThumb = new UIRegion("ScrollBar.Thumb");
+            addStates(this, scrollBarThumb, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            UIRegion scrollBarTrack = new UIRegion("ScrollBar.Track");
+            addStates(this, scrollBarTrack, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            UIComponent scrollBar =
+                    new UIComponent("ScrollBar", JScrollBar.class.getName(), "ScrollBarUI", scrollBarThumb,
+                            scrollBarTrack);
+            addStates(this, scrollBar, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(scrollBar);
+
+            UIComponent scrollPane =
+                    new UIComponent("ScrollPane", JScrollPane.class.getName(), "ScrollPaneUI");
+            addStates(this, scrollPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(scrollPane);
+
+            UIComponent viewport =
+                    new UIComponent("Viewport", JViewport.class.getName(), "ViewportUI");
+            addStates(this, viewport, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(viewport);
+
+            UIComponent slider = new UIComponent("Slider", JSlider.class.getName(), "SliderUI");
+            addStates(this, slider, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            //has sliderThumb and sliderTrack sub regions
+            components.add(slider);
+
+            UIComponent spinner = new UIComponent("Spinner", JSpinner.class.getName(), "SpinnerUI");
+            addStates(this, spinner, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(spinner);
+
+            UIComponent splitPane =
+                    new UIComponent("SplitPane", JSplitPane.class.getName(), "SplitPaneUI");
+            addStates(this, splitPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            //has splitPaneDivider sub region
+            components.add(splitPane);
+
+            UIComponent tabbedPane =
+                    new UIComponent("TabbedPane", JTabbedPane.class.getName(), "TabbedPaneUI");
+            addStates(this, tabbedPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            //has tabbedPaneContent and tabbedPaneTab and TabbedPaneTabArea sub regions
+            components.add(tabbedPane);
+
+            UIComponent table = new UIComponent("Table", JTable.class.getName(), "TableUI");
+            addStates(this, table, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(table);
+
+            UIComponent tableHeader =
+                    new UIComponent("TableHeader", JTableHeader.class.getName(), "TableHeaderUI");
+            addStates(this, tableHeader, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(tableHeader);
+
+            UIComponent textField =
+                    new UIComponent("TextField", JTextField.class.getName(), "TextFieldUI");
+            addStates(this, textField, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(textField);
+
+            UIComponent formattedTextField =
+                    new UIComponent("FormattedTextField", JFormattedTextField.class.getName(),
+                            "FormattedTextFieldUI");
+            addStates(this, formattedTextField, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(formattedTextField);
+
+            UIComponent passwordField =
+                    new UIComponent("PasswordField", JPasswordField.class.getName(), "PasswordFieldUI");
+            addStates(this, passwordField, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(passwordField);
+
+            UIComponent textArea =
+                    new UIComponent("TextArea", JTextArea.class.getName(), "TextAreaUI");
+            addStates(this, textArea, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(textArea);
+
+            UIComponent textPane =
+                    new UIComponent("TextPane", JTextPane.class.getName(), "TextPaneUI");
+            addStates(this, textPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(textPane);
+
+            UIComponent editorPane =
+                    new UIComponent("EditorPane", JEditorPane.class.getName(), "EditorPaneUI");
+            addStates(this, editorPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(editorPane);
+
+            /*
+            * The only thing not represented in Synth as a region. I suppose we'll have
+            * to make it a CustomUIComponent
+            */
+//        UIComponent  titledBorder = new UIComponent ("TitledBorder",
+//                list(DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+
+            UIComponent toolBar = new UIComponent("ToolBar", JToolBar.class.getName(), "ToolBarUI");
+            addStates(this, toolBar, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            //toolBarContent, toolBarDragWindow, toolBarSeparator sub regions
+            components.add(toolBar);
+
+            UIComponent toolTip = new UIComponent("ToolTip", JToolTip.class.getName(), "ToolTipUI");
+            addStates(this, toolTip, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(toolTip);
+
+            //tooltip manager
+
+            UIComponent tree = new UIComponent("Tree", JTree.class.getName(), "TreeUI");
+            addStates(this, tree, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            //treeCell sub region
+            components.add(tree);
+
+            UIComponent rootPane =
+                    new UIComponent("RootPane", JRootPane.class.getName(), "RootPaneUI");
+            addStates(this, rootPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
+            components.add(rootPane);
+        }
+    }
+
+    public List<UIPaint> getColorPalette() {
+        return colors;
+    }
+
+    public List<UIFont> getFontPalette() {
+        return fonts;
+    }
+
+    public List<UIInsets> getInsetPalette() {
+        return insets;
+    }
+
+    public List<UIBorder> getBorderPalette() {
+        return borders;
+    }
+
+    public List<UIDimension> getDimensionPalette() {
+        return dimensions;
+    }
+
+    public List<UIIcon> getIconPalette() {
+        return icons;
+    }
+
+    public List<UIComponent> getComponents() {
+        return components;
+    }
+
+    /**
+     * Get the local UIDefaults that contains all the UIDefaults in this synth model. It is kept uptodate by the
+     * indervidual UIDefaults nodes
+     *
+     * @return The UIDefaults for the synth model
+     */
+    public UIDefaults getUiDefaults() {
+        return modelDefaults;
+    }
+
+    public UIStyle getStyle() {
+        return globalStyle;
+    }
+
+    // by default there are no painters assigned to the various states
+    private static void addStates(SynthModel model, UIRegion parentRegion, int... states) {
+        for (int state : states) {
+            List<String> stateList = new ArrayList<String>();
+            if ((state & ENABLED) != 0) {
+                stateList.add(UIStateType.ENABLED_KEY);
+            }
+            if ((state & MOUSE_OVER) != 0) {
+                stateList.add(UIStateType.MOUSE_OVER_KEY);
+            }
+            if ((state & PRESSED) != 0) {
+                stateList.add(UIStateType.PRESSED_KEY);
+            }
+            if ((state & DISABLED) != 0) {
+                stateList.add(UIStateType.DISABLED_KEY);
+            }
+            if ((state & FOCUSED) != 0) {
+                stateList.add(UIStateType.FOCUSED_KEY);
+            }
+            if ((state & SELECTED) != 0) {
+                stateList.add(UIStateType.SELECTED_KEY);
+            }
+            if ((state & DEFAULT) != 0) {
+                stateList.add(UIStateType.DEFAULT_KEY);
+            }
+            parentRegion.addBackgroundState(new UIState(model, parentRegion, stateList.toArray(new String[stateList.size()])));
+        }
+    }
+
+    public File getResourcesDir() {
+        return resourcesDir;
+    }
+
+    public void setResourcesDir(File resourcesDir) {
+        System.out.println("SynthModel.setResourcesDir(" + resourcesDir + ")");
+        File old = getResourcesDir();
+        this.resourcesDir = resourcesDir;
+        firePropertyChange("resourcesDir", old, getResourcesDir());
+    }
+
+    public File getImagesDir() {
+        return imagesDir;
+    }
+
+    public void setImagesDir(File imagesDir) {
+        System.out.println("SynthModel.setImagesDir(" + imagesDir + ")");
+        File old = getImagesDir();
+        this.imagesDir = imagesDir;
+        firePropertyChange("imagesDir", old, getImagesDir());
+    }
+
+    public File getTemplatesDir() {
+        return templatesDir;
+    }
+
+    public void setTemplatesDir(File templatesDir) {
+        System.out.println("SynthModel.setTemplatesDir(" + templatesDir + ")");
+        File old = getTemplatesDir();
+        this.templatesDir = templatesDir;
+        firePropertyChange("templatesDir", old, getTemplatesDir());
+    }
+
+    // =================================================================================================================
+    // JIBX Methods
+
+    public void preSet(IUnmarshallingContext context) {
+        File resourcesDir = (File) context.getUserContext();
+        this.resourcesDir = resourcesDir;
+        this.imagesDir = new File(resourcesDir, "images");
+        this.templatesDir = new File(resourcesDir, "templates");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/SynthModel.jibx.xml	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 1998-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.  Sun designates this
+ particular file as subject to the "Classpath" exception as provided
+ by Sun in the LICENSE file that accompanied this code.
+
+ This code 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
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ CA 95054 USA or visit www.sun.com if you need additional information or
+ have any questions.
+-->
+
+<!DOCTYPE binding SYSTEM "http://jibx.sourceforge.net">
+<binding>
+    <mapping class="org.jdesktop.synthdesigner.synthmodel.UIDefault" abstract="true" post-set="postSet">
+        <value name="name" field="name" style="attribute"/>
+    </mapping>
+    <!-- == AWT TYPES =========================================================================================== -->
+    <mapping class="java.awt.Color"
+             marshaller="org.jdesktop.swingx.designer.jibxhelpers.ColorMapper"
+             unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.ColorMapper"/>
+    <mapping class="java.lang.Class"
+             marshaller="org.jdesktop.synthdesigner.synthmodel.jibxhelpers.ClassMapper"
+             unmarshaller="org.jdesktop.synthdesigner.synthmodel.jibxhelpers.ClassMapper"/>
+    <!-- == UI FONT =========================================================================================== -->
+    <mapping name="typeface" class="org.jdesktop.swingx.designer.font.Typeface" post-set="postSet">
+        <value name="family" field="name" style="attribute" usage="optional"/>
+        <value name="bold" field="bold" style="attribute" usage="optional" default="Default"/>
+        <value name="italic" field="italic" style="attribute" usage="optional" default="Default"/>
+        <value name="size" field="size" style="attribute" usage="optional"/>
+        <value name="sizeOffset" field="sizeOffset" style="attribute" usage="optional" default="1"/>
+        <value name="uiDefaultParentName" field="uiDefaultParentName" style="attribute" usage="optional"/>
+    </mapping>
+    <mapping name="uiFont" class="org.jdesktop.synthdesigner.synthmodel.UIFont"
+             extends="org.jdesktop.synthdesigner.synthmodel.UIDefault">
+        <structure map-as="org.jdesktop.synthdesigner.synthmodel.UIDefault"/>
+        <collection get-method="getFonts" set-method="setFonts" create-type="java.util.ArrayList"/>
+    </mapping>
+    <!-- == UI INSETS =========================================================================================== -->
+    <mapping name="uiInsets" class="org.jdesktop.synthdesigner.synthmodel.UIInsets"
+             extends="org.jdesktop.synthdesigner.synthmodel.UIDefault">
+        <structure map-as="org.jdesktop.synthdesigner.synthmodel.UIDefault"/>
+        <structure name="insets" get-method="getInsets" set-method="setInsets"
+                   marshaller="org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper"
+                   unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper"/>
+    </mapping>
+    <!-- == UI PAINT =========================================================================================== -->
+    <mapping name="matte" class="org.jdesktop.swingx.designer.paint.Matte" post-set="postSet">
+        <value name="red" field="red" style="attribute"/>
+        <value name="green" field="green" style="attribute"/>
+        <value name="blue" field="blue" style="attribute"/>
+        <value name="alpha" field="alpha" style="attribute"/>
+        <value name="uiDefaultParentName" field="uiDefaultParentName" style="attribute" usage="optional"/>
+        <value name="componentPropertyName" field="componentPropertyName" style="attribute" usage="optional"/>
+        <value name="hueOffset" field="hueOffset" style="attribute"/>
+        <value name="saturationOffset" field="saturationOffset" style="attribute"/>
+        <value name="brightnessOffset" field="brightnessOffset" style="attribute"/>
+        <value name="alphaOffset" field="alphaOffset" style="attribute"/>
+        <value name="uiResource" field="uiResource" style="attribute" usage="optional" default="true"/>
+    </mapping>
+    <mapping class="org.jdesktop.synthdesigner.synthmodel.UIPaint" abstract="true" type-name="uipaint"
+             extends="org.jdesktop.synthdesigner.synthmodel.UIDefault">
+        <structure map-as="org.jdesktop.synthdesigner.synthmodel.UIDefault"/>
+        <structure get-method="getPaint" set-method="setPaint"/>
+    </mapping>
+    <mapping name="uiPaint" class="org.jdesktop.synthdesigner.synthmodel.UIPaint"
+             extends="org.jdesktop.synthdesigner.synthmodel.UIDefault">
+        <structure map-as="uipaint"/>
+    </mapping>
+    <mapping name="uiColor" class="org.jdesktop.synthdesigner.synthmodel.UIColor"
+             extends="org.jdesktop.synthdesigner.synthmodel.UIPaint">
+        <structure map-as="uipaint"/>
+    </mapping>
+    <!-- == UI STYLE =========================================================================================== -->
+    <mapping class="org.jdesktop.synthdesigner.synthmodel.UIStyle" abstract="true" post-set="postSet">
+        <structure field="font" usage="optional"/>
+        <structure name="textForeground" usage="optional">
+            <structure field="textForeground" usage="optional"/>
+        </structure>
+        <structure name="textBackground" usage="optional">
+            <structure field="textBackground" usage="optional"/>
+        </structure>
+        <structure name="background" usage="optional">
+            <structure field="background" usage="optional"/>
+        </structure>
+        <value name="inherit-font" field="fontInherited" usage="optional" default="true"/>
+        <value name="inherit-textForeground" field="textForegroundInherited" usage="optional" default="true"/>
+        <value name="inherit-textBackground" field="textBackgroundInherited" usage="optional" default="true"/>
+        <value name="inherit-background" field="backgroundInherited" usage="optional" default="true"/>
+        <value name="hintAlphaInterpolation" field="hintAlphaInterpolation" usage="optional"/>
+        <value name="hintAntialiasing" field="hintAntialiasing" usage="optional"/>
+        <value name="hintColorRendering" field="hintColorRendering" usage="optional"/>
+        <value name="hintDithering" field="hintDithering" usage="optional"/>
+        <value name="hintFractionalMetrics" field="hintFractionalMetrics" usage="optional"/>
+        <value name="hintInterpolation" field="hintInterpolation" usage="optional"/>
+        <value name="hintRendering" field="hintRendering" usage="optional"/>
+        <value name="hintStrokeControl" field="hintStrokeControl" usage="optional"/>
+        <value name="hintTextAntialiasing" field="hintTextAntialiasing" usage="optional"/>
+        <value name="cacheSettingsInherited" field="cacheSettingsInherited" usage="optional" default="true"/>
+        <value name="cacheMode" field="cacheMode" usage="optional" default="FIXED_SIZES"/>
+        <value name="maxHozCachedImgScaling" field="maxHozCachedImgScaling" usage="optional" default="1"/>
+        <value name="maxVertCachedImgScaling" field="maxVertCachedImgScaling" usage="optional" default="1"/>
+        <collection name="uiproperties" field="uiProperties" create-type="java.util.ArrayList">
+            <structure marshaller="org.jdesktop.synthdesigner.synthmodel.jibxhelpers.UIPropertyMapper"
+                       unmarshaller="org.jdesktop.synthdesigner.synthmodel.jibxhelpers.UIPropertyMapper"/>
+        </collection>
+    </mapping>
+    <!-- == UI STATE =========================================================================================== -->
+    <mapping name="stateType" class="org.jdesktop.synthdesigner.synthmodel.UIStateType">
+        <value name="key" field="key" style="attribute"/>
+        <structure name="codeSnippet" usage="optional" test-method="hasCodeSnippet">
+            <value field="codeSnippet" style="cdata" usage="optional"/>
+        </structure>
+    </mapping>
+    <mapping name="state" class="org.jdesktop.synthdesigner.synthmodel.UIState" post-set="postSet" pre-set="preSet">
+        <value name="stateKeys" field="stateKeys" style="attribute" get-method="getStateKeys" set-method="setStateKeys"
+               serializer="org.jdesktop.synthdesigner.synthmodel.UIState.keysToString"
+               deserializer="org.jdesktop.synthdesigner.synthmodel.UIState.stringToKeys"/>
+        <value name="inverted" field="inverted" style="attribute" usage="optional"/>
+        <structure name="style" field="style"/>
+        <structure field="canvas"
+                   marshaller="org.jdesktop.swingx.designer.jibxhelpers.CanvasMapper"
+                   unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.CanvasMapper"/>
+    </mapping>
+    <!-- == REGIONS =========================================================================================== -->
+    <mapping class="org.jdesktop.synthdesigner.synthmodel.UIRegion" abstract="true"
+             type-name="region" pre-set="preSet">
+        <value name="name" field="name" style="attribute"/>
+        <value name="ui" field="ui" style="attribute" usage="optional"/>
+        <value name="subregion" field="subregion" style="attribute"/>
+        <value name="key" field="key" style="attribute" usage="optional"/>
+        <value name="title" field="title" style="attribute" usage="optional"/>
+        <structure name="contentMargins" field="contentMargins"
+                   marshaller="org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper"
+                   unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper"/>
+        <structure name="style" field="style"/>
+        <collection name="backgroundStates" field="backgroundStates" create-type="java.util.ArrayList"/>
+        <collection name="foregroundStates" field="foregroundStates" create-type="java.util.ArrayList"/>
+        <collection name="borderStates" field="borderStates" create-type="java.util.ArrayList"/>
+        <collection name="regions" field="subRegions" create-type="java.util.ArrayList"/>
+    </mapping>
+    <mapping name="region" class="org.jdesktop.synthdesigner.synthmodel.UIRegion">
+        <structure map-as="region"/>
+    </mapping>
+    <mapping name="uiIconRegion" class="org.jdesktop.synthdesigner.synthmodel.UIIconRegion"
+             extends="org.jdesktop.synthdesigner.synthmodel.UIRegion">
+        <structure map-as="region"/>
+        <value name="basicKey" field="basicKey" style="attribute" usage="optional"/>
+    </mapping>
+    <mapping name="uiComponent" class="org.jdesktop.synthdesigner.synthmodel.UIComponent"
+             extends="org.jdesktop.synthdesigner.synthmodel.UIRegion">
+        <value name="opaque" field="opaque" style="attribute"/>
+        <value name="componentName" field="componentName" style="attribute" usage="optional"/>
+        <value name="type" field="type" style="attribute"/>
+        <collection name="stateTypes" field="stateTypes" create-type="java.util.ArrayList"/>
+        <structure map-as="region"/>
+    </mapping>
+    <!-- == BASE MODEL =========================================================================================== -->
+    <mapping name="synthModel" class="org.jdesktop.synthdesigner.synthmodel.SynthModel" pre-set="preSet">
+        <collection name="insets" field="insets" create-type="java.util.ArrayList"/>
+        <collection name="colors" field="colors" create-type="java.util.ArrayList"/>
+        <collection name="fonts" field="fonts" create-type="java.util.ArrayList"/>
+        <structure name="style" field="globalStyle"/>
+        <collection name="components" field="components" create-type="java.util.ArrayList"/>
+    </mapping>
+</binding>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIBorder.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import javax.swing.border.Border;
+
+/**
+ * UIBorder
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIBorder extends UIDefault<Border> {
+
+    public UIBorder() {
+    }
+
+    public UIBorder(String id, Border b) {
+        super(id, b);
+    }
+
+    public Border getBorder() {
+        return super.getValue();
+    }
+
+    public void setBorder(Border b) {
+        Border old = getBorder();
+        super.setValue(b);
+        firePropertyChange("border", old, b);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIColor.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import org.jdesktop.swingx.designer.paint.Matte;
+
+import javax.swing.UIDefaults;
+import java.awt.Color;
+
+/**
+ * UIColor
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIColor extends UIPaint {
+
+    public UIColor() {
+    }
+
+    public UIColor(String id, Matte value) {
+        super(id, value);
+    }
+
+    public UIColor(String id, Color color, UIDefaults modelDefaults) {
+        this(id, new Matte(color, modelDefaults));
+    }
+
+    public Matte getPaint() {
+        return (Matte) super.getPaint();
+    }
+
+    public void setPaint(Matte c) {
+        super.setPaint(c);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIComponent.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,138 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import org.jdesktop.swingx.designer.utils.HasUIDefaults;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * UIComponent - model node that represents the designs for a single swing component
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIComponent extends UIRegion implements HasUIDefaults {
+
+    /** The classname of the swing component that this UIComponent represents */
+    private String type;
+    /** The name of the component if its a named component or null if its a generic component */
+    private String componentName = null;
+    /** If this components is opaque which means that when it is painted all of its bounds are filled */
+    private boolean opaque = false;
+    /**
+     * A list of state types that are available to this region and sub regions of this component but not subcomponents
+     * of this component. If this list is empty then the standard synth set of state types are assumed.
+     */
+    private List<UIStateType> stateTypes;
+
+    // =================================================================================================================
+    // Contructors
+
+    /** no-args contructor for JIBX */
+    protected UIComponent() {
+        super();
+        // create new observable list for state types so we get events for when the model changes
+        stateTypes = new ArrayList<UIStateType>();
+    }
+
+    public UIComponent(String name, String type, String ui, UIRegion... subRegions) {
+        super(name, ui, subRegions);
+        this.type = type;
+        for (UIRegion r : subRegions) {
+            r.setRegion(this);
+        }
+        // create new observable list for state types so we get events for when the model changes
+        stateTypes = new ArrayList<UIStateType>();
+    }
+
+    // =================================================================================================================
+    // Bean Methods
+
+    public String getComponentName() {
+        return componentName;
+    }
+
+    public void setComponentName(String componentName) {
+        String old = getComponentName();
+        this.componentName = componentName;
+        firePropertyChange("componentName", old, getComponentName());
+    }
+
+    public boolean isOpaque() {
+        return opaque;
+    }
+
+    public void setOpaque(boolean opaque) {
+        boolean old = isOpaque();
+        this.opaque = opaque;
+        firePropertyChange("opaque", old, isOpaque());
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        String old = getType();
+        this.type = type;
+        firePropertyChange("type", old, getType());
+    }
+
+    /**
+     * Get the list of state types that are available to this region and sub regions of this component but not
+     * subcomponents of this component. If this list is empty then the standard synth set of state types are assumed.
+     *
+     * @return List of available state types
+     */
+    public List<UIStateType> getStateTypes() {
+        return stateTypes;
+    }
+
+    @Override public String getKey() {
+        if (key == null || "".equals(key)) {
+            if (componentName == null || "".equals(componentName)) {
+                return getName();
+            } else {
+                return "\"" + componentName + "\"";
+            }
+        } else {
+            return key;
+        }
+    }
+
+    @Override public String getTitle() {
+        if (title == null || "".equals(title)) {
+            if (componentName == null || "".equals(componentName)) {
+                return getName();
+            } else {
+                return componentName;
+            }
+        } else {
+            return title;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIDefault.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import org.jdesktop.beans.AbstractBean;
+import org.jdesktop.swingx.designer.utils.HasUIDefaults;
+import org.jibx.runtime.IUnmarshallingContext;
+
+import javax.swing.UIDefaults;
+
+/**
+ * Represents an entry in the UI defaults table.
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIDefault<T> extends AbstractBean implements HasUIDefaults {
+    private String name;
+    private T value;
+    /**
+     * This is a local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the
+     * indervidual UIDefaults nodes
+     */
+    private transient UIDefaults modelDefaults = null;
+
+    public UIDefault() {
+    }
+
+    public UIDefault(String name, T value) {
+        this.name = name;
+        this.value = value;
+    }
+
+    public UIDefault(String name, T value, UIDefaults modelDefaults) {
+        this.name = name;
+        this.value = value;
+        this.modelDefaults = modelDefaults;
+    }
+
+    // =================================================================================================================
+    // JIBX Methods
+
+    /**
+     * Called by JIBX after all fields have been set
+     *
+     * @param context The JIBX Unmarshalling Context
+     */
+    private void postSet(IUnmarshallingContext context) {
+        // walk up till we get synth model
+        for (int i = 0; i < context.getStackDepth(); i++) {
+            if (context.getStackObject(i) instanceof HasUIDefaults) {
+                modelDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults();
+                if (modelDefaults != null) break;
+            }
+        }
+    }
+
+    // =================================================================================================================
+    // Bean Methods
+
+    /**
+     * Get the local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the
+     * indervidual UIDefaults nodes
+     *
+     * @return The UIDefaults for the synth model
+     */
+    public UIDefaults getUiDefaults() {
+        return modelDefaults;
+    }
+
+    public void setValue(T t) {
+        T old = this.value;
+        this.value = t;
+        firePropertyChange("value", old, getValue());
+    }
+
+    public T getValue() {
+        return value;
+    }
+
+    public final String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        String old = this.name;
+        firePropertyChange("name", old, name);
+        this.name = name;
+        // update model defaults
+        if (old != null) modelDefaults.remove(old);
+        modelDefaults.put(getName(), getValue());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIDimension.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import java.awt.Dimension;
+
+/**
+ * UIDimension
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIDimension extends UIDefault<Dimension> {
+    public UIDimension() {
+    }
+
+    public Dimension getDimension() {
+        return super.getValue();
+    }
+
+    public void setDimension(Dimension d) {
+        Dimension old = getDimension();
+        super.setValue(d);
+        firePropertyChange("dimension", old, d);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIFont.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import java.awt.Font;
+import org.jdesktop.swingx.designer.font.Typeface;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ArrayList;
+import javax.swing.UIDefaults;
+
+/**
+ * Represents a single font entry in the UIDefaults table. Each UIFont takes a
+ * list of Typefaces. These typefaces are listed by order of preference. Thus,
+ * when putting a font into UIDefaults, the code can check whether each font
+ * exists, and when it finds the first font that does, insert it.
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIFont extends UIDefault<List<Typeface>> implements Cloneable {
+
+    private void updateUIDefaults() {
+        if (getUiDefaults() != null) {
+            for (Typeface t : getFonts()) {
+                if (t.isFontSupported()) {
+                    getUiDefaults().put(getName(), t.getFont());
+                    return;
+                }
+            }
+        }
+
+        //TODO must not have found any. Default to the Default platform font
+        getUiDefaults().put(getName(), new Font("Arial", Font.PLAIN, 12));
+    }
+
+    public UIFont() {
+        setValue(new ArrayList<Typeface>());
+    }
+
+    public UIFont(String id, List<Typeface> values, UIDefaults defaults) {
+        super(id, values, defaults);
+        updateUIDefaults();
+    }
+
+    public UIFont(String id, Font font, UIDefaults modelDefaults) {
+        this(id, Arrays.asList(new Typeface(font, modelDefaults)), modelDefaults);
+    }
+
+    public List<Typeface> getFonts() {
+        return super.getValue();
+    }
+
+    private void setFonts(List<Typeface> values) {
+        super.setValue(values);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIIcon.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import javax.swing.Icon;
+
+/**
+ * UIIcon
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIIcon extends UIDefault<Icon> {
+
+    public UIIcon() {
+    }
+
+    public Icon getIcon() {
+        return super.getValue();
+    }
+
+    public void setIcon(Icon i) {
+        Icon old = getIcon();
+        super.setValue(i);
+        firePropertyChange("icon", old, i);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIIconRegion.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+/**
+ * A UIRegion subclass which is used for generating icons. For example, JRadioButton and JCheckBox represent themselves
+ * mainly via their icons. However, from the designers perspective, the main design isn't an "icon", but just a region
+ * on the button.
+ * <p/>
+ * That type of region is represented by a UIIconRegion. UIIconRegion contains a string which references the UIDefault
+ * value associated with this icon. For example, RadioButton.icon.
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIIconRegion extends UIRegion {
+    /** The UiDefaults key which this icon should be stored for basic LaF to find it. This is absolute */
+    private String basicKey = null;
+
+    public UIIconRegion() {
+        super();
+    }
+
+    public String getBasicKey() {
+        return basicKey;
+    }
+
+    public void setBasicKey(String basicKey) {
+        String old = getBasicKey();
+        this.basicKey = basicKey;
+        firePropertyChange("basicKey",old,getBasicKey());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIInsets.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import java.awt.Insets;
+
+/**
+ * UIInsets
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIInsets extends UIDefault<Insets> {
+
+    public UIInsets() {
+    }
+
+    public UIInsets(String id, Insets value) {
+        super(id, value);
+    }
+
+    public Insets getInsets() {
+        return super.getValue();
+    }
+
+    public void setInsets(Insets i) {
+        Insets old = getInsets();
+        super.setValue(i);
+        firePropertyChange("insets", old, i);
+        // update model defaults
+        getUiDefaults().put(getName(), i);
+    }
+
+
+    public String toString() {
+        return "UiInset(" + getName() + ")" +
+                ((getInsets() == null) ? " NONE" : "(" + getInsets().top + "," + getInsets().left + "," +
+                        getInsets().bottom + "," + getInsets().right + ")");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIPaint.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import org.jdesktop.swingx.designer.paint.Matte;
+import org.jdesktop.swingx.designer.paint.PaintModel;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+/**
+ * UIPaint
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIPaint extends UIDefault<PaintModel> {
+
+    /** Listener to keep model UiDefaults up to date for this UiPaint */
+    private PropertyChangeListener matteListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            PaintModel paintModel = getValue();
+            if (paintModel instanceof Matte) {
+                getUiDefaults().put(getName(), ((Matte) paintModel).getColor());
+            }
+            // propogate the paint change up as PaintModel is a mutable object
+            if (evt.getPropertyName().equals("paint")) {
+                firePropertyChange("paint", null, getPaint());
+                firePropertyChange("value", null, getPaint());
+            }
+        }
+    };
+
+    public UIPaint() {}
+
+    public UIPaint(String id, PaintModel value) {
+        super(id, value, (value instanceof Matte) ? ((Matte) value).getUiDefaults() : null);
+        // update model defaults
+        if (value instanceof Matte) {
+            Matte matte = (Matte) value;
+            if (getUiDefaults() != null) getUiDefaults().put(getName(), matte.getColor());
+            matte.addPropertyChangeListener(matteListener);
+        }
+    }
+
+    public PaintModel getPaint() {
+        return super.getValue();
+    }
+
+    public void setPaint(PaintModel c) {
+        PaintModel old = getPaint();
+        if (old instanceof Matte) old.removePropertyChangeListener(matteListener);
+        super.setValue(c);
+        firePropertyChange("paint", old, c);
+        // update model defaults
+        if (c instanceof Matte) {
+            Matte matte = (Matte) c;
+            getUiDefaults().put(getName(), matte.getColor());
+            matte.addPropertyChangeListener(matteListener);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIProperty.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import org.jdesktop.beans.AbstractBean;
+
+/**
+ * UIProperty
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIProperty extends AbstractBean {
+    public static enum PropertyType {
+        BOOLEAN, INT, FLOAT, DOUBLE, STRING, FONT, COLOR, INSETS, DIMENSION, BORDER
+    }
+
+    private String name;
+    private PropertyType type;
+    private Object value;
+
+    protected UIProperty() {
+    }
+
+    public UIProperty(String name, PropertyType type, Object value) {
+        this.name = name;
+        this.type = type;
+        this.value = value;
+    }
+
+    // =================================================================================================================
+    // Bean Methods
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        String old = getName();
+        this.name = name;
+        firePropertyChange("name", old, getName());
+    }
+
+    public PropertyType getType() {
+        return type;
+    }
+
+    public void setType(PropertyType type) {
+        PropertyType old = getType();
+        this.type = type;
+        firePropertyChange("type", old, getType());
+    }
+
+    public Object getValue() {
+        return value;
+    }
+
+    public void setValue(Object value) {
+        Object old = getValue();
+        this.value = value;
+        firePropertyChange("value", old, getValue());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIRegion.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,253 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import org.jdesktop.beans.AbstractBean;
+import org.jdesktop.swingx.designer.utils.HasUIDefaults;
+import org.jibx.runtime.IUnmarshallingContext;
+
+import javax.swing.UIDefaults;
+import java.awt.Insets;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * Represents a "Region" in synth, which also includes entire components.
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIRegion extends AbstractBean implements HasUIDefaults, HasUIStyle {
+    private String name;//the code-wise name of the region
+    protected String key; //the UIdefaults key for this region
+    protected String title; //the user friendly name/title of this region
+    /** List of background states */
+    private List<UIState> backgroundStates;
+    /** List of foreground states */
+    private List<UIState> foregroundStates;
+    /** List of border states */
+    private List<UIState> borderStates;
+    private UIStyle style = new UIStyle();
+    protected Insets contentMargins = new Insets(0, 0, 0, 0);
+    /** Sub regions, if any */
+    private List<UIRegion> subRegions;
+
+    //together with name, these two fields allow me to reconstruct, in
+    //code, a synth Region, including a custom Region, if you make one.
+    private String ui;
+    private boolean subregion;
+    /**
+     * This is a local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the
+     * indervidual UIDefaults nodes
+     */
+    private transient UIDefaults modelDefaults = null;
+
+    private UIRegion region; //the region that this region belongs to
+
+    // =================================================================================================================
+    // Constructors
+
+    /** no-args contructor for JIBX */
+    protected UIRegion() {
+        subRegions = new ArrayList<UIRegion>();
+        backgroundStates = new ArrayList<UIState>();
+        foregroundStates = new ArrayList<UIState>();
+        borderStates = new ArrayList<UIState>();
+        style.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("style." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
+            }
+        });
+    }
+
+    public UIRegion(String name, UIRegion... subRegions) {
+        this(name, null, true, subRegions);
+    }
+
+    public UIRegion(String name, String ui, UIRegion... subRegions) {
+        this(name, ui, false, subRegions);
+    }
+
+    public UIRegion(String name, String ui, boolean subregion, UIRegion... subRegions) {
+        this();
+        this.name = name;
+        this.ui = ui;
+        this.subregion = subregion;
+        if (subRegions != null) {
+            for (UIRegion r : subRegions) {
+                if (r != null) {
+                    this.subRegions.add(r);
+                    r.getStyle().setParentStyle(getStyle());
+                }
+            }
+        }
+    }
+
+    // =================================================================================================================
+    // JIBX Methods
+
+    /**
+     * Called by JIBX after all fields have been set
+     *
+     * @param context The JIBX Unmarshalling Context
+     */
+    private void preSet(IUnmarshallingContext context) {
+        // walk up till we get synth model
+        for (int i = 0; i < context.getStackDepth(); i++) {
+            if (context.getStackObject(i) instanceof HasUIDefaults) {
+                modelDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults();
+                if (modelDefaults != null) break;
+            }
+        }
+        for (int i = 0; i < context.getStackDepth(); i++) {
+            if (context.getStackObject(i) instanceof UIRegion && context.getStackObject(i) != this) {
+                region = (UIRegion) context.getStackObject(i);
+                break;
+            }
+        }
+    }
+
+    // =================================================================================================================
+    // Bean Methods
+
+    public Insets getContentMargins() {
+        return contentMargins;
+    }
+
+    public void setContentMargins(Insets contentMargins) {
+        Insets old = getContentMargins();
+        this.contentMargins = contentMargins;
+        firePropertyChange("contentMargins", old, getContentMargins());
+    }
+
+    void setRegion(UIRegion r) {
+        this.region = r;
+    }
+
+    public UIRegion getRegion() {
+        return region;
+    }
+
+    /**
+     * Get the local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the
+     * indervidual UIDefaults nodes
+     *
+     * @return The UIDefaults for the synth model
+     */
+    public UIDefaults getUiDefaults() {
+        return modelDefaults;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public final UIRegion[] getSubRegions() {
+        return subRegions.toArray(new UIRegion[0]);
+    }
+
+    public final UIState[] getBackgroundStates() {
+        return backgroundStates.toArray(new UIState[0]);
+    }
+
+    public final UIState[] getForegroundStates() {
+        return foregroundStates.toArray(new UIState[0]);
+    }
+
+    public final UIState[] getBorderStates() {
+        return borderStates.toArray(new UIState[0]);
+    }
+
+    public UIStyle getStyle() {
+        return style;
+    }
+
+    public final boolean isSubRegion() {
+        return subregion;
+    }
+
+    public final String getUi() {
+        return ui;
+    }
+
+    public void addBackgroundState(UIState state) {
+        // check if we already have that state
+        for (UIState uiState : backgroundStates) {
+            if (uiState.getName().equals(state.getName())) return;
+        }
+        backgroundStates.add(state);
+        state.setRegion(this);
+        firePropertyChange("backgroundStates", null, backgroundStates);
+    }
+
+    public void removeBackgroundState(UIState state) {
+        if (backgroundStates.remove(state)) {
+            firePropertyChange("backgroundStates", null, backgroundStates);
+        }
+    }
+
+    public void addForegroundState(UIState state) {
+        // check if we already have that state
+        for (UIState uiState : foregroundStates) {
+            if (uiState.getName().equals(state.getName())) return;
+        }
+        foregroundStates.add(state);
+        state.setRegion(this);
+        firePropertyChange("foregroundStates", null, foregroundStates);
+    }
+
+    public void removeForegroundState(UIState state) {
+        if (foregroundStates.remove(state)) {
+            firePropertyChange("foregroundStates", null, foregroundStates);
+        }
+    }
+
+    public void addBorderState(UIState state) {
+        // check if we already have that state
+        for (UIState uiState : borderStates) {
+            if (uiState.getName().equals(state.getName())) return;
+        }
+        borderStates.add(state);
+        state.setRegion(this);
+        firePropertyChange("borderStates", null, borderStates);
+    }
+
+    public void removeBorderState(UIState state) {
+        if (borderStates.remove(state)) {
+            firePropertyChange("borderStates", null, borderStates);
+        }
+    }
+
+
+    public String getKey() {
+        return key == null || "".equals(key) ? name : key;
+    }
+
+    public String getTitle() {
+        return title == null || "".equals(title) ? name : title;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIState.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,298 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import org.jdesktop.beans.AbstractBean;
+import org.jdesktop.swingx.designer.Canvas;
+import org.jdesktop.swingx.designer.utils.HasPath;
+import org.jdesktop.swingx.designer.utils.HasUIDefaults;
+import org.jibx.runtime.IUnmarshallingContext;
+
+import javax.swing.UIDefaults;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Represents a State in the Synth LAF.
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIState extends AbstractBean implements HasUIStyle, HasPath {
+
+    private List<String> stateKeys;
+    private boolean inverted; //indicates whether to invert the meaning of the 9-square stretching insets
+    /** A cached string representing the list of stateKeys deliminated with "+" */
+    private String cachedName = null;
+    private Canvas canvas;
+    private UIStyle style;
+    /** the region that this state belongs to */
+    private UIRegion region;
+    /**
+     * This is a local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the
+     * indervidual UIDefaults nodes
+     */
+    private transient UIDefaults modelDefaults = null;
+
+    // =================================================================================================================
+    // Contructors
+
+    public UIState() {
+        // Create state keys as event list so model changes are propogated
+        stateKeys = new ArrayList<String>();
+    }
+
+    public UIState(SynthModel model, UIRegion parentRegion, String... stateTypeKeys) {
+        // Create state keys as event list so model changes are propogated
+        stateKeys = new ArrayList<String>();
+        this.stateKeys.addAll(Arrays.asList(stateTypeKeys));
+        //
+        modelDefaults = model.getUiDefaults();
+        region = parentRegion;
+        // create new canvas
+        canvas = new Canvas(100, 30);
+        canvas.setUiDefaults(modelDefaults);
+        String canvasPath = getPath();
+        canvas.setResourcesDir(new File(model.getResourcesDir(), canvasPath));
+        canvas.setTemplatesDir(new File(model.getTemplatesDir(), canvasPath));
+        canvas.setImagesDir(new File(model.getImagesDir(), canvasPath));
+        canvas.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("canvas." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
+            }
+        });
+        // create new style
+        style = new UIStyle();
+        style.setParentStyle(region.getStyle());
+        style.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("style." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
+            }
+        });
+    }
+
+    // =================================================================================================================
+    // JIBX Methods
+
+    /**
+     * JIBX needs this
+     *
+     * @param stateKeys The new list of states
+     */
+    private void setStateKeys(List<String> stateKeys) {
+        if (stateKeys != this.stateKeys) {
+            this.stateKeys.clear();
+            this.stateKeys.addAll(stateKeys);
+        }
+    }
+
+    /**
+     * Called by JIBX after all fields have been set
+     *
+     * @param context The JIBX Unmarshalling Context
+     */
+    private void preSet(IUnmarshallingContext context) {
+        // walk up till we get synth model
+        for (int i = 0; i < context.getStackDepth(); i++) {
+            if (context.getStackObject(i) instanceof HasUIDefaults) {
+                modelDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults();
+                if (modelDefaults != null) break;
+            }
+        }
+        for (int i = 0; i < context.getStackDepth(); i++) {
+            if (context.getStackObject(i) instanceof UIRegion) {
+                region = (UIRegion) context.getStackObject(i);
+                break;
+            }
+        }
+    }
+
+    /**
+     * Called by JIBX after all fields have been set
+     *
+     * @param context The JIBX Unmarshalling Context
+     */
+    private void postSet(IUnmarshallingContext context) {
+        // add listeners to pass canvas and style events up tree
+        canvas.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("canvas." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
+            }
+        });
+        style.addPropertyChangeListener(new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                firePropertyChange("style." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
+            }
+        });
+    }
+
+    // =================================================================================================================
+    // Bean Methods
+
+    /**
+     * Get path to this UI State of the form /RegionA/RegionB/StateName
+     *
+     * @return Path to this state
+     */
+    public String getPath() {
+        StringBuilder buf = new StringBuilder(getName());
+        UIRegion region = getRegion();
+        // check if we are foreground background or border
+        boolean found = false;
+        for (UIState state : region.getBackgroundStates()) {
+            if (state == this) {
+                buf.insert(0, "Background/");
+                found = true;
+                break;
+            }
+        }
+        if (!found) {
+            for (UIState state : region.getForegroundStates()) {
+                if (state == this) {
+                    buf.insert(0, "Foreground/");
+                    found = true;
+                    break;
+                }
+            }
+        }
+        if (!found) {
+            for (UIState state : region.getBorderStates()) {
+                if (state == this) {
+                    buf.insert(0, "Border/");
+                    found = true;
+                    break;
+                }
+            }
+        }
+        // add parent regions
+        while (region != null) {
+            buf.insert(0, '/');
+            if (region instanceof UIComponent && ((UIComponent) region).getComponentName() != null) {
+                buf.insert(0, ((UIComponent) region).getComponentName());
+            } else {
+                buf.insert(0, region.getName());
+            }
+            region = region.getRegion();
+        }
+        return buf.toString();
+    }
+
+    void setRegion(UIRegion r) {
+        this.region = r;
+        this.style.setParentStyle(r.getStyle());
+    }
+
+    public UIRegion getRegion() {
+        return region;
+    }
+
+    /**
+     * Get the local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the
+     * indervidual UIDefaults nodes
+     *
+     * @return The UIDefaults for the synth model
+     */
+    public UIDefaults getUIDefaults() {
+        return modelDefaults;
+    }
+
+
+    /**
+     * Get the list of state type keys for this state. This state is applied when the current component state matches as
+     * many as possible of these state types.
+     *
+     * @return List of state types that need to be true for this state. This is direct access to the data and changes to
+     *         the returned list will effect this UiState.
+     */
+    public List<String> getStateKeys() {
+        return stateKeys;
+    }
+
+    public void setInverted(boolean b) {
+        boolean old = inverted;
+        inverted = b;
+        firePropertyChange("invert", old, b);
+    }
+
+    public final boolean isInverted() {
+        return inverted;
+    }
+
+    /**
+     * Get the name of this state
+     *
+     * @return
+     */
+    public String getName() {
+        if (cachedName == null) {
+            StringBuilder buf = new StringBuilder();
+            List<String> keys = new ArrayList<String>(stateKeys);
+            Collections.sort(keys);
+            for (Iterator<String> iter = keys.iterator(); iter.hasNext();) {
+                buf.append(iter.next());
+                if (iter.hasNext()) buf.append('+');
+            }
+            cachedName = buf.toString();
+        }
+        return cachedName;
+    }
+
+    public final Canvas getCanvas() {
+        return canvas;
+    }
+
+    public void setCanvas(Canvas c) {
+        Canvas old = canvas;
+        canvas = c;
+        firePropertyChange("canvas", old, c);
+    }
+
+    public UIStyle getStyle() {
+        return style;
+    }
+
+    // =================================================================================================================
+    // JIBX Helper Methods
+
+    public static String keysToString(List<String> keys) {
+        StringBuilder buf = new StringBuilder();
+        for (Iterator<String> iter = keys.iterator(); iter.hasNext();) {
+            buf.append(iter.next());
+            if (iter.hasNext()) buf.append('+');
+        }
+        return buf.toString();
+    }
+
+    public static List<String> stringToKeys(String keysString) {
+        return Arrays.asList(keysString.split("\\+"));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIStateType.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import org.jdesktop.beans.AbstractBean;
+
+/**
+ * UIStateType - A UIComponents has a collection of these which constitute the avilables states which can be chosen in
+ * the components regions. A UIStateType can be either a custom state or one of the predefined standard states.
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIStateType extends AbstractBean {
+    /* Keys for standard synth states */
+    public static final String ENABLED_KEY = "Enabled";
+    public static final String MOUSE_OVER_KEY = "MouseOver";
+    public static final String PRESSED_KEY = "Pressed";
+    public static final String DISABLED_KEY = "Disabled";
+    public static final String FOCUSED_KEY = "Focused";
+    public static final String SELECTED_KEY = "Selected";
+    public static final String DEFAULT_KEY = "Default";
+    public static final String[] STANDARD_SYNTH_STATE_KEYS = new String[]{
+            ENABLED_KEY, MOUSE_OVER_KEY, PRESSED_KEY, DISABLED_KEY, FOCUSED_KEY, SELECTED_KEY, DEFAULT_KEY
+    };
+    public static final UIStateType[] STANDARD_SYNTH_STATES = new UIStateType[]{
+            new UIStateType(ENABLED_KEY),
+            new UIStateType(MOUSE_OVER_KEY),
+            new UIStateType(PRESSED_KEY),
+            new UIStateType(DISABLED_KEY),
+            new UIStateType(FOCUSED_KEY),
+            new UIStateType(SELECTED_KEY),
+            new UIStateType(DEFAULT_KEY)
+    };
+
+    /** Unique string for the ui key for this state, must be unique within a components set of UiStateTypes */
+    private String key;
+    /**
+     * Snippet of java code that defines calculates the value of this state for a particular component. The varaiable
+     * <code>c</code> is the component. You end with a return statement returning boolean true/false for the current
+     * value of this state for this component. This can be null if the key is one of that standard synth states defined
+     * in constants in this class.
+     */
+    private String codeSnippet;
+
+    /** JIBX no-args contructor */
+    private UIStateType() {}
+
+    private UIStateType(String key) {
+        this.key = key;
+        this.codeSnippet = null;
+    }
+
+    public UIStateType(String key, String codeSnippet) {
+        this.key = key;
+        this.codeSnippet = codeSnippet;
+    }
+
+    // =================================================================================================================
+    // Bean Methods
+
+    /**
+     * Get the ui defaults key for this state type. Unique string for the ui key for this state, must be unique within a
+     * components set of UiStateTypes.
+     *
+     * @return Unique ui default key
+     */
+    public String getKey() {
+        return key;
+    }
+
+    /**
+     * Get the snippet of java code that defines calculates the value of this state for a particular component. The
+     * varaiable <code>c</code> is the component. You end with a return statement returning boolean true/false for the
+     * current value of this state for this component. This can be null if the key is one of that standard synth states
+     * defined in constants in this class.
+     *
+     * @return Snippet of java code or null if this is a synth standard state
+     */
+    public String getCodeSnippet() {
+        return codeSnippet;
+    }
+
+    /**
+     * Set the snippet of java code that defines calculates the value of this state for a particular component. The
+     * varaiable <code>c</code> is the component. You end with a return statement returning boolean true/false for the
+     * current value of this state for this component. This can be null if the key is one of that standard synth states
+     * defined in constants in this class.
+     *
+     * @param codeSnippet Snippet of java code or null if this is a synth standard state
+     */
+    public void setCodeSnippet(String codeSnippet) {
+        this.codeSnippet = codeSnippet;
+    }
+
+    /**
+     * Returns if this state type is a standard synth type and has no code snippet or a custom type that has a code
+     * snippet. It is used by JIBX to determin if the code snippet should be written to XML.
+     *
+     * @return <code>true</code> if codeSnippet is non null
+     */
+    public boolean hasCodeSnippet() {
+        return codeSnippet != null;
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIStyle.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,467 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel;
+
+import org.jdesktop.beans.AbstractBean;
+import org.jdesktop.swingx.designer.font.Typeface;
+import org.jdesktop.swingx.designer.paint.Matte;
+import org.jibx.runtime.IUnmarshallingContext;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * UIStyle
+ *
+ * @author  Richard Bair
+ * @author  Jasper Potts
+ */
+public class UIStyle extends AbstractBean {
+    public static enum CacheMode {NO_CACHING,FIXED_SIZES,NINE_SQUARE_SCALE}
+    public static enum HintAlphaInterpolation {
+        DEFAULT, QUALITY, SPEED
+    }
+
+    public static enum HintAntialiasing {
+        DEFAULT, ON, OFF
+    }
+
+    public static enum HintColorRendering {
+        DEFAULT, QUALITY, SPEED
+    }
+
+    public static enum HintDithering {
+        DEFAULT, DISABLE, ENABLE
+    }
+
+    public static enum HintFractionalMetrics {
+        DEFAULT, ON, OFF
+    }
+
+    public static enum HintInterpolation {
+        NEAREST_NEIGHBOR, BILINEAR, BICUBIC
+    }
+
+    public static enum HintRendering {
+        DEFAULT, QUALITY, SPEED
+    }
+
+    public static enum HintStrokeControl {
+        DEFAULT, NORMALIZE, PURE
+    }
+
+    public static enum HintTextAntialiasing {
+        DEFAULT, ON, OFF, GASP, LCD_HBGR, LCD_HRGB, LCD_VBGR, LCD_VRGB
+    }
+
+    private Typeface font = null;
+    private boolean fontInherited = true;
+    private Matte textForeground = null;
+    private boolean textForegroundInherited = true;
+    private Matte textBackground = null;
+    private boolean textBackgroundInherited = true;
+    private Matte background = null;
+    private boolean backgroundInherited = true;
+
+    private boolean cacheSettingsInherited = true;
+    private CacheMode cacheMode = CacheMode.FIXED_SIZES;
+    private double maxHozCachedImgScaling = 1;
+    private double maxVertCachedImgScaling = 1;
+
+    private HintAlphaInterpolation hintAlphaInterpolation = null;
+    private HintAntialiasing hintAntialiasing = null;
+    private HintColorRendering hintColorRendering = null;
+    private HintDithering hintDithering = null;
+    private HintFractionalMetrics hintFractionalMetrics = null;
+    private HintInterpolation hintInterpolation = null;
+    private HintRendering hintRendering = null;
+    private HintStrokeControl hintStrokeControl = null;
+    private HintTextAntialiasing hintTextAntialiasing = null;
+    private List<UIProperty> uiProperties;
+    private UIStyle parentStyle = null;
+
+    private PropertyChangeListener textForegoundListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            firePropertyChange("textForeground." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
+        }
+    };
+    private PropertyChangeListener textBackgroundListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            firePropertyChange("textBackground." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
+        }
+    };
+    private PropertyChangeListener backgroundListener = new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            firePropertyChange("background." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
+        }
+    };
+
+    // =================================================================================================================
+    // Constructors
+
+    public UIStyle() {
+        uiProperties = new ArrayList<UIProperty>();
+    }
+
+    // =================================================================================================================
+    // JIBX Methods
+
+    /**
+     * Called by JIBX after all fields have been set
+     *
+     * @param context The JIBX Unmarshalling Context
+     */
+    private void postSet(IUnmarshallingContext context) {
+        // walk up till we get a parent style
+        for (int i = 0; i < context.getStackDepth(); i++) {
+            if (context.getStackObject(i) instanceof HasUIStyle) {
+                HasUIStyle hasStyle = (HasUIStyle) context.getStackObject(i);
+                if (hasStyle.getStyle() != this) {
+                    parentStyle = hasStyle.getStyle();
+                    if (parentStyle != null) break;
+                }
+            }
+        }
+    }
+
+    // =================================================================================================================
+    // Bean Methods
+
+    public UIStyle getParentStyle() {
+        return parentStyle;
+    }
+
+    public void setParentStyle(UIStyle parentStyle) {
+        UIStyle old = getParentStyle();
+        this.parentStyle = parentStyle;
+        firePropertyChange("parentStyle", old, getParentStyle());
+    }
+
+    public List<UIProperty> getUiProperties() {
+        return uiProperties;
+    }
+
+    public void addUiProperty(UIProperty uiProperty) {
+        uiProperties.add(uiProperty);
+        // todo not quite sure what events we want here
+        fireIndexedPropertyChange("uiProperties", uiProperties.size(), null, uiProperty);
+//        firePropertyChange("uiProperties", null, uiProperties);
+    }
+
+    public void removeUiProperty(UIProperty uiProperty) {
+        int index = uiProperties.indexOf(uiProperty);
+        if (index != -1) {
+            uiProperties.remove(uiProperty);
+            // todo not quite sure what events we want here
+            fireIndexedPropertyChange("uiProperties", index, null, uiProperty);
+//            firePropertyChange("uiProperties", null, uiProperties);
+        }
+    }
+
+    public Typeface getFont() {
+        if (isFontInherited()) {
+            return parentStyle == null ? font : parentStyle.getFont();
+        } else {
+            return font;
+        }
+    }
+
+    public void setFont(Typeface font) {
+        Typeface old = getFont();
+        this.font = font;
+        firePropertyChange("font", old, font);
+    }
+
+    public boolean isFontInherited() {
+        return fontInherited;
+    }
+
+    public void setFontInherited(boolean b) {
+        boolean old = isFontInherited();
+        fontInherited = b;
+        firePropertyChange("fontInherited", old, b);
+
+        if (!fontInherited && font == null && parentStyle != null && parentStyle.getFont() != null) {
+            font = parentStyle.getFont().clone();
+            firePropertyChange("font", null, font);
+        }
+    }
+
+    public Matte getTextForeground() {
+        if (isTextForegroundInherited()) {
+            return parentStyle == null ? null : parentStyle.getTextForeground();
+        } else {
+            return textForeground;
+        }
+    }
+
+    public boolean isTextForegroundInherited() {
+        return textForegroundInherited;
+    }
+
+    public void setTextForegroundInherited(boolean b) {
+        boolean old = isTextForegroundInherited();
+        textForegroundInherited = b;
+        firePropertyChange("foregroundInherited", old, b);
+
+        if (!textForegroundInherited && textForeground == null && parentStyle != null &&
+                parentStyle.getTextForeground() != null) {
+            textForeground = parentStyle.getTextForeground().clone();
+            firePropertyChange("textForeground", null, textForeground);
+        }
+    }
+
+    public void setTextForeground(Matte textForeground) {
+        Matte old = this.textForeground;
+        if (old != null) old.removePropertyChangeListener(textForegoundListener);
+        this.textForeground = textForeground;
+        if (this.textForeground != null) this.textForeground.addPropertyChangeListener(textForegoundListener);
+        firePropertyChange("textForeground", old, this.textForeground);
+    }
+
+    public Matte getTextBackground() {
+        if (isTextBackgroundInherited()) {
+            return parentStyle == null ? null : parentStyle.getBackground();
+        } else {
+            return textBackground;
+        }
+    }
+
+    public boolean isTextBackgroundInherited() {
+        return textBackgroundInherited;
+    }
+
+    public void setTextBackgroundInherited(boolean b) {
+        boolean old = isBackgroundInherited();
+        textBackgroundInherited = b;
+        firePropertyChange("textBackgroundInherited", old, b);
+
+        if (!textBackgroundInherited && textBackground == null && parentStyle != null &&
+                parentStyle.getTextBackground() != null) {
+            textBackground = parentStyle.getTextBackground().clone();
+            firePropertyChange("textBackground", null, textBackground);
+        }
+    }
+
+    public void setTextBackground(Matte textBackground) {
+        Matte old = this.textBackground;
+        if (old != null) old.removePropertyChangeListener(textBackgroundListener);
+        this.textBackground = textBackground;
+        if (this.textBackground != null) this.textBackground.addPropertyChangeListener(textBackgroundListener);
+        firePropertyChange("textBackground", old, this.textBackground);
+    }
+
+    public Matte getBackground() {
+        if (isBackgroundInherited()) {
+            return parentStyle == null ? null : parentStyle.getBackground();
+        } else {
+            return background;
+        }
+    }
+
+    public boolean isBackgroundInherited() {
+        return backgroundInherited;
+    }
+
+    public void setBackgroundInherited(boolean b) {
+        boolean old = isBackgroundInherited();
+        backgroundInherited = b;
+        firePropertyChange("backgroundInherited", old, b);
+
+        if (!backgroundInherited && background == null && parentStyle != null && parentStyle.getBackground() != null) {
+            background = parentStyle.getBackground().clone();
+            firePropertyChange("background", null, background);
+        }
+    }
+
+    public void setBackground(Matte background) {
+        Matte old = this.background;
+        if (old != null) old.removePropertyChangeListener(backgroundListener);
+        this.background = background;
+        if (this.background != null) this.background.addPropertyChangeListener(backgroundListener);
+        firePropertyChange("background", old, this.background);
+    }
+
+    public HintAlphaInterpolation getHintAlphaInterpolation() {
+        return hintAlphaInterpolation;
+    }
+
+    public void setHintAlphaInterpolation(HintAlphaInterpolation hintAlphaInterpolation) {
+        HintAlphaInterpolation old = getHintAlphaInterpolation();
+        this.hintAlphaInterpolation = hintAlphaInterpolation;
+        firePropertyChange("hintAlphaInterpolation", old, getHintAlphaInterpolation());
+    }
+
+    public HintAntialiasing getHintAntialiasing() {
+        return hintAntialiasing;
+    }
+
+    public void setHintAntialiasing(HintAntialiasing hintAntialiasing) {
+        HintAntialiasing old = getHintAntialiasing();
+        this.hintAntialiasing = hintAntialiasing;
+        firePropertyChange("hintAntialiasing", old, getHintAntialiasing());
+    }
+
+    public HintColorRendering getHintColorRendering() {
+        return hintColorRendering;
+    }
+
+    public void setHintColorRendering(HintColorRendering hintColorRendering) {
+        HintColorRendering old = getHintColorRendering();
+        this.hintColorRendering = hintColorRendering;
+        firePropertyChange("hintColorRendering", old, getHintColorRendering());
+    }
+
+    public HintDithering getHintDithering() {
+        return hintDithering;
+    }
+
+    public void setHintDithering(HintDithering hintDithering) {
+        HintDithering old = getHintDithering();
+        this.hintDithering = hintDithering;
+        firePropertyChange("hintDithering", old, getHintDithering());
+    }
+
+    public HintFractionalMetrics getHintFractionalMetrics() {
+        return hintFractionalMetrics;
+    }
+
+    public void setHintFractionalMetrics(HintFractionalMetrics hintFractionalMetrics) {
+        HintFractionalMetrics old = getHintFractionalMetrics();
+        this.hintFractionalMetrics = hintFractionalMetrics;
+        firePropertyChange("hintFractionalMetrics", old, getHintFractionalMetrics());
+    }
+
+    public HintInterpolation getHintInterpolation() {
+        return hintInterpolation;
+    }
+
+    public void setHintInterpolation(HintInterpolation hintInterpolation) {
+        HintInterpolation old = getHintInterpolation();
+        this.hintInterpolation = hintInterpolation;
+        firePropertyChange("hintInterpolation", old, getHintInterpolation());
+    }
+
+    public HintRendering getHintRendering() {
+        return hintRendering;
+    }
+
+    public void setHintRendering(HintRendering hintRendering) {
+        HintRendering old = getHintRendering();
+        this.hintRendering = hintRendering;
+        firePropertyChange("hintRendering", old, getHintRendering());
+    }
+
+    public HintStrokeControl getHintStrokeControl() {
+        return hintStrokeControl;
+    }
+
+    public void setHintStrokeControl(HintStrokeControl hintStrokeControl) {
+        HintStrokeControl old = getHintStrokeControl();
+        this.hintStrokeControl = hintStrokeControl;
+        firePropertyChange("hintStrokeControl", old, getHintStrokeControl());
+    }
+
+    public HintTextAntialiasing getHintTextAntialiasing() {
+        return hintTextAntialiasing;
+    }
+
+    public void setHintTextAntialiasing(HintTextAntialiasing hintTextAntialiasing) {
+        HintTextAntialiasing old = getHintTextAntialiasing();
+        this.hintTextAntialiasing = hintTextAntialiasing;
+        firePropertyChange("hintTextAntialiasing", old, getHintTextAntialiasing());
+    }
+
+    public boolean isCacheSettingsInherited() {
+        return cacheSettingsInherited;
+    }
+
+    public void setCacheSettingsInherited(boolean cacheSettingsInherited) {
+        boolean old = isCacheSettingsInherited();
+        this.cacheSettingsInherited = cacheSettingsInherited;
+        firePropertyChange("cacheSettingsInherited", old, isCacheSettingsInherited());
+    }
+
+    public CacheMode getCacheMode() {
+        if (isCacheSettingsInherited()) {
+            return (parentStyle == null)?CacheMode.FIXED_SIZES : parentStyle.getCacheMode();
+        } else {
+            return cacheMode;
+        }
+    }
+
+    public void setCacheMode(CacheMode cacheMode) {
+        CacheMode old = this.cacheMode;
+        this.cacheMode = cacheMode;
+        if (isCacheSettingsInherited()) {
+            setCacheSettingsInherited(false);
+            UIStyle parent = getParentStyle();
+            setMaxHozCachedImgScaling(parent == null ? 1 : parent.getMaxHozCachedImgScaling());
+            setMaxVertCachedImgScaling(parent == null ? 1 : parent.getMaxVertCachedImgScaling());
+        }
+        firePropertyChange("cacheMode",old,cacheMode);
+    }
+
+    public double getMaxHozCachedImgScaling() {
+        if (isCacheSettingsInherited()) {
+            return parentStyle == null ? 1 : parentStyle.getMaxHozCachedImgScaling();
+        } else {
+            return maxHozCachedImgScaling;
+        }
+    }
+
+    public void setMaxHozCachedImgScaling(double maxHozCachedImgScaling) {
+        double old = getMaxHozCachedImgScaling();
+        this.maxHozCachedImgScaling = maxHozCachedImgScaling;
+        if (isCacheSettingsInherited()) {
+            setCacheSettingsInherited(false);
+            setCacheMode((parentStyle == null)?CacheMode.FIXED_SIZES : parentStyle.getCacheMode());
+            setMaxVertCachedImgScaling(parentStyle == null ? 1 : parentStyle.getMaxVertCachedImgScaling());
+        }
+        firePropertyChange("maxHozCachedImgScaling", old, getMaxHozCachedImgScaling());
+    }
+
+    public double getMaxVertCachedImgScaling() {
+        if (isCacheSettingsInherited()) {
+            return parentStyle == null ? 1 : parentStyle.getMaxVertCachedImgScaling();
+        } else {
+            return maxVertCachedImgScaling;
+        }
+    }
+
+    public void setMaxVertCachedImgScaling(double maxVertCachedImgScaling) {
+        double old = getMaxVertCachedImgScaling();
+        this.maxVertCachedImgScaling = maxVertCachedImgScaling;
+        if (isCacheSettingsInherited()) {
+            setCacheSettingsInherited(false);
+            setCacheMode((parentStyle == null)?CacheMode.FIXED_SIZES : parentStyle.getCacheMode());
+            setMaxHozCachedImgScaling(parentStyle == null ? 1 : parentStyle.getMaxHozCachedImgScaling());
+        }
+        firePropertyChange("maxVertCachedImgScaling", old, getMaxVertCachedImgScaling());
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/BorderMapper.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,285 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel.jibxhelpers;
+
+import org.jibx.runtime.IMarshaller;
+import org.jibx.runtime.IUnmarshaller;
+import org.jibx.runtime.IAliasable;
+import org.jibx.runtime.IUnmarshallingContext;
+import org.jibx.runtime.JiBXException;
+import org.jibx.runtime.IMarshallingContext;
+import org.jibx.runtime.impl.MarshallingContext;
+import org.jibx.runtime.impl.UnmarshallingContext;
+import org.jdesktop.swingx.designer.jibxhelpers.ColorMapper;
+
+import javax.swing.border.LineBorder;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.EtchedBorder;
+import javax.swing.border.BevelBorder;
+import javax.swing.border.MatteBorder;
+import javax.swing.border.CompoundBorder;
+import javax.swing.border.Border;
+import javax.swing.BorderFactory;
+import java.awt.Insets;
+import java.awt.Color;
+import org.jdesktop.synthdesigner.synthmodel.PainterBorder;
+
+/**
+ * BorderMapper - JIBX xml mapper for swing standard borders
+ *
+ * @author Jasper Potts
+ */
+public class BorderMapper implements IMarshaller, IUnmarshaller, IAliasable {
+    private static enum BorderType {
+        empty, line, etched, bevel, matte, compound, painter
+    }
+    private static enum SubType {
+        raised(EtchedBorder.RAISED), lowered(EtchedBorder.LOWERED);
+        private int subtype;
+
+        SubType(int type) {
+            this.subtype = type;
+        }
+
+        public int getSubType() {
+            return subtype;
+        }
+    }
+    private static final String ELEMENT_NAME = "border";
+    private static final String TYPE_NAME = "type";
+    private static final String SUB_TYPE_NAME = "subtype";
+    private static final String TOP_NAME = "top";
+    private static final String BOTTOM_NAME = "bottom";
+    private static final String LEFT_NAME = "left";
+    private static final String RIGHT_NAME = "right";
+    private static final String THICKNESS_NAME = "thickness";
+    private static final String INSIDE_NAME = "inside";
+    private static final String OUTSIDE_NAME = "outside";
+    private static final String PAINTER_NAME = "painter";
+
+    private String uri;
+    private int index;
+    private String name;
+
+    public BorderMapper() {
+        uri = null;
+        index = 0;
+        name = ELEMENT_NAME;
+    }
+
+    public BorderMapper(String uri, int index, String name) {
+        this.uri = uri;
+        this.index = index;
+        this.name = name;
+    }
+
+    public boolean isExtension(int i) {
+        return false;
+    }
+
+    public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws
+            JiBXException {
+        return iUnmarshallingContext.isAt(uri, ELEMENT_NAME);
+    }
+
+    public void marshal(Object object, IMarshallingContext iMarshallingContext)
+            throws JiBXException {
+        if (!(iMarshallingContext instanceof MarshallingContext)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else {
+            MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
+            if (object instanceof PainterBorder) {
+                PainterBorder border = (PainterBorder) object;
+                Insets insets = border.getBorderInsets();
+                ctx.startTagAttributes(index, name)
+                        .attribute(index, TYPE_NAME, BorderType.painter.toString())
+                        .attribute(index, PAINTER_NAME, border.getPainterName())
+                        .attribute(index, TOP_NAME, insets.top)
+                        .attribute(index, BOTTOM_NAME, insets.bottom)
+                        .attribute(index, LEFT_NAME, insets.left)
+                        .attribute(index, RIGHT_NAME, insets.right)
+                        .closeStartContent();
+                ctx.endTag(index, name);
+            } else if (object instanceof EmptyBorder) {
+                Insets insets = ((EmptyBorder) object).getBorderInsets();
+                ctx.startTagAttributes(index, name)
+                        .attribute(index, TYPE_NAME,
+                                BorderType.empty.toString())
+                        .attribute(index, TOP_NAME, insets.top)
+                        .attribute(index, BOTTOM_NAME, insets.bottom)
+                        .attribute(index, LEFT_NAME, insets.left)
+                        .attribute(index, RIGHT_NAME, insets.right)
+                        .closeStartEmpty();
+            } else if (object instanceof LineBorder) {
+                LineBorder border = (LineBorder) object;
+                ctx.startTagAttributes(index, name).
+                        attribute(index, TYPE_NAME, BorderType.line.toString()).
+                        attribute(index, THICKNESS_NAME, border.getThickness()).
+                        closeStartContent();
+                new ColorMapper().marshal(border.getLineColor(), ctx);
+                ctx.endTag(index, name);
+            } else if (object instanceof EtchedBorder) {
+                EtchedBorder border = (EtchedBorder) object;
+                ctx.startTagAttributes(index, name).
+                        attribute(index, TYPE_NAME,
+                                BorderType.etched.toString()).
+                        attribute(index, SUB_TYPE_NAME,
+                                border.getEtchType()==EtchedBorder.RAISED?
+                                        SubType.raised.toString():
+                                        SubType.lowered.toString()).
+                        closeStartContent();
+                new ColorMapper().marshal(border.getHighlightColor(), ctx);
+                new ColorMapper().marshal(border.getShadowColor(), ctx);
+                ctx.endTag(index, name);
+            } else if (object instanceof BevelBorder) {
+                BevelBorder border = (BevelBorder) object;
+                ctx.startTagAttributes(index, name).
+                        attribute(index, TYPE_NAME,
+                                BorderType.bevel.toString()).
+                        attribute(index, SUB_TYPE_NAME,
+                                border.getBevelType()==BevelBorder.RAISED?
+                                        SubType.raised.toString():
+                                        SubType.lowered.toString()).
+                        closeStartContent();
+                new ColorMapper().marshal(border.getHighlightInnerColor(), ctx);
+                new ColorMapper().marshal(border.getHighlightOuterColor(), ctx);
+                new ColorMapper().marshal(border.getShadowInnerColor(), ctx);
+                new ColorMapper().marshal(border.getHighlightOuterColor(), ctx);
+                ctx.endTag(index, name);
+            } else if (object instanceof MatteBorder) {
+                MatteBorder border = (MatteBorder) object;
+                Insets insets = ((EmptyBorder) object).getBorderInsets();
+                ctx.startTagAttributes(index, name)
+                        .attribute(index, TYPE_NAME,
+                                BorderType.matte.toString())
+                        .attribute(index, TOP_NAME, insets.top)
+                        .attribute(index, BOTTOM_NAME, insets.bottom)
+                        .attribute(index, LEFT_NAME, insets.left)
+                        .attribute(index, RIGHT_NAME, insets.right)
+                        .closeStartContent();
+                new ColorMapper().marshal(border.getMatteColor(), ctx);
+                // todo: we should support tiled icons here to be 100% complete
+                ctx.endTag(index, name);
+            } else if (object instanceof CompoundBorder) {
+                CompoundBorder border = (CompoundBorder) object;
+                ctx.startTagAttributes(index, name)
+                        .attribute(index, TYPE_NAME,
+                                BorderType.compound.toString())
+                        .closeStartContent();
+                new BorderMapper(null,0, INSIDE_NAME).marshal(border.getInsideBorder(),ctx);
+                new BorderMapper(null,0, OUTSIDE_NAME).marshal(border.getOutsideBorder(),ctx);
+                ctx.endTag(index, name);
+            } else {
+                throw new JiBXException("Invalid object type for marshaller");
+            }
+        }
+    }
+
+    public Object unmarshal(Object object,
+                            IUnmarshallingContext iUnmarshallingContext)
+            throws JiBXException {
+        Border border = null;
+        // make sure we're at the appropriate start tag
+        UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
+        if (!ctx.isAt(uri, name)) {
+            ctx.throwStartTagNameError(uri, name);
+        }
+        // get type
+        BorderType type = BorderType.valueOf(ctx.attributeText(uri, TYPE_NAME)
+                .toLowerCase());
+        int top,bottom,left,right;
+        Color color;
+        switch(type){
+            case empty:
+                top = ctx.attributeInt(uri, TOP_NAME, index);
+                bottom = ctx.attributeInt(uri, BOTTOM_NAME, index);
+                left = ctx.attributeInt(uri, LEFT_NAME, index);
+                right = ctx.attributeInt(uri, RIGHT_NAME, index);
+                border = BorderFactory.createEmptyBorder(top,left,bottom,right);
+                break;
+            case line:
+                int thickness = ctx.attributeInt(uri, THICKNESS_NAME, index);
+                ctx.parsePastStartTag(uri,name);
+                color = (Color)new ColorMapper().unmarshal(null,ctx);
+                border = BorderFactory.createLineBorder(color,thickness);
+                break;
+            case etched:
+                SubType etchedType = SubType.valueOf(
+                        ctx.attributeText(uri, SUB_TYPE_NAME).toLowerCase());
+                ctx.parsePastStartTag(uri,name);
+                Color highColor = (Color)new ColorMapper()
+                        .unmarshal(null,ctx);
+                Color shadowColor = (Color)new ColorMapper()
+                        .unmarshal(null,ctx);
+                border = BorderFactory.createEtchedBorder(
+                        etchedType.getSubType(),highColor,shadowColor);
+                break;
+            case bevel:
+                SubType bevelType = SubType.valueOf(
+                        ctx.attributeText(uri, SUB_TYPE_NAME).toLowerCase());
+                ctx.parsePastStartTag(uri,name);
+                Color innerHighColor = (Color)new ColorMapper()
+                        .unmarshal(null,ctx);
+                Color outerHighColor = (Color)new ColorMapper()
+                        .unmarshal(null,ctx);
+                Color innerShadowColor = (Color)new ColorMapper()
+                        .unmarshal(null,ctx);
+                Color outerShadowColor = (Color)new ColorMapper()
+                        .unmarshal(null,ctx);
+                border = BorderFactory.createBevelBorder(
+                        bevelType.getSubType(),outerHighColor,innerHighColor,
+                        outerShadowColor,innerShadowColor);
+                break;
+            case matte:
+                top = ctx.attributeInt(uri, TOP_NAME, index);
+                bottom = ctx.attributeInt(uri, BOTTOM_NAME, index);
+                left = ctx.attributeInt(uri, LEFT_NAME, index);
+                right = ctx.attributeInt(uri, RIGHT_NAME, index);
+                ctx.parsePastStartTag(uri,name);
+                color = (Color)new ColorMapper().unmarshal(null,ctx);
+                border = BorderFactory.createMatteBorder(top,left,bottom,right,
+                        color);
+                break;
+            case compound:
+                ctx.parsePastStartTag(uri,name);
+                Border inside = (Border) new BorderMapper(null,0, INSIDE_NAME)
+                        .unmarshal(null,ctx);
+                Border outside = (Border) new BorderMapper(null,0, OUTSIDE_NAME)
+                        .unmarshal(null,ctx);
+                border = BorderFactory.createCompoundBorder(outside, inside);
+                break;
+            case painter:
+                String painterName = ctx.attributeText(uri, PAINTER_NAME);
+                top = ctx.attributeInt(uri, TOP_NAME, index);
+                bottom = ctx.attributeInt(uri, BOTTOM_NAME, index);
+                left = ctx.attributeInt(uri, LEFT_NAME, index);
+                right = ctx.attributeInt(uri, RIGHT_NAME, index);
+                border = new PainterBorder(painterName, top, left, bottom, right);
+        }
+        ctx.parsePastEndTag(uri, name);
+        return border;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/ClassConverter.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel.jibxhelpers;
+
+/**
+ * ClassConverter
+ *
+ * @author Created by Jasper Potts (Jul 16, 2007)
+ */
+public class ClassConverter {
+
+    public static String classToString(Class c) {
+        return c == null ? "" : c.getName();
+    }
+
+    public static Class stringToClass(String className) {
+        if (className == null || className.length() == 0) {
+            return null;
+        }
+        try {
+            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+            if (classLoader == null) classLoader = ClassConverter.class.getClassLoader();
+            return classLoader.loadClass(className);
+        } catch (ClassNotFoundException e) {
+            System.err.println("Failed to find class with name [" + className + "] in ClassConverter");
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/ClassMapper.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel.jibxhelpers;
+
+import org.jibx.runtime.IMarshaller;
+import org.jibx.runtime.IMarshallingContext;
+import org.jibx.runtime.IUnmarshaller;
+import org.jibx.runtime.IUnmarshallingContext;
+import org.jibx.runtime.JiBXException;
+import org.jibx.runtime.impl.MarshallingContext;
+import org.jibx.runtime.impl.UnmarshallingContext;
+
+
+public class ClassMapper implements IMarshaller, IUnmarshaller {
+    private static final String ELEMENT_NAME = "type";
+
+    public boolean isExtension(int i) {
+        return false;
+    }
+
+    public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        return iUnmarshallingContext.isAt(null, ELEMENT_NAME);
+    }
+
+    public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
+        if (!(object instanceof Class)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else if (!(iMarshallingContext instanceof MarshallingContext)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else {
+            MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
+            Class clazz = (Class) object;
+            ctx.startTagAttributes(0, ELEMENT_NAME).
+                    attribute(0, "value", clazz.getName()).
+                    closeStartEmpty();
+        }
+    }
+
+    public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        // make sure we're at the appropriate start tag
+        UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
+        if (!ctx.isAt(null, ELEMENT_NAME)) {
+            ctx.throwStartTagNameError(null, ELEMENT_NAME);
+        }
+        // get values
+        String value = ctx.attributeText(null, "value", null);
+        ctx.parsePastEndTag(null, ELEMENT_NAME);
+        // create
+        try {
+            return Class.forName(value);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/FontMapper.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel.jibxhelpers;
+
+import org.jibx.runtime.IMarshaller;
+import org.jibx.runtime.IMarshallingContext;
+import org.jibx.runtime.IUnmarshaller;
+import org.jibx.runtime.IUnmarshallingContext;
+import org.jibx.runtime.JiBXException;
+import org.jibx.runtime.impl.MarshallingContext;
+import org.jibx.runtime.impl.UnmarshallingContext;
+
+import java.awt.Font;
+
+/**
+ * FontMapper
+ *
+ * @author Created by Jasper Potts (Jun 8, 2007)
+ */
+public class FontMapper implements IMarshaller, IUnmarshaller {
+    private static final String ELEMENT_NAME = "font";
+    private static final String FAMILY_NAME = "family";
+    private static final String STYLE_NAME = "style";
+    private static final String SIZE_NAME = "size";
+
+    public boolean isExtension(int i) {
+        return false;
+    }
+
+    public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        return iUnmarshallingContext.isAt(null, ELEMENT_NAME);
+    }
+
+    public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
+        if (!(object instanceof Font)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else if (!(iMarshallingContext instanceof MarshallingContext)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else {
+            MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
+            Font font = (Font) object;
+            ctx.startTagAttributes(0, ELEMENT_NAME).
+                    attribute(0, FAMILY_NAME, font.getFamily()).
+                    attribute(0, STYLE_NAME, font.getStyle()).
+                    attribute(0, SIZE_NAME, font.getSize()).
+                    closeStartEmpty();
+        }
+    }
+
+    public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        // make sure we're at the appropriate start tag
+        UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
+        if (!ctx.isAt(null, ELEMENT_NAME)) {
+            ctx.throwStartTagNameError(null, ELEMENT_NAME);
+        }
+        // get values
+        String name = ctx.attributeText(null, FAMILY_NAME, null);
+        int style = ctx.attributeInt(null, STYLE_NAME, 0);
+        int size = ctx.attributeInt(null, SIZE_NAME, 0);
+        ctx.parsePastEndTag(null, ELEMENT_NAME);
+        // create
+        return new Font(name, style, size);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/UIPropertyMapper.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,155 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package org.jdesktop.synthdesigner.synthmodel.jibxhelpers;
+
+import org.jdesktop.swingx.designer.jibxhelpers.DimensionMapper;
+import org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper;
+import org.jdesktop.synthdesigner.synthmodel.UIProperty;
+import org.jibx.runtime.IMarshallable;
+import org.jibx.runtime.IMarshaller;
+import org.jibx.runtime.IMarshallingContext;
+import org.jibx.runtime.IUnmarshaller;
+import org.jibx.runtime.IUnmarshallingContext;
+import org.jibx.runtime.JiBXException;
+import org.jibx.runtime.impl.MarshallingContext;
+import org.jibx.runtime.impl.UnmarshallingContext;
+
+/**
+ * UIPropertyMapper
+ *
+ * @author Created by Jasper Potts (Jul 10, 2007)
+ */
+public class UIPropertyMapper implements IMarshaller, IUnmarshaller {
+    private static final String ELEMENT_NAME = "uiProperty";
+    private static final String NAME_NAME = "name";
+    private static final String TYPE_NAME = "type";
+    private static final String VALUE_NAME = "value";
+
+    public boolean isExtension(int i) {
+        return false;
+    }
+
+    public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        return iUnmarshallingContext.isAt(null, ELEMENT_NAME);
+    }
+
+    public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
+        if (!(object instanceof UIProperty)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else if (!(iMarshallingContext instanceof MarshallingContext)) {
+            throw new JiBXException("Invalid object type for marshaller");
+        } else {
+            MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
+            UIProperty property = (UIProperty) object;
+            ctx.startTagAttributes(0, ELEMENT_NAME);
+            ctx.attribute(0, NAME_NAME, property.getName());
+            ctx.attribute(0, TYPE_NAME, property.getType().toString());
+            switch (property.getType()) {
+                case BOOLEAN:
+                case DOUBLE:
+                case INT:
+                case FLOAT:
+                case STRING:
+                    ctx.attribute(0, VALUE_NAME, property.getValue().toString());
+                    ctx.closeStartEmpty();
+                    break;
+                case INSETS:
+                    ctx.closeStartContent();
+                    new InsetsMapper().marshal(property.getValue(), ctx);
+                    ctx.endTag(0, ELEMENT_NAME);
+                    break;
+                case COLOR:
+                case FONT:
+                    ctx.closeStartContent();
+                    if (property.getValue() instanceof IMarshallable) {
+                        ((IMarshallable) property.getValue()).marshal(ctx);
+                    } else {
+                        throw new JiBXException("Mapped value is not marshallable");
+                    }
+                    ctx.endTag(0, ELEMENT_NAME);
+                    break;
+                case DIMENSION:
+                    ctx.closeStartContent();
+                    new DimensionMapper().marshal(property.getValue(), ctx);
+                    ctx.endTag(0, ELEMENT_NAME);
+                    break;
+                case BORDER:
+                    ctx.closeStartContent();
+                    new BorderMapper().marshal(property.getValue(), ctx);
+                    ctx.endTag(0, ELEMENT_NAME);
+                    break;
+            }
+        }
+    }
+
+    public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
+        // make sure we're at the appropriate start tag
+        UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
+        if (!ctx.isAt(null, ELEMENT_NAME)) {
+            ctx.throwStartTagNameError(null, ELEMENT_NAME);
+        }
+        // get values
+        Object value = null;
+        String name = ctx.attributeText(null, NAME_NAME, null);
+        UIProperty.PropertyType type = UIProperty.PropertyType.valueOf(ctx.attributeText(null, TYPE_NAME, null));
+        switch (type) {
+            case BOOLEAN:
+                value = Boolean.parseBoolean(ctx.attributeText(null, VALUE_NAME, null));
+                break;
+            case DOUBLE:
+                value = Double.parseDouble(ctx.attributeText(null, VALUE_NAME, null));
+                break;
+            case INT:
+                value = Integer.parseInt(ctx.attributeText(null, VALUE_NAME, null));
+                break;
+            case FLOAT:
+                value = Float.parseFloat(ctx.attributeText(null, VALUE_NAME, null));
+                break;
+            case STRING:
+                value = ctx.attributeText(null, VALUE_NAME, null);
+                break;
+            case INSETS:
+                ctx.parsePastStartTag(null, ELEMENT_NAME);
+                value = new InsetsMapper().unmarshal(value, ctx);
+                break;
+            case COLOR:
+            case FONT:
+                ctx.parsePastStartTag(null, ELEMENT_NAME);
+                value = ctx.unmarshalElement();
+                break;
+            case DIMENSION:
+                ctx.parsePastStartTag(null, ELEMENT_NAME);
+                value = new DimensionMapper().unmarshal(value, ctx);
+                break;
+            case BORDER:
+                ctx.parsePastStartTag(null, ELEMENT_NAME);
+                value = new BorderMapper().unmarshal(value, ctx);
+                break;
+        }
+        ctx.parsePastEndTag(null, ELEMENT_NAME);
+        // create
+        return new UIProperty(name, type, value);
+    }
+}
--- a/jdk/src/share/bin/emessages.h	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/bin/emessages.h	Wed Jul 05 16:52:18 2017 +0200
@@ -50,6 +50,12 @@
 #define JAR_ERROR2      "Error: Unable to access jarfile %s"
 #define JAR_ERROR3      "Error: Invalid or corrupt jarfile %s"
 
+#define CLS_ERROR1      "Error: Could not find the main class %s.\n" JNI_ERROR
+#define CLS_ERROR2      "Error: Failed to load Main Class: %s\n%s"
+#define CLS_ERROR3      "Error: No main method found in specified class.\n" GEN_ERROR
+#define CLS_ERROR4      "Error: Main method not public\n" GEN_ERROR
+#define CLS_ERROR5      "Error: main-class: attribute exceeds system limits of %d bytes\n" GEN_ERROR
+
 #define CFG_WARN1       "Warning: %s VM not supported; %s VM will be used"
 #define CFG_WARN2       "Warning: No leading - on line %d of `%s'"
 #define CFG_WARN3       "Warning: Missing VM type on line %d of `%s'"
--- a/jdk/src/share/bin/java.c	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/bin/java.c	Wed Jul 05 16:52:18 2017 +0200
@@ -915,8 +915,14 @@
      * to avoid locating, expanding and parsing the manifest extra
      * times.
      */
-    if (info.main_class != NULL)
-        (void)JLI_StrCat(env_entry, info.main_class);
+    if (info.main_class != NULL) {
+        if (JLI_StrLen(info.main_class) <= MAXNAMELEN) {
+            (void)JLI_StrCat(env_entry, info.main_class);
+        } else {
+            JLI_ReportErrorMessage(CLS_ERROR5, MAXNAMELEN);
+            exit(1);
+        }
+    }
     (void)putenv(env_entry);
     ExecJRE(jre, new_argv);
     JLI_FreeManifest();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/com/sun/java/swing/Painter.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package com.sun.java.swing;
+
+/**
+ * This class is preserved for backward compatibility with JDK 6.
+ *
+ * @deprecated Use {@link javax.swing.Painter} instead.
+ */
+public interface Painter<T> extends javax.swing.Painter {
+}
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -134,6 +134,15 @@
         super(filechooser);
     }
 
+    protected ActionMap createActionMap() {
+        ActionMap map = new ActionMapUIResource();
+        map.put("approveSelection", getApproveSelectionAction());
+        map.put("cancelSelection", getCancelSelectionAction());
+        map.put("Go Up", getChangeToParentDirectoryAction());
+        map.put("fileNameCompletion", getFileNameCompletionAction());
+        return map;
+    }
+
     public String getFileName() {
         JFileChooser fc = getFileChooser();
         String typedInName = fileNameTextField != null ?
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/nimbus/AbstractRegionPainter.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package com.sun.java.swing.plaf.nimbus;
+
+/**
+ * This class is preserved for backward compatibility with JDK 6.
+ *
+ * @deprecated Use {@link javax.swing.plaf.nimbus.AbstractRegionPainter} instead.
+ */
+public abstract class AbstractRegionPainter extends javax.swing.plaf.nimbus.AbstractRegionPainter {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/nimbus/NimbusLookAndFeel.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package com.sun.java.swing.plaf.nimbus;
+
+/**
+ * This class is preserved for backward compatibility with JDK 6.
+ *
+ * @deprecated Use {@link javax.swing.plaf.nimbus.NimbusLookAndFeel} instead.
+ */
+public class NimbusLookAndFeel extends javax.swing.plaf.nimbus.NimbusLookAndFeel {
+}
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1009,6 +1009,7 @@
             "PopupMenu.background", MenuBackgroundColor,
             "PopupMenu.foreground", MenuTextColor,
             "PopupMenu.popupSound", "win.sound.menuPopup",
+            "PopupMenu.consumeEventOnClose", Boolean.TRUE,
 
             // Menus
             "Menu.font", MenuFont,
--- a/jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java	Wed Jul 05 16:52:18 2017 +0200
@@ -22,7 +22,6 @@
  * CA 95054 USA or visit www.sun.com if you need additional information or
  * have any questions.
  */
-
 package com.sun.jmx.remote.internal;
 
 import java.io.IOException;
@@ -34,6 +33,7 @@
 import java.util.Map;
 import java.util.concurrent.Executor;
 
+import java.security.AccessControlContext;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import javax.security.auth.Subject;
@@ -54,7 +54,10 @@
 
 
 public abstract class ClientNotifForwarder {
-    public ClientNotifForwarder(Map<String, ?> env) {
+
+    private final AccessControlContext acc;
+
+    public ClientNotifForwarder(Map env) {
         this(null, env);
     }
 
@@ -87,6 +90,8 @@
             this.command = command;
             if (thread == null) {
                 thread = new Thread() {
+
+                    @Override
                     public void run() {
                         while (true) {
                             Runnable r;
@@ -130,6 +135,7 @@
 
         this.defaultClassLoader = defaultClassLoader;
         this.executor = ex;
+        this.acc = AccessController.getContext();
     }
 
     /**
@@ -380,28 +386,85 @@
         setState(TERMINATED);
     }
 
-// -------------------------------------------------
-// private classes
-// -------------------------------------------------
+
+    // -------------------------------------------------
+    // private classes
+    // -------------------------------------------------
     //
+
     private class NotifFetcher implements Runnable {
+
+        private volatile boolean alreadyLogged = false;
+
+        private void logOnce(String msg, SecurityException x) {
+            if (alreadyLogged) return;
+            // Log only once.
+            logger.config("setContextClassLoader",msg);
+            if (x != null) logger.fine("setContextClassLoader", x);
+            alreadyLogged = true;
+        }
+
+        // Set new context class loader, returns previous one.
+        private final ClassLoader setContextClassLoader(final ClassLoader loader) {
+            final AccessControlContext ctxt = ClientNotifForwarder.this.acc;
+            // if ctxt is null, log a config message and throw a
+            // SecurityException.
+            if (ctxt == null) {
+                logOnce("AccessControlContext must not be null.",null);
+                throw new SecurityException("AccessControlContext must not be null");
+            }
+            return AccessController.doPrivileged(
+                new PrivilegedAction<ClassLoader>() {
+                    public ClassLoader run() {
+                        try {
+                            // get context class loader - may throw
+                            // SecurityException - though unlikely.
+                            final ClassLoader previous =
+                                Thread.currentThread().getContextClassLoader();
+
+                            // if nothing needs to be done, break here...
+                            if (loader == previous) return previous;
+
+                            // reset context class loader - may throw
+                            // SecurityException
+                            Thread.currentThread().setContextClassLoader(loader);
+                            return previous;
+                        } catch (SecurityException x) {
+                            logOnce("Permission to set ContextClassLoader missing. " +
+                                    "Notifications will not be dispatched. " +
+                                    "Please check your Java policy configuration: " +
+                                    x, x);
+                            throw x;
+                        }
+                    }
+                }, ctxt);
+        }
+
         public void run() {
+            final ClassLoader previous;
+            if (defaultClassLoader != null) {
+                previous = setContextClassLoader(defaultClassLoader);
+            } else {
+                previous = null;
+            }
+            try {
+                doRun();
+            } finally {
+                if (defaultClassLoader != null) {
+                    setContextClassLoader(previous);
+                }
+            }
+        }
+
+        private void doRun() {
             synchronized (ClientNotifForwarder.this) {
                 currentFetchThread = Thread.currentThread();
 
-                if (state == STARTING)
+                if (state == STARTING) {
                     setState(STARTED);
+                }
             }
 
-            if (defaultClassLoader != null) {
-                AccessController.doPrivileged(new PrivilegedAction<Void>() {
-                        public Void run() {
-                            Thread.currentThread().
-                                setContextClassLoader(defaultClassLoader);
-                            return null;
-                        }
-                    });
-            }
 
             NotificationResult nr = null;
             if (!shouldStop() && (nr = fetchNotifs()) != null) {
@@ -434,8 +497,9 @@
                         // check if an mbean unregistration notif
                         if (!listenerID.equals(mbeanRemovedNotifID)) {
                             final ClientListenerInfo li = infoList.get(listenerID);
-                            if (li != null)
-                                listeners.put(listenerID,li);
+                            if (li != null) {
+                                listeners.put(listenerID, li);
+                            }
                             continue;
                         }
                         final Notification notif = tn.getNotification();
@@ -799,9 +863,7 @@
     private long clientSequenceNumber = -1;
     private final int maxNotifications;
     private final long timeout;
-
     private Integer mbeanRemovedNotifID = null;
-
     private Thread currentFetchThread;
 
     // state
--- a/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerAccessController.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerAccessController.java	Wed Jul 05 16:52:18 2017 +0200
@@ -111,6 +111,22 @@
      */
     protected abstract void checkWrite();
 
+    /**
+     * Check if the caller can create the named class.  The default
+     * implementation of this method calls {@link #checkWrite()}.
+     */
+    protected void checkCreate(String className) {
+        checkWrite();
+    }
+
+    /**
+     * Check if the caller can unregister the named MBean.  The default
+     * implementation of this method calls {@link #checkWrite()}.
+     */
+    protected void checkUnregister(ObjectName name) {
+        checkWrite();
+    }
+
     //--------------------------------------------
     //--------------------------------------------
     //
@@ -148,7 +164,7 @@
     }
 
     /**
-     * Call <code>checkWrite()</code>, then forward this method to the
+     * Call <code>checkCreate(className)</code>, then forward this method to the
      * wrapped object.
      */
     public ObjectInstance createMBean(String className, ObjectName name)
@@ -158,7 +174,7 @@
         MBeanRegistrationException,
         MBeanException,
         NotCompliantMBeanException {
-        checkWrite();
+        checkCreate(className);
         SecurityManager sm = System.getSecurityManager();
         if (sm == null) {
             Object object = getMBeanServer().instantiate(className);
@@ -170,7 +186,7 @@
     }
 
     /**
-     * Call <code>checkWrite()</code>, then forward this method to the
+     * Call <code>checkCreate(className)</code>, then forward this method to the
      * wrapped object.
      */
     public ObjectInstance createMBean(String className, ObjectName name,
@@ -181,7 +197,7 @@
         MBeanRegistrationException,
         MBeanException,
         NotCompliantMBeanException {
-        checkWrite();
+        checkCreate(className);
         SecurityManager sm = System.getSecurityManager();
         if (sm == null) {
             Object object = getMBeanServer().instantiate(className,
@@ -196,7 +212,7 @@
     }
 
     /**
-     * Call <code>checkWrite()</code>, then forward this method to the
+     * Call <code>checkCreate(className)</code>, then forward this method to the
      * wrapped object.
      */
     public ObjectInstance createMBean(String className,
@@ -209,7 +225,7 @@
         MBeanException,
         NotCompliantMBeanException,
         InstanceNotFoundException {
-        checkWrite();
+        checkCreate(className);
         SecurityManager sm = System.getSecurityManager();
         if (sm == null) {
             Object object = getMBeanServer().instantiate(className,
@@ -222,7 +238,7 @@
     }
 
     /**
-     * Call <code>checkWrite()</code>, then forward this method to the
+     * Call <code>checkCreate(className)</code>, then forward this method to the
      * wrapped object.
      */
     public ObjectInstance createMBean(String className,
@@ -237,7 +253,7 @@
         MBeanException,
         NotCompliantMBeanException,
         InstanceNotFoundException {
-        checkWrite();
+        checkCreate(className);
         SecurityManager sm = System.getSecurityManager();
         if (sm == null) {
             Object object = getMBeanServer().instantiate(className,
@@ -394,45 +410,45 @@
     }
 
     /**
-     * Call <code>checkWrite()</code>, then forward this method to the
+     * Call <code>checkCreate(className)</code>, then forward this method to the
      * wrapped object.
      */
     public Object instantiate(String className)
         throws ReflectionException, MBeanException {
-        checkWrite();
+        checkCreate(className);
         return getMBeanServer().instantiate(className);
     }
 
     /**
-     * Call <code>checkWrite()</code>, then forward this method to the
+     * Call <code>checkCreate(className)</code>, then forward this method to the
      * wrapped object.
      */
     public Object instantiate(String className,
                               Object params[],
                               String signature[])
         throws ReflectionException, MBeanException {
-        checkWrite();
+        checkCreate(className);
         return getMBeanServer().instantiate(className, params, signature);
     }
 
     /**
-     * Call <code>checkWrite()</code>, then forward this method to the
+     * Call <code>checkCreate(className)</code>, then forward this method to the
      * wrapped object.
      */
     public Object instantiate(String className, ObjectName loaderName)
         throws ReflectionException, MBeanException, InstanceNotFoundException {
-        checkWrite();
+        checkCreate(className);
         return getMBeanServer().instantiate(className, loaderName);
     }
 
     /**
-     * Call <code>checkWrite()</code>, then forward this method to the
+     * Call <code>checkCreate(className)</code>, then forward this method to the
      * wrapped object.
      */
     public Object instantiate(String className, ObjectName loaderName,
                               Object params[], String signature[])
         throws ReflectionException, MBeanException, InstanceNotFoundException {
-        checkWrite();
+        checkCreate(className);
         return getMBeanServer().instantiate(className, loaderName,
                                             params, signature);
     }
@@ -579,12 +595,12 @@
     }
 
     /**
-     * Call <code>checkWrite()</code>, then forward this method to the
+     * Call <code>checkUnregister()</code>, then forward this method to the
      * wrapped object.
      */
     public void unregisterMBean(ObjectName name)
         throws InstanceNotFoundException, MBeanRegistrationException {
-        checkWrite();
+        checkUnregister(name);
         getMBeanServer().unregisterMBean(name);
     }
 
--- a/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java	Wed Jul 05 16:52:18 2017 +0200
@@ -31,11 +31,17 @@
 import java.security.AccessController;
 import java.security.Principal;
 import java.security.PrivilegedAction;
-import java.util.Collection;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.regex.Pattern;
 import javax.management.MBeanServer;
+import javax.management.ObjectName;
 import javax.security.auth.Subject;
 
 /**
@@ -46,7 +52,8 @@
  * not allowed; in this case the request is not forwarded to the
  * wrapped object.</p>
  *
- * <p>This class implements the {@link #checkRead()} and {@link #checkWrite()}
+ * <p>This class implements the {@link #checkRead()}, {@link #checkWrite()},
+ * {@link #checkCreate(String)}, and {@link #checkUnregister(ObjectName)}
  * methods based on an access level properties file containing username/access
  * level pairs. The set of username/access level pairs is passed either as a
  * filename which denotes a properties file on disk, or directly as an instance
@@ -56,14 +63,50 @@
  * has exactly one access level. The same access level can be shared by several
  * usernames.</p>
  *
- * <p>The supported access level values are <i>readonly</i> and
- * <i>readwrite</i>.</p>
+ * <p>The supported access level values are {@code readonly} and
+ * {@code readwrite}.  The {@code readwrite} access level can be
+ * qualified by one or more <i>clauses</i>, where each clause looks
+ * like <code>create <i>classNamePattern</i></code> or {@code
+ * unregister}.  For example:</p>
+ *
+ * <pre>
+ * monitorRole  readonly
+ * controlRole  readwrite \
+ *              create javax.management.timer.*,javax.management.monitor.* \
+ *              unregister
+ * </pre>
+ *
+ * <p>(The continuation lines with {@code \} come from the parser for
+ * Properties files.)</p>
  */
 public class MBeanServerFileAccessController
     extends MBeanServerAccessController {
 
-    public static final String READONLY = "readonly";
-    public static final String READWRITE = "readwrite";
+    static final String READONLY = "readonly";
+    static final String READWRITE = "readwrite";
+
+    static final String CREATE = "create";
+    static final String UNREGISTER = "unregister";
+
+    private enum AccessType {READ, WRITE, CREATE, UNREGISTER};
+
+    private static class Access {
+        final boolean write;
+        final String[] createPatterns;
+        private boolean unregister;
+
+        Access(boolean write, boolean unregister, List<String> createPatternList) {
+            this.write = write;
+            int npats = (createPatternList == null) ? 0 : createPatternList.size();
+            if (npats == 0)
+                this.createPatterns = NO_STRINGS;
+            else
+                this.createPatterns = createPatternList.toArray(new String[npats]);
+            this.unregister = unregister;
+        }
+
+        private final String[] NO_STRINGS = new String[0];
+    }
 
     /**
      * <p>Create a new MBeanServerAccessController that forwards all the
@@ -87,8 +130,8 @@
         throws IOException {
         super();
         this.accessFileName = accessFileName;
-        props = propertiesFromFile(accessFileName);
-        checkValues(props);
+        Properties props = propertiesFromFile(accessFileName);
+        parseProperties(props);
     }
 
     /**
@@ -123,14 +166,14 @@
      * #setMBeanServer} method after doing access checks based on read and
      * write permissions.</p>
      *
-     * <p>This instance is initialized from the specified properties instance.
-     * This constructor makes a copy of the properties instance using its
-     * <code>clone</code> method and it is the copy that is consulted to check
-     * the username and access level of an incoming connection. The original
-     * properties object can be modified without affecting the copy. If the
-     * {@link #refresh} method is then called, the
-     * <code>MBeanServerFileAccessController</code> will make a new copy of the
-     * properties object at that time.</p>
+     * <p>This instance is initialized from the specified properties
+     * instance.  This constructor makes a copy of the properties
+     * instance and it is the copy that is consulted to check the
+     * username and access level of an incoming connection. The
+     * original properties object can be modified without affecting
+     * the copy. If the {@link #refresh} method is then called, the
+     * <code>MBeanServerFileAccessController</code> will make a new
+     * copy of the properties object at that time.</p>
      *
      * @param accessFileProps properties list containing the username/access
      * level entries.
@@ -145,8 +188,7 @@
         if (accessFileProps == null)
             throw new IllegalArgumentException("Null properties");
         originalProps = accessFileProps;
-        props = (Properties) accessFileProps.clone();
-        checkValues(props);
+        parseProperties(accessFileProps);
     }
 
     /**
@@ -155,14 +197,14 @@
      * #setMBeanServer} method after doing access checks based on read and
      * write permissions.</p>
      *
-     * <p>This instance is initialized from the specified properties instance.
-     * This constructor makes a copy of the properties instance using its
-     * <code>clone</code> method and it is the copy that is consulted to check
-     * the username and access level of an incoming connection. The original
-     * properties object can be modified without affecting the copy. If the
-     * {@link #refresh} method is then called, the
-     * <code>MBeanServerFileAccessController</code> will make a new copy of the
-     * properties object at that time.</p>
+     * <p>This instance is initialized from the specified properties
+     * instance.  This constructor makes a copy of the properties
+     * instance and it is the copy that is consulted to check the
+     * username and access level of an incoming connection. The
+     * original properties object can be modified without affecting
+     * the copy. If the {@link #refresh} method is then called, the
+     * <code>MBeanServerFileAccessController</code> will make a new
+     * copy of the properties object at that time.</p>
      *
      * @param accessFileProps properties list containing the username/access
      * level entries.
@@ -184,16 +226,36 @@
      * Check if the caller can do read operations. This method does
      * nothing if so, otherwise throws SecurityException.
      */
+    @Override
     public void checkRead() {
-        checkAccessLevel(READONLY);
+        checkAccess(AccessType.READ, null);
     }
 
     /**
      * Check if the caller can do write operations.  This method does
      * nothing if so, otherwise throws SecurityException.
      */
+    @Override
     public void checkWrite() {
-        checkAccessLevel(READWRITE);
+        checkAccess(AccessType.WRITE, null);
+    }
+
+    /**
+     * Check if the caller can create MBeans or instances of the given class.
+     * This method does nothing if so, otherwise throws SecurityException.
+     */
+    @Override
+    public void checkCreate(String className) {
+        checkAccess(AccessType.CREATE, className);
+    }
+
+    /**
+     * Check if the caller can do unregister operations.  This method does
+     * nothing if so, otherwise throws SecurityException.
+     */
+    @Override
+    public void checkUnregister(ObjectName name) {
+        checkAccess(AccessType.UNREGISTER, null);
     }
 
     /**
@@ -218,14 +280,13 @@
      * @exception IllegalArgumentException if any of the supplied access
      * level values differs from "readonly" or "readwrite".
      */
-    public void refresh() throws IOException {
-        synchronized (props) {
-            if (accessFileName == null)
-                props = (Properties) originalProps.clone();
-            else
-                props = propertiesFromFile(accessFileName);
-            checkValues(props);
-        }
+    public synchronized void refresh() throws IOException {
+        Properties props;
+        if (accessFileName == null)
+            props = (Properties) originalProps;
+        else
+            props = propertiesFromFile(accessFileName);
+        parseProperties(props);
     }
 
     private static Properties propertiesFromFile(String fname)
@@ -240,7 +301,7 @@
         }
     }
 
-    private void checkAccessLevel(String accessLevel) {
+    private synchronized void checkAccess(AccessType requiredAccess, String arg) {
         final AccessControlContext acc = AccessController.getContext();
         final Subject s =
             AccessController.doPrivileged(new PrivilegedAction<Subject>() {
@@ -249,39 +310,235 @@
                     }
                 });
         if (s == null) return; /* security has not been enabled */
-        final Set<Principal> principals = s.getPrincipals();
-        for (Principal p : principals) {
-            String grantedAccessLevel;
-            synchronized (props) {
-                grantedAccessLevel = props.getProperty(p.getName());
-            }
-            if (grantedAccessLevel != null) {
-                if (accessLevel.equals(READONLY) &&
-                    (grantedAccessLevel.equals(READONLY) ||
-                     grantedAccessLevel.equals(READWRITE)))
-                    return;
-                if (accessLevel.equals(READWRITE) &&
-                    grantedAccessLevel.equals(READWRITE))
+        final Set principals = s.getPrincipals();
+        String newPropertyValue = null;
+        for (Iterator i = principals.iterator(); i.hasNext(); ) {
+            final Principal p = (Principal) i.next();
+            Access access = accessMap.get(p.getName());
+            if (access != null) {
+                boolean ok;
+                switch (requiredAccess) {
+                    case READ:
+                        ok = true;  // all access entries imply read
+                        break;
+                    case WRITE:
+                        ok = access.write;
+                        break;
+                    case UNREGISTER:
+                        ok = access.unregister;
+                        if (!ok && access.write)
+                            newPropertyValue = "unregister";
+                        break;
+                    case CREATE:
+                        ok = checkCreateAccess(access, arg);
+                        if (!ok && access.write)
+                            newPropertyValue = "create " + arg;
+                        break;
+                    default:
+                        throw new AssertionError();
+                }
+                if (ok)
                     return;
             }
         }
-        throw new SecurityException("Access denied! Invalid access level for " +
-                                    "requested MBeanServer operation.");
+        SecurityException se = new SecurityException("Access denied! Invalid " +
+                "access level for requested MBeanServer operation.");
+        // Add some more information to help people with deployments that
+        // worked before we required explicit create clauses. We're not giving
+        // any information to the bad guys, other than that the access control
+        // is based on a file, which they could have worked out from the stack
+        // trace anyway.
+        if (newPropertyValue != null) {
+            SecurityException se2 = new SecurityException("Access property " +
+                    "for this identity should be similar to: " + READWRITE +
+                    " " + newPropertyValue);
+            se.initCause(se2);
+        }
+        throw se;
+    }
+
+    private static boolean checkCreateAccess(Access access, String className) {
+        for (String classNamePattern : access.createPatterns) {
+            if (classNameMatch(classNamePattern, className))
+                return true;
+        }
+        return false;
     }
 
-    private void checkValues(Properties props) {
-        Collection<?> c = props.values();
-        for (Iterator<?> i = c.iterator(); i.hasNext(); ) {
-            final String accessLevel = (String) i.next();
-            if (!accessLevel.equals(READONLY) &&
-                !accessLevel.equals(READWRITE)) {
-                throw new IllegalArgumentException(
-                    "Syntax error in access level entry [" + accessLevel + "]");
-            }
+    private static boolean classNameMatch(String pattern, String className) {
+        // We studiously avoided regexes when parsing the properties file,
+        // because that is done whenever the VM is started with the
+        // appropriate -Dcom.sun.management options, even if nobody ever
+        // creates an MBean.  We don't want to incur the overhead of loading
+        // all the regex code whenever those options are specified, but if we
+        // get as far as here then the VM is already running and somebody is
+        // doing the very unusual operation of remotely creating an MBean.
+        // Because that operation is so unusual, we don't try to optimize
+        // by hand-matching or by caching compiled Pattern objects.
+        StringBuilder sb = new StringBuilder();
+        StringTokenizer stok = new StringTokenizer(pattern, "*", true);
+        while (stok.hasMoreTokens()) {
+            String tok = stok.nextToken();
+            if (tok.equals("*"))
+                sb.append("[^.]*");
+            else
+                sb.append(Pattern.quote(tok));
+        }
+        return className.matches(sb.toString());
+    }
+
+    private void parseProperties(Properties props) {
+        this.accessMap = new HashMap<String, Access>();
+        for (Map.Entry<Object, Object> entry : props.entrySet()) {
+            String identity = (String) entry.getKey();
+            String accessString = (String) entry.getValue();
+            Access access = Parser.parseAccess(identity, accessString);
+            accessMap.put(identity, access);
         }
     }
 
-    private Properties props;
+    private static class Parser {
+        private final static int EOS = -1;  // pseudo-codepoint "end of string"
+        static {
+            assert !Character.isWhitespace(EOS);
+        }
+
+        private final String identity;  // just for better error messages
+        private final String s;  // the string we're parsing
+        private final int len;   // s.length()
+        private int i;
+        private int c;
+        // At any point, either c is s.codePointAt(i), or i == len and
+        // c is EOS.  We use int rather than char because it is conceivable
+        // (if unlikely) that a classname in a create clause might contain
+        // "supplementary characters", the ones that don't fit in the original
+        // 16 bits for Unicode.
+
+        private Parser(String identity, String s) {
+            this.identity = identity;
+            this.s = s;
+            this.len = s.length();
+            this.i = 0;
+            if (i < len)
+                this.c = s.codePointAt(i);
+            else
+                this.c = EOS;
+        }
+
+        static Access parseAccess(String identity, String s) {
+            return new Parser(identity, s).parseAccess();
+        }
+
+        private Access parseAccess() {
+            skipSpace();
+            String type = parseWord();
+            Access access;
+            if (type.equals(READONLY))
+                access = new Access(false, false, null);
+            else if (type.equals(READWRITE))
+                access = parseReadWrite();
+            else {
+                throw syntax("Expected " + READONLY + " or " + READWRITE +
+                        ": " + type);
+            }
+            if (c != EOS)
+                throw syntax("Extra text at end of line");
+            return access;
+        }
+
+        private Access parseReadWrite() {
+            List<String> createClasses = new ArrayList<String>();
+            boolean unregister = false;
+            while (true) {
+                skipSpace();
+                if (c == EOS)
+                    break;
+                String type = parseWord();
+                if (type.equals(UNREGISTER))
+                    unregister = true;
+                else if (type.equals(CREATE))
+                    parseCreate(createClasses);
+                else
+                    throw syntax("Unrecognized keyword " + type);
+            }
+            return new Access(true, unregister, createClasses);
+        }
+
+        private void parseCreate(List<String> createClasses) {
+            while (true) {
+                skipSpace();
+                createClasses.add(parseClassName());
+                skipSpace();
+                if (c == ',')
+                    next();
+                else
+                    break;
+            }
+        }
+
+        private String parseClassName() {
+            // We don't check that classname components begin with suitable
+            // characters (so we accept 1.2.3 for example).  This means that
+            // there are only two states, which we can call dotOK and !dotOK
+            // according as a dot (.) is legal or not.  Initially we're in
+            // !dotOK since a classname can't start with a dot; after a dot
+            // we're in !dotOK again; and after any other characters we're in
+            // dotOK.  The classname is only accepted if we end in dotOK,
+            // so we reject an empty name or a name that ends with a dot.
+            final int start = i;
+            boolean dotOK = false;
+            while (true) {
+                if (c == '.') {
+                    if (!dotOK)
+                        throw syntax("Bad . in class name");
+                    dotOK = false;
+                } else if (c == '*' || Character.isJavaIdentifierPart(c))
+                    dotOK = true;
+                else
+                    break;
+                next();
+            }
+            String className = s.substring(start, i);
+            if (!dotOK)
+                throw syntax("Bad class name " + className);
+            return className;
+        }
+
+        // Advance c and i to the next character, unless already at EOS.
+        private void next() {
+            if (c != EOS) {
+                i += Character.charCount(c);
+                if (i < len)
+                    c = s.codePointAt(i);
+                else
+                    c = EOS;
+            }
+        }
+
+        private void skipSpace() {
+            while (Character.isWhitespace(c))
+                next();
+        }
+
+        private String parseWord() {
+            skipSpace();
+            if (c == EOS)
+                throw syntax("Expected word at end of line");
+            final int start = i;
+            while (c != EOS && !Character.isWhitespace(c))
+                next();
+            String word = s.substring(start, i);
+            skipSpace();
+            return word;
+        }
+
+        private IllegalArgumentException syntax(String msg) {
+            return new IllegalArgumentException(
+                    msg + " [" + identity + " " + s + "]");
+        }
+    }
+
+    private Map<String, Access> accessMap;
     private Properties originalProps;
     private String accessFileName;
 }
--- a/jdk/src/share/classes/com/sun/jndi/ldap/LdapCtx.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/jndi/ldap/LdapCtx.java	Wed Jul 05 16:52:18 2017 +0200
@@ -302,7 +302,16 @@
 
         schemaTrees = new Hashtable(11, 0.75f);
         initEnv();
-        connect(false);
+        try {
+            connect(false);
+        } catch (NamingException e) {
+            try {
+                close();
+            } catch (Exception e2) {
+                // Nothing
+            }
+            throw e;
+        }
     }
 
     LdapCtx(LdapCtx existing, String newDN) throws NamingException {
--- a/jdk/src/share/classes/com/sun/jndi/ldap/VersionHelper12.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/jndi/ldap/VersionHelper12.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,12 +33,33 @@
 
 final class VersionHelper12 extends VersionHelper {
 
+    // System property to control whether classes may be loaded from an
+    // arbitrary URL code base.
+    private static final String TRUST_URL_CODEBASE_PROPERTY =
+        "com.sun.jndi.ldap.object.trustURLCodebase";
+
+    // Determine whether classes may be loaded from an arbitrary URL code base.
+    private static final String trustURLCodebase =
+        AccessController.doPrivileged(
+            new PrivilegedAction<String>() {
+                public String run() {
+                    return System.getProperty(TRUST_URL_CODEBASE_PROPERTY,
+                            "false");
+                }
+            }
+        );
+
     VersionHelper12() {} // Disallow external from creating one of these.
 
     ClassLoader getURLClassLoader(String[] url)
         throws MalformedURLException {
             ClassLoader parent = getContextClassLoader();
-            if (url != null) {
+            /*
+             * Classes may only be loaded from an arbitrary URL code base when
+             * the system property com.sun.jndi.ldap.object.trustURLCodebase
+             * has been set to "true".
+             */
+            if (url != null && "true".equalsIgnoreCase(trustURLCodebase)) {
                 return URLClassLoader.newInstance(getUrlArray(url), parent);
             } else {
                 return parent;
--- a/jdk/src/share/classes/com/sun/media/sound/SoftAudioPusher.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftAudioPusher.java	Wed Jul 05 16:52:18 2017 +0200
@@ -54,6 +54,7 @@
             return;
         active = true;
         audiothread = new Thread(this);
+        audiothread.setDaemon(true);
         audiothread.setPriority(Thread.MAX_PRIORITY);
         audiothread.start();
     }
--- a/jdk/src/share/classes/com/sun/media/sound/SoftChannel.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftChannel.java	Wed Jul 05 16:52:18 2017 +0200
@@ -93,7 +93,6 @@
     protected double portamento_time = 1; // keyschanges per control buffer time
     protected int[] portamento_lastnote = new int[128];
     protected int portamento_lastnote_ix = 0;
-    private int portamento_control_note = -1;
     private boolean portamento = false;
     private boolean mono = false;
     private boolean mute = false;
@@ -369,12 +368,12 @@
         voice.setSoloMute(solomute);
         if (releaseTriggered)
             return;
-        if (portamento_control_note != -1) {
+        if (controller[84] != 0) {
             voice.co_noteon_keynumber[0]
-                    = (tuning.getTuning(portamento_control_note) / 100.0)
+                    = (tuning.getTuning(controller[84]) / 100.0)
                     * (1f / 128f);
             voice.portamento = true;
-            portamento_control_note = -1;
+            controlChange(84, 0);
         } else if (portamento) {
             if (mono) {
                 if (portamento_lastnote[0] != -1) {
@@ -382,7 +381,7 @@
                             = (tuning.getTuning(portamento_lastnote[0]) / 100.0)
                             * (1f / 128f);
                     voice.portamento = true;
-                    portamento_control_note = -1;
+                    controlChange(84, 0);
                 }
                 portamento_lastnote[0] = noteNumber;
             } else {
@@ -449,19 +448,19 @@
                     }
                 }
 
-                if (portamento_control_note != -1) {
+                if (controller[84] != 0) {
                     boolean n_found = false;
                     for (int i = 0; i < voices.length; i++) {
                         if (voices[i].on && voices[i].channel == channel
                                 && voices[i].active
-                                && voices[i].note == portamento_control_note
+                                && voices[i].note == controller[84]
                                 && voices[i].releaseTriggered == false) {
                             voices[i].portamento = true;
                             voices[i].setNote(noteNumber);
                             n_found = true;
                         }
                     }
-                    portamento_control_note = -1;
+                    controlChange(84, 0);
                     if (n_found)
                         return;
                 }
@@ -556,6 +555,18 @@
                         && voices[i].releaseTriggered == false) {
                     voices[i].noteOff(velocity);
                 }
+                // We must also check stolen voices
+                if (voices[i].stealer_channel == this && voices[i].stealer_noteNumber == noteNumber) {
+                    SoftVoice v = voices[i];
+                    v.stealer_releaseTriggered = false;
+                    v.stealer_channel = null;
+                    v.stealer_performer = null;
+                    v.stealer_voiceID = -1;
+                    v.stealer_noteNumber = 0;
+                    v.stealer_velocity = 0;
+                    v.stealer_extendedConnectionBlocks = null;
+                    v.stealer_channelmixer = null;
+                }
             }
 
             // Try play back note-off triggered voices,
@@ -1141,9 +1152,6 @@
                     }
                 }
                 break;
-            case 84:
-                portamento_control_note = value;
-                break;
             case 98:
                 nrpn_control = (nrpn_control & (127 << 7)) + value;
                 rpn_control = RPN_NULL_VALUE;
--- a/jdk/src/share/classes/com/sun/media/sound/SoftChorus.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftChorus.java	Wed Jul 05 16:52:18 2017 +0200
@@ -38,11 +38,11 @@
 
         private float[] delaybuffer;
         private int rovepos = 0;
-        private volatile float gain = 1;
-        private volatile float rgain = 0;
-        private volatile float delay = 0;
+        private float gain = 1;
+        private float rgain = 0;
+        private float delay = 0;
         private float lastdelay = 0;
-        private volatile float feedback = 0;
+        private float feedback = 0;
 
         public VariableDelay(int maxbuffersize) {
             delaybuffer = new float[maxbuffersize];
@@ -115,10 +115,8 @@
 
     private static class LFODelay {
 
-        private volatile double c_cos_delta;
-        private volatile double c_sin_delta;
-        private double c_cos = 1;
-        private double c_sin = 0;
+        private double phase = 1;
+        private double phase_step = 0;
         private double depth = 0;
         private VariableDelay vdelay;
         private double samplerate;
@@ -139,13 +137,11 @@
 
         public void setRate(double rate) {
             double g = (Math.PI * 2) * (rate / controlrate);
-            c_cos_delta = Math.cos(g);
-            c_sin_delta = Math.sin(g);
+            phase_step = g;
         }
 
         public void setPhase(double phase) {
-            c_cos = Math.cos(phase);
-            c_sin = Math.sin(phase);
+            this.phase = phase;
         }
 
         public void setFeedBack(float feedback) {
@@ -161,16 +157,16 @@
         }
 
         public void processMix(float[] in, float[] out, float[] rout) {
-            c_cos = c_cos * c_cos_delta - c_sin * c_sin_delta;
-            c_sin = c_cos * c_sin_delta + c_sin * c_cos_delta;
-            vdelay.setDelay((float) (depth * 0.5 * (c_cos + 2)));
+            phase += phase_step;
+            while(phase > (Math.PI * 2)) phase -= (Math.PI * 2);
+            vdelay.setDelay((float) (depth * 0.5 * (Math.cos(phase) + 2)));
             vdelay.processMix(in, out, rout);
         }
 
         public void processReplace(float[] in, float[] out, float[] rout) {
-            c_cos = c_cos * c_cos_delta - c_sin * c_sin_delta;
-            c_sin = c_cos * c_sin_delta + c_sin * c_cos_delta;
-            vdelay.setDelay((float) (depth * 0.5 * (c_cos + 2)));
+            phase += phase_step;
+            while(phase > (Math.PI * 2)) phase -= (Math.PI * 2);
+            vdelay.setDelay((float) (depth * 0.5 * (Math.cos(phase) + 2)));
             vdelay.processReplace(in, out, rout);
 
         }
--- a/jdk/src/share/classes/com/sun/media/sound/SoftFilter.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftFilter.java	Wed Jul 05 16:52:18 2017 +0200
@@ -543,8 +543,6 @@
 
     public void filter1(SoftAudioBuffer sbuffer) {
 
-        float[] buffer = sbuffer.array();
-
         if (dirty) {
             filter1calc();
             dirty = false;
@@ -559,6 +557,7 @@
 
         if (wet > 0 || last_wet > 0) {
 
+            float[] buffer = sbuffer.array();
             int len = buffer.length;
             float a0 = this.last_a0;
             float q = this.last_q;
@@ -577,14 +576,16 @@
                     q += q_delta;
                     gain += gain_delta;
                     wet += wet_delta;
-                    y1 = (1 - q * a0) * y1 - (a0) * y2 + (a0) * buffer[i];
-                    y2 = (1 - q * a0) * y2 + (a0) * y1;
+                    float ga0 = (1 - q * a0);
+                    y1 = ga0 * y1 + (a0) * (buffer[i] - y2);
+                    y2 = ga0 * y2 + (a0) * y1;
                     buffer[i] = y2 * gain * wet + buffer[i] * (1 - wet);
                 }
             } else if (a0_delta == 0 && q_delta == 0) {
+                float ga0 = (1 - q * a0);
                 for (int i = 0; i < len; i++) {
-                    y1 = (1 - q * a0) * y1 - (a0) * y2 + (a0) * buffer[i];
-                    y2 = (1 - q * a0) * y2 + (a0) * y1;
+                    y1 = ga0 * y1 + (a0) * (buffer[i] - y2);
+                    y2 = ga0 * y2 + (a0) * y1;
                     buffer[i] = y2 * gain;
                 }
             } else {
@@ -592,8 +593,9 @@
                     a0 += a0_delta;
                     q += q_delta;
                     gain += gain_delta;
-                    y1 = (1 - q * a0) * y1 - (a0) * y2 + (a0) * buffer[i];
-                    y2 = (1 - q * a0) * y2 + (a0) * y1;
+                    float ga0 = (1 - q * a0);
+                    y1 = ga0 * y1 + (a0) * (buffer[i] - y2);
+                    y2 = ga0 * y2 + (a0) * y1;
                     buffer[i] = y2 * gain;
                 }
             }
--- a/jdk/src/share/classes/com/sun/media/sound/SoftJitterCorrector.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftJitterCorrector.java	Wed Jul 05 16:52:18 2017 +0200
@@ -216,6 +216,7 @@
             };
 
             thread = new Thread(runnable);
+            thread.setDaemon(true);
             thread.setPriority(Thread.MAX_PRIORITY);
             thread.start();
         }
--- a/jdk/src/share/classes/com/sun/media/sound/SoftLowFrequencyOscillator.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftLowFrequencyOscillator.java	Wed Jul 05 16:52:18 2017 +0200
@@ -45,6 +45,13 @@
     private double sin_factor = 0;
     private static double PI2 = 2.0 * Math.PI;
 
+    public SoftLowFrequencyOscillator() {
+        // If sin_step is 0 then sin_stepfreq must be -INF
+        for (int i = 0; i < sin_stepfreq.length; i++) {
+            sin_stepfreq[i] = Double.NEGATIVE_INFINITY;
+        }
+    }
+
     public void reset() {
         for (int i = 0; i < used_count; i++) {
             out[i][0] = 0;
@@ -53,7 +60,8 @@
             freq[i][0] = 0;
             delay_counter[i] = 0;
             sin_phase[i] = 0;
-            sin_stepfreq[i] = 0;
+            // If sin_step is 0 then sin_stepfreq must be -INF
+            sin_stepfreq[i] = Double.NEGATIVE_INFINITY;
             sin_step[i] = 0;
         }
         used_count = 0;
--- a/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -48,16 +48,18 @@
 
     public final static int CHANNEL_LEFT = 0;
     public final static int CHANNEL_RIGHT = 1;
-    public final static int CHANNEL_EFFECT1 = 2;
-    public final static int CHANNEL_EFFECT2 = 3;
-    public final static int CHANNEL_EFFECT3 = 4;
-    public final static int CHANNEL_EFFECT4 = 5;
+    public final static int CHANNEL_MONO = 2;
+    public final static int CHANNEL_EFFECT1 = 3;
+    public final static int CHANNEL_EFFECT2 = 4;
+    public final static int CHANNEL_EFFECT3 = 5;
+    public final static int CHANNEL_EFFECT4 = 6;
     public final static int CHANNEL_LEFT_DRY = 10;
     public final static int CHANNEL_RIGHT_DRY = 11;
     public final static int CHANNEL_SCRATCH1 = 12;
     public final static int CHANNEL_SCRATCH2 = 13;
     public final static int CHANNEL_CHANNELMIXER_LEFT = 14;
     public final static int CHANNEL_CHANNELMIXER_RIGHT = 15;
+    public final static int CHANNEL_CHANNELMIXER_MONO = 16;
     protected boolean active_sensing_on = false;
     private long msec_last_activity = -1;
     private boolean pusher_silent = false;
@@ -485,8 +487,10 @@
             // to channelmixer left,right input/output
             SoftAudioBuffer leftbak = buffers[CHANNEL_LEFT];
             SoftAudioBuffer rightbak = buffers[CHANNEL_RIGHT];
+            SoftAudioBuffer monobak = buffers[CHANNEL_MONO];
             buffers[CHANNEL_LEFT] = buffers[CHANNEL_CHANNELMIXER_LEFT];
-            buffers[CHANNEL_RIGHT] = buffers[CHANNEL_CHANNELMIXER_LEFT];
+            buffers[CHANNEL_RIGHT] = buffers[CHANNEL_CHANNELMIXER_RIGHT];
+            buffers[CHANNEL_MONO] = buffers[CHANNEL_CHANNELMIXER_MONO];
 
             int bufferlen = buffers[CHANNEL_LEFT].getSize();
 
@@ -503,6 +507,7 @@
             for (ModelChannelMixer cmixer : act_registeredMixers) {
                 for (int i = 0; i < cbuffer.length; i++)
                     Arrays.fill(cbuffer[i], 0);
+                buffers[CHANNEL_MONO].clear();
                 boolean hasactivevoices = false;
                 for (int i = 0; i < voicestatus.length; i++)
                     if (voicestatus[i].active)
@@ -517,6 +522,26 @@
                     }
                 }
 
+                if(!buffers[CHANNEL_MONO].isSilent())
+                {
+                    float[] mono = buffers[CHANNEL_MONO].array();
+                    float[] left = buffers[CHANNEL_LEFT].array();
+                    if (nrofchannels != 1) {
+                        float[] right = buffers[CHANNEL_RIGHT].array();
+                        for (int i = 0; i < bufferlen; i++) {
+                            float v = mono[i];
+                            left[i] += v;
+                            right[i] += v;
+                        }
+                    }
+                    else
+                    {
+                        for (int i = 0; i < bufferlen; i++) {
+                            left[i] += mono[i];
+                        }
+                    }
+                }
+
                 for (int i = 0; i < cbuffer.length; i++) {
                     float[] cbuff = cbuffer[i];
                     float[] obuff = obuffer[i];
@@ -539,6 +564,7 @@
 
             buffers[CHANNEL_LEFT] = leftbak;
             buffers[CHANNEL_RIGHT] = rightbak;
+            buffers[CHANNEL_MONO] = monobak;
 
         }
 
@@ -547,6 +573,27 @@
                 if (voicestatus[i].channelmixer == null)
                     voicestatus[i].processAudioLogic(buffers);
 
+        if(!buffers[CHANNEL_MONO].isSilent())
+        {
+            float[] mono = buffers[CHANNEL_MONO].array();
+            float[] left = buffers[CHANNEL_LEFT].array();
+            int bufferlen = buffers[CHANNEL_LEFT].getSize();
+            if (nrofchannels != 1) {
+                float[] right = buffers[CHANNEL_RIGHT].array();
+                for (int i = 0; i < bufferlen; i++) {
+                    float v = mono[i];
+                    left[i] += v;
+                    right[i] += v;
+                }
+            }
+            else
+            {
+                for (int i = 0; i < bufferlen; i++) {
+                    left[i] += mono[i];
+                }
+            }
+        }
+
         // Run effects
         if (synth.chorus_on)
             chorus.processAudio();
@@ -665,7 +712,7 @@
                                 / synth.getControlRate());
 
         control_mutex = synth.control_mutex;
-        buffers = new SoftAudioBuffer[16];
+        buffers = new SoftAudioBuffer[17];
         for (int i = 0; i < buffers.length; i++) {
             buffers[i] = new SoftAudioBuffer(buffersize, synth.getFormat());
         }
--- a/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -889,9 +889,12 @@
             return;
         }
         synchronized (control_mutex) {
+            Throwable causeException = null;
             try {
-                if (line != null)
+                if (line != null) {
+                    // can throw IllegalArgumentException
                     setFormat(line.getFormat());
+                }
 
                 AudioInputStream ais = openStream(getFormat(), info);
 
@@ -900,10 +903,13 @@
 
                 if (line == null)
                 {
-                    if(testline != null)
+                    if (testline != null) {
                         line = testline;
-                    else
+                    } else {
+                        // can throw LineUnavailableException,
+                        // IllegalArgumentException, SecurityException
                         line = AudioSystem.getSourceDataLine(getFormat());
+                    }
                 }
 
                 double latency = this.latency;
@@ -911,6 +917,8 @@
                 if (!line.isOpen()) {
                     int bufferSize = getFormat().getFrameSize()
                         * (int)(getFormat().getFrameRate() * (latency/1000000f));
+                    // can throw LineUnavailableException,
+                    // IllegalArgumentException, SecurityException
                     line.open(getFormat(), bufferSize);
 
                     // Remember that we opened that line
@@ -954,13 +962,22 @@
                     weakstream.sourceDataLine = sourceDataLine;
                 }
 
-
+            } catch (LineUnavailableException e) {
+                causeException = e;
+            } catch (IllegalArgumentException e) {
+                causeException = e;
+            } catch (SecurityException e) {
+                causeException = e;
+            }
 
-            } catch (LineUnavailableException e) {
+            if (causeException != null) {
                 if (isOpen())
                     close();
                 // am: need MidiUnavailableException(Throwable) ctor!
-                throw new MidiUnavailableException(e.toString());
+                MidiUnavailableException ex = new MidiUnavailableException(
+                        "Can not open line");
+                ex.initCause(causeException);
+                throw ex;
             }
 
         }
--- a/jdk/src/share/classes/com/sun/media/sound/SoftVoice.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftVoice.java	Wed Jul 05 16:52:18 2017 +0200
@@ -782,6 +782,7 @@
 
         SoftAudioBuffer left = buffer[SoftMainMixer.CHANNEL_LEFT];
         SoftAudioBuffer right = buffer[SoftMainMixer.CHANNEL_RIGHT];
+        SoftAudioBuffer mono = buffer[SoftMainMixer.CHANNEL_MONO];
         SoftAudioBuffer eff1 = buffer[SoftMainMixer.CHANNEL_EFFECT1];
         SoftAudioBuffer eff2 = buffer[SoftMainMixer.CHANNEL_EFFECT2];
         SoftAudioBuffer leftdry = buffer[SoftMainMixer.CHANNEL_LEFT_DRY];
@@ -803,13 +804,22 @@
                 mixAudioStream(rightdry, left, last_out_mixer_left,
                         out_mixer_left);
         } else {
-            mixAudioStream(leftdry, left, last_out_mixer_left, out_mixer_left);
-            if (rightdry != null)
-                mixAudioStream(rightdry, right, last_out_mixer_right,
+            if(rightdry == null &&
+                    last_out_mixer_left == last_out_mixer_right &&
+                    out_mixer_left == out_mixer_right)
+            {
+                mixAudioStream(leftdry, mono, last_out_mixer_left, out_mixer_left);
+            }
+            else
+            {
+                mixAudioStream(leftdry, left, last_out_mixer_left, out_mixer_left);
+                if (rightdry != null)
+                    mixAudioStream(rightdry, right, last_out_mixer_right,
                         out_mixer_right);
-            else
-                mixAudioStream(leftdry, right, last_out_mixer_right,
+                else
+                    mixAudioStream(leftdry, right, last_out_mixer_right,
                         out_mixer_right);
+            }
         }
 
         if (rightdry == null) {
--- a/jdk/src/share/classes/java/awt/Color.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/awt/Color.java	Wed Jul 05 16:52:18 2017 +0200
@@ -687,7 +687,7 @@
      * @since   JDK1.0
      */
     public boolean equals(Object obj) {
-        return obj instanceof Color && ((Color)obj).value == this.value;
+        return obj instanceof Color && ((Color)obj).getRGB() == this.getRGB();
     }
 
     /**
--- a/jdk/src/share/classes/java/awt/Component.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/awt/Component.java	Wed Jul 05 16:52:18 2017 +0200
@@ -6666,7 +6666,7 @@
 
 
             // Update stacking order
-            peer.setZOrder(getHWPeerAboveMe());
+            updateZOrder();
 
             if (!isAddNotifyComplete) {
                 mixOnShowing();
@@ -9838,4 +9838,11 @@
 
         return doesClassImplement(obj.getClass(), interfaceName);
     }
+
+    // Note that the method is overriden in the Window class,
+    // a window doesn't need to be updated in the Z-order.
+    void updateZOrder() {
+        peer.setZOrder(getHWPeerAboveMe());
+    }
+
 }
--- a/jdk/src/share/classes/java/awt/Container.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/awt/Container.java	Wed Jul 05 16:52:18 2017 +0200
@@ -840,7 +840,7 @@
                     // Native container changed - need to reparent native widgets
                     newNativeContainer.reparentChild(comp);
                 }
-                comp.peer.setZOrder(comp.getHWPeerAboveMe());
+                comp.updateZOrder();
 
                 if (!comp.isLightweight() && isLightweight()) {
                     // If component is heavyweight and one of the containers is lightweight
@@ -3977,10 +3977,8 @@
             Component comp = getComponent(index);
             if (!comp.isLightweight()) {
                 comp.applyCurrentShape();
-                if (comp instanceof Container && ((Container)comp).getLayout() == null) {
-                    ((Container)comp).recursiveApplyCurrentShape();
-                }
-            } else if (comp instanceof Container &&
+            }
+            if (comp instanceof Container &&
                     ((Container)comp).hasHeavyweightDescendants()) {
                 ((Container)comp).recursiveApplyCurrentShape();
             }
--- a/jdk/src/share/classes/java/awt/Font.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/awt/Font.java	Wed Jul 05 16:52:18 2017 +0200
@@ -37,6 +37,8 @@
 import java.awt.peer.FontPeer;
 import java.io.*;
 import java.lang.ref.SoftReference;
+import java.security.AccessController;
+import java.security.PrivilegedExceptionAction;
 import java.text.AttributedCharacterIterator.Attribute;
 import java.text.CharacterIterator;
 import java.text.StringCharacterIterator;
@@ -51,6 +53,7 @@
 import sun.font.AttributeValues;
 import sun.font.EAttribute;
 import sun.font.CompositeFont;
+import sun.font.CreatedFontTracker;
 import sun.font.Font2D;
 import sun.font.Font2DHandle;
 import sun.font.FontManager;
@@ -575,14 +578,16 @@
     }
 
     /* used to implement Font.createFont */
-    private Font(File fontFile, int fontFormat, boolean isCopy)
+    private Font(File fontFile, int fontFormat,
+                 boolean isCopy, CreatedFontTracker tracker)
         throws FontFormatException {
         this.createdFont = true;
         /* Font2D instances created by this method track their font file
          * so that when the Font2D is GC'd it can also remove the file.
          */
         this.font2DHandle =
-            FontManager.createFont2D(fontFile, fontFormat, isCopy).handle;
+            FontManager.createFont2D(fontFile, fontFormat,
+                                     isCopy, tracker).handle;
         this.name = this.font2DHandle.font2D.getFontName(Locale.getDefault());
         this.style = Font.PLAIN;
         this.size = 1;
@@ -788,6 +793,29 @@
     }
 
     /**
+     * Used with the byte count tracker for fonts created from streams.
+     * If a thread can create temp files anyway, no point in counting
+     * font bytes.
+     */
+    private static boolean hasTempPermission() {
+
+        if (System.getSecurityManager() == null) {
+            return true;
+        }
+        File f = null;
+        boolean hasPerm = false;
+        try {
+            f = File.createTempFile("+~JT", ".tmp", null);
+            f.delete();
+            f = null;
+            hasPerm = true;
+        } catch (Throwable t) {
+            /* inc. any kind of SecurityException */
+        }
+        return hasPerm;
+    }
+
+    /**
      * Returns a new <code>Font</code> using the specified font type
      * and input data.  The new <code>Font</code> is
      * created with a point size of 1 and style {@link #PLAIN PLAIN}.
@@ -822,58 +850,96 @@
             fontFormat != Font.TYPE1_FONT) {
             throw new IllegalArgumentException ("font format not recognized");
         }
-        final InputStream fStream = fontStream;
-        Object ret = java.security.AccessController.doPrivileged(
-           new java.security.PrivilegedAction() {
-              public Object run() {
-                  File tFile = null;
-                  FileOutputStream outStream = null;
-                  try {
-                      tFile = File.createTempFile("+~JF", ".tmp", null);
-                      /* Temp file deleted by font shutdown hook */
-                      BufferedInputStream inStream =
-                          new BufferedInputStream(fStream);
-                      outStream = new FileOutputStream(tFile);
-                      int bytesRead = 0;
-                      int bufSize = 8192;
-                      byte [] buf = new byte[bufSize];
-                      while (bytesRead != -1) {
-                          try {
-                              bytesRead = inStream.read(buf, 0, bufSize);
-                          } catch (Throwable t) {
-                              throw new IOException();
-                          }
-                          if (bytesRead != -1) {
-                              outStream.write(buf, 0, bytesRead);
-                          }
-                      }
-                      /* don't close the input stream */
-                      outStream.close();
-                  } catch (IOException e) {
-                      if (outStream != null) {
-                          try {
-                              outStream.close();
-                          } catch (Exception e1) {
-                          }
-                      }
-                      if (tFile != null) {
-                          try {
-                              tFile.delete();
-                          }  catch (Exception e2) {
-                          }
-                      }
-                      return e;
-                  }
-                  return tFile;
-              }
-          });
+        boolean copiedFontData = false;
+
+        try {
+            final File tFile = AccessController.doPrivileged(
+                new PrivilegedExceptionAction<File>() {
+                    public File run() throws IOException {
+                        return File.createTempFile("+~JF", ".tmp", null);
+                    }
+                }
+            );
 
-        if (ret instanceof File) {
-            return new Font((File)ret, fontFormat, true);
-        } else if (ret instanceof IOException) {
-            throw (IOException)ret;
-        } else {
-            throw new FontFormatException("Couldn't access font stream");
+            int totalSize = 0;
+            CreatedFontTracker tracker = null;
+            try {
+                final OutputStream outStream =
+                    AccessController.doPrivileged(
+                        new PrivilegedExceptionAction<OutputStream>() {
+                            public OutputStream run() throws IOException {
+                                return new FileOutputStream(tFile);
+                            }
+                        }
+                    );
+                if (!hasTempPermission()) {
+                    tracker = CreatedFontTracker.getTracker();
+                }
+                try {
+                    byte[] buf = new byte[8192];
+                    for (;;) {
+                        int bytesRead = fontStream.read(buf);
+                        if (bytesRead < 0) {
+                            break;
+                        }
+                        if (tracker != null) {
+                            if (totalSize+bytesRead > tracker.MAX_FILE_SIZE) {
+                                throw new IOException("File too big.");
+                            }
+                            if (totalSize+tracker.getNumBytes() >
+                                tracker.MAX_TOTAL_BYTES)
+                              {
+                                throw new IOException("Total files too big.");
+                            }
+                            totalSize += bytesRead;
+                            tracker.addBytes(bytesRead);
+                        }
+                        outStream.write(buf, 0, bytesRead);
+                    }
+                    /* don't close the input stream */
+                } finally {
+                    outStream.close();
+                }
+                /* After all references to a Font2D are dropped, the file
+                 * will be removed. To support long-lived AppContexts,
+                 * we need to then decrement the byte count by the size
+                 * of the file.
+                 * If the data isn't a valid font, the implementation will
+                 * delete the tmp file and decrement the byte count
+                 * in the tracker object before returning from the
+                 * constructor, so we can set 'copiedFontData' to true here
+                 * without waiting for the results of that constructor.
+                 */
+                copiedFontData = true;
+                Font font = new Font(tFile, fontFormat, true, tracker);
+                return font;
+            } finally {
+                if (!copiedFontData) {
+                    if (tracker != null) {
+                        tracker.subBytes(totalSize);
+                    }
+                    AccessController.doPrivileged(
+                        new PrivilegedExceptionAction<Void>() {
+                            public Void run() {
+                                tFile.delete();
+                                return null;
+                            }
+                        }
+                    );
+                }
+            }
+        } catch (Throwable t) {
+            if (t instanceof FontFormatException) {
+                throw (FontFormatException)t;
+            }
+            if (t instanceof IOException) {
+                throw (IOException)t;
+            }
+            Throwable cause = t.getCause();
+            if (cause instanceof FontFormatException) {
+                throw (FontFormatException)cause;
+            }
+            throw new IOException("Problem reading font data.");
         }
     }
 
@@ -913,6 +979,9 @@
      */
     public static Font createFont(int fontFormat, File fontFile)
         throws java.awt.FontFormatException, java.io.IOException {
+
+        fontFile = new File(fontFile.getPath());
+
         if (fontFormat != Font.TRUETYPE_FONT &&
             fontFormat != Font.TYPE1_FONT) {
             throw new IllegalArgumentException ("font format not recognized");
@@ -926,7 +995,7 @@
         if (!fontFile.canRead()) {
             throw new IOException("Can't read " + fontFile);
         }
-        return new Font(fontFile, fontFormat, false);
+        return new Font(fontFile, fontFormat, false, null);
     }
 
     /**
--- a/jdk/src/share/classes/java/awt/GraphicsConfiguration.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/awt/GraphicsConfiguration.java	Wed Jul 05 16:52:18 2017 +0200
@@ -440,13 +440,14 @@
      * the {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
      * PERPIXEL_TRANSLUCENT} kind of translucency.
      *
-     * @param gc GraphicsConfiguration
-     * @throws NullPointerException if the gc argument is null
      * @return whether the given GraphicsConfiguration supports
      *         the translucency effects.
+     *
      * @see Window#setBackground(Color)
+     *
+     * @since 1.7
      */
-    /*public */boolean isTranslucencyCapable() {
+    public boolean isTranslucencyCapable() {
         // Overridden in subclasses
         return false;
     }
--- a/jdk/src/share/classes/java/awt/GraphicsDevice.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/awt/GraphicsDevice.java	Wed Jul 05 16:52:18 2017 +0200
@@ -112,10 +112,14 @@
      */
     public final static int TYPE_IMAGE_BUFFER           = 2;
 
-    /** Kinds of translucency supported by the underlying system.
-     *  @see #isTranslucencySupported
+    /**
+     * Kinds of translucency supported by the underlying system.
+     *
+     * @see #isWindowTranslucencySupported
+     *
+     * @since 1.7
      */
-    /*public */static enum WindowTranslucency {
+    public static enum WindowTranslucency {
         /**
          * Represents support in the underlying system for windows each pixel
          * of which is guaranteed to be either completely opaque, with
@@ -246,38 +250,44 @@
      * full-screen window is not visible, this method will make it visible.
      * It will remain visible when returning to windowed mode.
      * <p>
-     * When returning to windowed mode from an exclusive full-screen window, any
-     * display changes made by calling <code>setDisplayMode</code> are
+     * When entering full-screen mode, all the translucency effects are reset for
+     * the window. Its shape is set to {@code null}, the opacity value is set to
+     * 1.0f, and the background color alpha is set to 255 (completely opaque).
+     * These values are not restored when returning to windowed mode.
+     * <p>
+     * When returning to windowed mode from an exclusive full-screen window,
+     * any display changes made by calling {@code setDisplayMode} are
      * automatically restored to their original state.
      *
-     * @param w a window to use as the full-screen window; <code>null</code>
+     * @param w a window to use as the full-screen window; {@code null}
      * if returning to windowed mode.  Some platforms expect the
      * fullscreen window to be a top-level component (i.e., a Frame);
      * therefore it is preferable to use a Frame here rather than a
      * Window.
+     *
      * @see #isFullScreenSupported
      * @see #getFullScreenWindow
      * @see #setDisplayMode
      * @see Component#enableInputMethods
      * @see Component#setVisible
+     *
      * @since 1.4
      */
     public void setFullScreenWindow(Window w) {
         if (w != null) {
-            //XXX: The actions should be documented in some non-update release.
-            /*
             if (w.getShape() != null) {
-                w.setShape(w, null);
-            }
-            if (!w.isOpaque()) {
-                w.setOpaque(false);
+                w.setShape(null);
             }
             if (w.getOpacity() < 1.0f) {
                 w.setOpacity(1.0f);
             }
-            */
+            Color bgColor = w.getBackground();
+            if (bgColor.getAlpha() < 255) {
+                bgColor = new Color(bgColor.getRed(), bgColor.getGreen(),
+                                    bgColor.getBlue(), 255);
+                w.setBackground(bgColor);
+            }
         }
-
         if (fullScreenWindow != null && windowedModeBounds != null) {
             // if the window went into fs mode before it was realized it may
             // have (0,0) dimensions
@@ -469,13 +479,15 @@
     }
 
     /**
-     * Returns whether the given level of translucency is supported
+     * Returns whether the given level of translucency is supported by
      * this graphics device.
      *
      * @param translucencyKind a kind of translucency support
      * @return whether the given translucency kind is supported
+     *
+     * @since 1.7
      */
-    /*public */boolean isWindowTranslucencySupported(WindowTranslucency translucencyKind) {
+    public boolean isWindowTranslucencySupported(WindowTranslucency translucencyKind) {
         switch (translucencyKind) {
             case PERPIXEL_TRANSPARENT:
                 return isWindowShapingSupported();
--- a/jdk/src/share/classes/java/awt/Window.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/awt/Window.java	Wed Jul 05 16:52:18 2017 +0200
@@ -25,6 +25,7 @@
 package java.awt;
 
 import java.awt.event.*;
+import java.awt.geom.Path2D;
 import java.awt.geom.Point2D;
 import java.awt.im.InputContext;
 import java.awt.image.BufferStrategy;
@@ -297,6 +298,7 @@
     /*
      * Opacity level of the window
      *
+     * @serial
      * @see #setOpacity(float)
      * @see #getOpacity()
      * @since 1.7
@@ -307,6 +309,7 @@
      * The shape assigned to this window. This field is set to null if
      * no shape is set (rectangular window).
      *
+     * @serial
      * @see #getShape()
      * @see #setShape(Shape)
      * @since 1.7
@@ -3340,32 +3343,78 @@
     // ******************** SHAPES & TRANSPARENCY CODE ********************
 
     /**
-     * JavaDoc
+     * Returns the opacity of the window.
+     *
+     * @return the opacity of the window
+     *
+     * @see Window#setOpacity
+     * @see GraphicsDevice.WindowTranslucency
+     *
+     * @since 1.7
      */
-    /*public */float getOpacity() {
+    public float getOpacity() {
         synchronized (getTreeLock()) {
             return opacity;
         }
     }
 
     /**
-     * JavaDoc
+     * Sets the opacity of the window.
+     * <p>
+     * The opacity value is in the range [0..1]. Note that setting the opacity
+     * level of 0 may or may not disable the mouse event handling on this
+     * window. This is a platform-dependent behavior.
+     * <p>
+     * In order for this method to enable the translucency effect, the {@link
+     * GraphicsDevice#isWindowTranslucencySupported()} method must indicate that
+     * the {@link GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}
+     * translucency is supported.
+     * <p>
+     * Also note that the window must not be in the full-screen mode when
+     * setting the opacity value &lt; 1.0f. Otherwise the {@code
+     * IllegalComponentStateException} is thrown.
+     * <p>
+     * The translucency levels of individual pixels may also be effected by the
+     * alpha component of their color (see {@link setBackground()}) and the
+     * current shape of this window (see {@link setShape()}).
+     *
+     * @param opacity the opacity level to set to the window
+     *
+     * @throws IllegalArgumentException if the opacity is out of the range
+     *     [0..1]
+     * @throws IllegalComponentStateException if the window is in full screen
+     *     mode, and the opacity is less than 1.0f
+     * @throws UnsupportedOperationException if the {@code
+     *     GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}
+     *     translucency kind is not supported and the opacity is less than 1.0f
+     *
+     * @see Window#getOpacity
+     * @see Window#setBackground()
+     * @see Window#setShape()
+     * @see GraphicsDevice.WindowTranslucency
+     * @see GraphicsDevice#isWindowTranslucencySupported()
+     *
+     * @since 1.7
      */
-    /*public */void setOpacity(float opacity) {
+    public void setOpacity(float opacity) {
         synchronized (getTreeLock()) {
             if (opacity < 0.0f || opacity > 1.0f) {
                 throw new IllegalArgumentException(
                     "The value of opacity should be in the range [0.0f .. 1.0f].");
             }
-            GraphicsConfiguration gc = getGraphicsConfiguration();
-            GraphicsDevice gd = gc.getDevice();
-            if (!gd.isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.TRANSLUCENT)) {
-                throw new UnsupportedOperationException(
+            if (opacity < 1.0f) {
+                GraphicsConfiguration gc = getGraphicsConfiguration();
+                GraphicsDevice gd = gc.getDevice();
+                if (gc.getDevice().getFullScreenWindow() == this) {
+                    throw new IllegalComponentStateException(
+                        "Setting opacity for full-screen window is not supported.");
+                }
+                if (!gd.isWindowTranslucencySupported(
+                    GraphicsDevice.WindowTranslucency.TRANSLUCENT))
+                {
+                    throw new UnsupportedOperationException(
                         "TRANSLUCENT translucency is not supported.");
-            }
-            if ((gc.getDevice().getFullScreenWindow() == this) && (opacity < 1.0f)) {
-                throw new IllegalArgumentException(
-                    "Setting opacity for full-screen window is not supported.");
+                }
             }
             this.opacity = opacity;
             WindowPeer peer = (WindowPeer)getPeer();
@@ -3376,37 +3425,86 @@
     }
 
     /**
-     * JavaDoc
+     * Returns the shape of the window.
+     *
+     * The value returned by this method may not be the same as
+     * previously set with {@code setShape(shape)}, but it is guaranteed
+     * to represent the same shape.
+     *
+     * @return the shape of the window or {@code null} if no
+     *     shape is specified for the window
+     *
+     * @see Window#setShape
+     * @see GraphicsDevice.WindowTranslucency
+     *
+     * @since 1.7
      */
-    /*public */Shape getShape() {
+    public Shape getShape() {
         synchronized (getTreeLock()) {
-            return shape;
+            return shape == null ? null : new Path2D.Float(shape);
         }
     }
 
     /**
-     * JavaDoc
+     * Sets the shape of the window.
+     * <p>
+     * Setting a shape enables cutting off some parts of the window, leaving
+     * visible and clickable only those parts belonging to the given shape
+     * (see {@link Shape}). If the shape argument is null, this methods
+     * restores the default shape (making the window rectangular on most
+     * platforms.)
+     * <p>
+     * The following conditions must be met in order to set a non-null shape:
+     * <ul>
+     * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
+     * PERPIXEL_TRANSPARENT} translucency kind must be supported by the
+     * underlying system (see {@link })
+     * <i>and</i>
+     * <li>The window must not be in the full-screen mode (see
+     * {@link GraphicsDevice#setFullScreenWindow()})
+     * </ul>
+     * If a certain condition is not met, either the {@code
+     * UnsupportedOperationException} or {@code IllegalComponentStateException}
+     * is thrown.
+     * <p>
+     * The tranlucency levels of individual pixels may also be effected by the
+     * alpha component of their color (see {@link setBackground()}) and the
+     * opacity value (see {@link setOpacity()}). See {@link
+     * GraphicsDevice#WindowTranslucency} for more details.
      *
-     * @param window the window to set the shape to
      * @param shape the shape to set to the window
-     * @throws IllegalArgumentException if the window is in full screen mode,
-     *                                  and the shape is not null
+     *
+     * @throws IllegalComponentStateException if the shape is not {@code
+     *     null} and the window is in full-screen mode
+     * @throws UnsupportedOperationException if the shape is not {@code
+     *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
+     *     PERPIXEL_TRANSPARENT} translucency is not supported
+     *
+     * @see Window#getShape()
+     * @see Window#setBackgound()
+     * @see Window#setOpacity()
+     * @see GraphicsDevice.WindowTranslucency
+     * @see GraphicsDevice#isWindowTranslucencySupported()
+     *
+     * @since 1.7
      */
-    /*public */void setShape(Shape shape) {
+    public void setShape(Shape shape) {
         synchronized (getTreeLock()) {
-            GraphicsConfiguration gc = getGraphicsConfiguration();
-            GraphicsDevice gd = gc.getDevice();
-            if (!gd.isWindowTranslucencySupported(
-                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
-            {
-                throw new UnsupportedOperationException(
+            if (shape != null) {
+                GraphicsConfiguration gc = getGraphicsConfiguration();
+                GraphicsDevice gd = gc.getDevice();
+                if (gc.getDevice().getFullScreenWindow() == this) {
+                    throw new IllegalComponentStateException(
+                        "Setting shape for full-screen window is not supported.");
+                }
+                if (!gd.isWindowTranslucencySupported(
+                        GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
+                {
+                    throw new UnsupportedOperationException(
                         "PERPIXEL_TRANSPARENT translucency is not supported.");
+                }
             }
-            if ((gc.getDevice().getFullScreenWindow() == this) && (shape != null)) {
-                throw new IllegalArgumentException(
-                    "Setting shape for full-screen window is not supported.");
-            }
-            this.shape = shape;
+            this.shape = (shape == null) ? null : new Path2D.Float(shape);
             WindowPeer peer = (WindowPeer)getPeer();
             if (peer != null) {
                 peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
@@ -3415,66 +3513,115 @@
     }
 
     /**
-     * JavaDoc
+     * Gets the background color of this window.
+     * <p>
+     * Note that the alpha component of the returned color indicates whether
+     * the window is in the non-opaque (per-pixel translucent) mode.
+     *
+     * @return this component's background color
+     *
+     * @see Window#setBackground
+     * @see GraphicsDevice.WindowTranslucency
      */
-/*
+    @Override
+    public Color getBackground() {
+        return super.getBackground();
+    }
+
+    /**
+     * Sets the background color of this window.
+     * <p>
+     * If the windowing system supports the {@link
+     * GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT PERPIXEL_TRANSLUCENT}
+     * tranclucency, the alpha component of the given background color
+     * may effect the mode of operation for this window: it indicates whether
+     * this window must be opaque (alpha == 1.0f) or per-pixel translucent
+     * (alpha &lt; 1.0f).  All the following conditions must be met in order
+     * to be able to enable the per-pixel transparency mode for this window:
+     * <ul>
+     * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
+     * PERPIXEL_TRANSLUCENT} translucency must be supported
+     * by the graphics device where this window is located <i>and</i>
+     * <li>The window must not be in the full-screen mode (see {@link
+     * GraphicsDevice#setFullScreenWindow()})
+     * </ul>
+     * If a certain condition is not met at the time of calling this method,
+     * the alpha component of the given background color will not effect the
+     * mode of operation for this window.
+     * <p>
+     * When the window is per-pixel translucent, the drawing sub-system
+     * respects the alpha value of each individual pixel. If a pixel gets
+     * painted with the alpha color component equal to zero, it becomes
+     * visually transparent, if the alpha of the pixel is equal to 1.0f, the
+     * pixel is fully opaque. Interim values of the alpha color component make
+     * the pixel semi-transparent. In this mode the background of the window
+     * gets painted with the alpha value of the given background color (meaning
+     * that it is not painted at all if the alpha value of the argument of this
+     * method is equal to zero.)
+     * <p>
+     * The actual level of translucency of a given pixel also depends on window
+     * opacity (see {@link setOpacity()}), as well as the current shape of
+     * this window (see {@link setShape()}).
+     * <p>
+     * Note that painting a pixel with the alpha value of 0 may or may not
+     * disable the mouse event handling on this pixel. This is a
+     * platform-dependent behavior. To make sure the mouse clicks do not get
+     * dispatched to a particular pixel, the pixel must be excluded from the
+     * shape of the window.
+     * <p>
+     * Enabling the per-pixel translucency mode may change the graphics
+     * configuration of this window due to the native platform requirements.
+     *
+     * @param bgColor the color to become this window's background color.
+     *
+     * @throws IllegalComponentStateException if the alpha value of the given
+     *     background color is less than 1.0f and the window is in
+     *     full-screen mode
+     * @throws UnsupportedOperationException if the alpha value of the given
+     *     background color is less than 1.0f and
+     *     {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
+     *     PERPIXEL_TRANSLUCENT} translucency is not supported
+     *
+     * @see Window#getBackground
+     * @see Window#setOpacity()
+     * @see Window#setShape()
+     * @see GraphicsDevice.WindowTranslucency
+     * @see GraphicsDevice#isWindowTranslucencySupported()
+     * @see GraphicsConfiguration#isTranslucencyCapable()
+     */
     @Override
     public void setBackground(Color bgColor) {
+        Color oldBg = getBackground();
+        if (oldBg != null && oldBg.equals(bgColor)) {
+            return;
+        }
+        super.setBackground(bgColor);
+        int oldAlpha = oldBg != null ? oldBg.getAlpha() : 255;
         int alpha = bgColor.getAlpha();
-        if (alpha < 255) { // non-opaque window
+        if ((oldAlpha == 255) && (alpha < 255)) { // non-opaque window
             GraphicsConfiguration gc = getGraphicsConfiguration();
             GraphicsDevice gd = gc.getDevice();
             if (gc.getDevice().getFullScreenWindow() == this) {
-                throw new IllegalArgumentException(
+                throw new IllegalComponentStateException(
                     "Making full-screen window non opaque is not supported.");
             }
             if (!gc.isTranslucencyCapable()) {
                 GraphicsConfiguration capableGC = gd.getTranslucencyCapableGC();
                 if (capableGC == null) {
-                    throw new IllegalArgumentException(
+                    throw new UnsupportedOperationException(
                         "PERPIXEL_TRANSLUCENT translucency is not supported");
                 }
-                // TODO: change GC
+                setGraphicsConfiguration(capableGC);
             }
             setLayersOpaque(this, false);
+        } else if ((oldAlpha < 255) && (alpha == 255)) {
+            setLayersOpaque(this, true);
         }
-
-        super.setBackground(bgColor);
-
         WindowPeer peer = (WindowPeer)getPeer();
         if (peer != null) {
             peer.setOpaque(alpha == 255);
         }
     }
-*/
-
-    private transient boolean opaque = true;
-
-    void setOpaque(boolean opaque) {
-        synchronized (getTreeLock()) {
-            GraphicsConfiguration gc = getGraphicsConfiguration();
-            if (!opaque && !com.sun.awt.AWTUtilities.isTranslucencyCapable(gc)) {
-            throw new IllegalArgumentException(
-                    "The window must use a translucency-compatible graphics configuration");
-            }
-            if (!com.sun.awt.AWTUtilities.isTranslucencySupported(
-                    com.sun.awt.AWTUtilities.Translucency.PERPIXEL_TRANSLUCENT))
-            {
-                throw new UnsupportedOperationException(
-                        "PERPIXEL_TRANSLUCENT translucency is not supported.");
-            }
-            if ((gc.getDevice().getFullScreenWindow() == this) && !opaque) {
-                throw new IllegalArgumentException(
-                    "Making full-screen window non opaque is not supported.");
-            }
-            setLayersOpaque(this, opaque);
-            this.opaque = opaque;
-            WindowPeer peer = (WindowPeer)getPeer();
-            if (peer != null) {
-                peer.setOpaque(opaque);
-            }
-        }
-    }
 
     private void updateWindow(BufferedImage backBuffer) {
         synchronized (getTreeLock()) {
@@ -3505,10 +3652,10 @@
             }
             lp.setOpaque(isOpaque);
             root.setOpaque(isOpaque);
-            root.setDoubleBuffered(isOpaque); //XXX: the "white rect" workaround
+            root.setDoubleBuffered(isOpaque);
             if (content != null) {
                 content.setOpaque(isOpaque);
-                content.setDoubleBuffered(isOpaque); //XXX: the "white rect" workaround
+                content.setDoubleBuffered(isOpaque);
 
                 // Iterate down one level to see whether we have a JApplet
                 // (which is also a RootPaneContainer) which requires processing
@@ -3523,36 +3670,6 @@
                 }
             }
         }
-
-        Color bg = component.getBackground();
-        boolean hasTransparentBg = TRANSPARENT_BACKGROUND_COLOR.equals(bg);
-
-        Container container = null;
-        if (component instanceof Container) {
-            container = (Container) component;
-        }
-
-        if (isOpaque) {
-            if (hasTransparentBg) {
-                // Note: we use the SystemColor.window color as the default.
-                // This color is used in the WindowPeer implementations to
-                // initialize the background color of the window if it is null.
-                // (This might not be the right thing to do for other
-                // RootPaneContainers we might be invoked with)
-                Color newColor = null;
-                if (container != null && container.preserveBackgroundColor != null) {
-                    newColor = container.preserveBackgroundColor;
-                } else {
-                    newColor = SystemColor.window;
-                }
-                component.setBackground(newColor);
-            }
-        } else {
-            if (!hasTransparentBg && container != null) {
-                container.preserveBackgroundColor = bg;
-            }
-            component.setBackground(TRANSPARENT_BACKGROUND_COLOR);
-        }
     }
 
 
@@ -3620,20 +3737,16 @@
                 window.setShape(shape);
             }
             public boolean isOpaque(Window window) {
-                /*
-                return window.getBackground().getAlpha() < 255;
-                */
-                synchronized (window.getTreeLock()) {
-                    return window.opaque;
-                }
+                Color bg = window.getBackground();
+                return (bg != null) ? bg.getAlpha() == 255 : true;
             }
             public void setOpaque(Window window, boolean opaque) {
-                /*
                 Color bg = window.getBackground();
+                if (bg == null) {
+                    bg = new Color(0, 0, 0, 0);
+                }
                 window.setBackground(new Color(bg.getRed(), bg.getGreen(), bg.getBlue(),
                                                opaque ? 255 : 0));
-                */
-                window.setOpaque(opaque);
             }
             public void updateWindow(Window window, BufferedImage backBuffer) {
                 window.updateWindow(backBuffer);
@@ -3674,6 +3787,10 @@
         }); // WindowAccessor
     } // static
 
+    // a window doesn't need to be updated in the Z-order.
+    @Override
+    void updateZOrder() {}
+
 } // class Window
 
 
--- a/jdk/src/share/classes/java/lang/NoSuchFieldError.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/lang/NoSuchFieldError.java	Wed Jul 05 16:52:18 2017 +0200
@@ -41,14 +41,14 @@
     private static final long serialVersionUID = -3456430195886129035L;
 
     /**
-     * Constructs a <code>NoSuchFieldException</code> with no detail  message.
+     * Constructs a <code>NoSuchFieldError</code> with no detail message.
      */
     public NoSuchFieldError() {
         super();
     }
 
     /**
-     * Constructs a <code>NoSuchFieldException</code> with the specified
+     * Constructs a <code>NoSuchFieldError</code> with the specified
      * detail message.
      *
      * @param   s   the detail message.
--- a/jdk/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -196,10 +196,12 @@
 
         if ((start < 0) || (end > len) || (start > end))
             throw new IndexOutOfBoundsException();
-        int sublen = end - start;
-        int off = offset + ((pos + start) << $LG_BYTES_PER_VALUE$);
-        assert (off >= 0);
-        return new ByteBufferAsCharBuffer$RW$$BO$(bb, -1, 0, sublen, sublen, off);
+        return new ByteBufferAsCharBuffer$RW$$BO$(bb,
+                                                  -1,
+                                                  pos + start,
+                                                  pos + end,
+                                                  capacity(),
+                                                  offset);
     }
 
 #end[char]
--- a/jdk/src/share/classes/java/nio/Direct-X-Buffer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/nio/Direct-X-Buffer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -412,10 +412,12 @@
 
         if ((start < 0) || (end > len) || (start > end))
             throw new IndexOutOfBoundsException();
-        int sublen = end - start;
-        int off = (pos + start) << $LG_BYTES_PER_VALUE$;
-        assert (off >= 0);
-        return new DirectCharBuffer$RW$$BO$(this, -1, 0, sublen, sublen, off);
+        return new DirectCharBuffer$RW$$BO$(this,
+                                            -1,
+                                            pos + start,
+                                            pos + end,
+                                            capacity(),
+                                            offset);
     }
 
 #end[char]
--- a/jdk/src/share/classes/java/nio/Heap-X-Buffer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/nio/Heap-X-Buffer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -572,10 +572,13 @@
             || (end > length())
             || (start > end))
             throw new IndexOutOfBoundsException();
-        int len = end - start;
+        int pos = position();
         return new HeapCharBuffer$RW$(hb,
-                                      -1, 0, len, len,
-                                      offset + position() + start);
+                                      -1,
+                                      pos + start,
+                                      pos + end,
+                                      capacity(),
+                                      offset);
     }
 
 #end[char]
--- a/jdk/src/share/classes/java/nio/StringCharBuffer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/nio/StringCharBuffer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -102,10 +102,12 @@
     public final CharBuffer subSequence(int start, int end) {
         try {
             int pos = position();
-            return new StringCharBuffer(str, -1,
+            return new StringCharBuffer(str,
+                                        -1,
                                         pos + checkIndex(start, pos),
                                         pos + checkIndex(end, pos),
-                                        remaining(), offset);
+                                        capacity(),
+                                        offset);
         } catch (IllegalArgumentException x) {
             throw new IndexOutOfBoundsException();
         }
--- a/jdk/src/share/classes/java/nio/channels/AsynchronousDatagramChannel.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/nio/channels/AsynchronousDatagramChannel.java	Wed Jul 05 16:52:18 2017 +0200
@@ -443,7 +443,7 @@
      * at least care must be taken to ensure that the buffer is not accessed
      * while the channel remains open.
      *
-     * <p> If there is a security manager installed and the the channel is not
+     * <p> If there is a security manager installed and the channel is not
      * connected then this method verifies that the target address and port number
      * are permitted by the security manager's {@link SecurityManager#checkConnect
      * checkConnect} method.  The overhead of this security check can be avoided
--- a/jdk/src/share/classes/java/nio/file/Path.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/nio/file/Path.java	Wed Jul 05 16:52:18 2017 +0200
@@ -494,7 +494,7 @@
      * @throws  IOException
      *          if an I/O error occurs
      * @throws  SecurityException
-     *          In the case of the the default provider, and a security manager
+     *          In the case of the default provider, and a security manager
      *          is installed, it denies {@link LinkPermission}<tt>("symbolic")</tt>
      *          or its {@link SecurityManager#checkWrite(String) checkWrite}
      *          method denies write access to the path of the symbolic link.
@@ -531,7 +531,7 @@
      * @throws  IOException
      *          if an I/O error occurs
      * @throws  SecurityException
-     *          In the case of the the default provider, and a security manager
+     *          In the case of the default provider, and a security manager
      *          is installed, it denies {@link LinkPermission}<tt>("hard")</tt>
      *          or its {@link SecurityManager#checkWrite(String) checkWrite}
      *          method denies write access to both this path and the path of the
@@ -560,7 +560,7 @@
      * @throws  IOException
      *          if an I/O error occurs
      * @throws  SecurityException
-     *          In the case of the the default provider, and a security manager
+     *          In the case of the default provider, and a security manager
      *          is installed, it checks that {@code FilePermission} has been
      *          granted with the "{@code readlink}" action to read the link.
      */
@@ -615,7 +615,7 @@
      *          obtained
      *
      * @throws  SecurityException
-     *          In the case of the the default provider, and a security manager
+     *          In the case of the default provider, and a security manager
      *          is installed, the {@link #toAbsolutePath toAbsolutePath} method
      *          throws a security exception.
      */
@@ -636,7 +636,7 @@
      * @throws  IOError
      *          if an I/O error occurs
      * @throws  SecurityException
-     *          In the case of the the default provider, and a security manager
+     *          In the case of the default provider, and a security manager
      *          is installed, its {@link SecurityManager#checkPropertyAccess(String)
      *          checkPropertyAccess} method is invoked to check access to the
      *          system property {@code user.dir}
@@ -677,7 +677,7 @@
      * @throws  IOException
      *          if the file does not exist or an I/O error occurs
      * @throws  SecurityException
-     *          In the case of the the default provider, and a security manager
+     *          In the case of the default provider, and a security manager
      *          is installed, its {@link SecurityManager#checkRead(String) checkRead}
      *          method is invoked to check read access to the file, and where
      *          this path is not absolute, its {@link SecurityManager#checkPropertyAccess(String)
--- a/jdk/src/share/classes/java/nio/file/SecureDirectoryStream.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/nio/file/SecureDirectoryStream.java	Wed Jul 05 16:52:18 2017 +0200
@@ -208,7 +208,7 @@
      * @throws  ClosedDirectoryStreamException
      *          if the directory stream is closed
      * @throws  NoSuchFileException
-     *          if the the directory does not exist <i>(optional specific exception)</i>
+     *          if the directory does not exist <i>(optional specific exception)</i>
      * @throws  DirectoryNotEmptyException
      *          if the directory could not otherwise be deleted because it is
      *          not empty <i>(optional specific exception)</i>
--- a/jdk/src/share/classes/java/security/AccessController.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/security/AccessController.java	Wed Jul 05 16:52:18 2017 +0200
@@ -425,7 +425,7 @@
      * Performs the specified <code>PrivilegedExceptionAction</code> with
      * privileges enabled and restricted by the specified
      * <code>AccessControlContext</code>.  The action is performed with the
-     * intersection of the the permissions possessed by the caller's
+     * intersection of the permissions possessed by the caller's
      * protection domain, and those possessed by the domains represented by the
      * specified <code>AccessControlContext</code>.
      * <p>
--- a/jdk/src/share/classes/java/security/AlgorithmParametersSpi.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/security/AlgorithmParametersSpi.java	Wed Jul 05 16:52:18 2017 +0200
@@ -102,7 +102,7 @@
      * parameters should be returned in an instance of the
      * <code>DSAParameterSpec</code> class.
      *
-     * @param paramSpec the the specification class in which
+     * @param paramSpec the specification class in which
      * the parameters should be returned.
      *
      * @return the parameter specification.
--- a/jdk/src/share/classes/java/security/PrivilegedActionException.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/security/PrivilegedActionException.java	Wed Jul 05 16:52:18 2017 +0200
@@ -87,7 +87,7 @@
     }
 
     /**
-     * Returns the the cause of this exception (the exception thrown by
+     * Returns the cause of this exception (the exception thrown by
      * the privileged computation that resulted in this
      * <code>PrivilegedActionException</code>).
      *
--- a/jdk/src/share/classes/java/security/Security.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/security/Security.java	Wed Jul 05 16:52:18 2017 +0200
@@ -501,7 +501,7 @@
      * <li> <i>&lt;crypto_service>.&lt;algorithm_or_type>
      * &lt;attribute_name>:&lt attribute_value></i>
      * <p> The cryptographic service name must not contain any dots. There
-     * must be one or more space charaters between the the
+     * must be one or more space charaters between the
      * <i>&lt;algorithm_or_type></i> and the <i>&lt;attribute_name></i>.
      *  <p> A provider satisfies this selection criterion iff the
      * provider implements the specified algorithm or type for the specified
--- a/jdk/src/share/classes/java/security/SecurityPermission.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/security/SecurityPermission.java	Wed Jul 05 16:52:18 2017 +0200
@@ -118,7 +118,7 @@
  *   <td>setProperty.{key}</td>
  *   <td>Setting of the security property with the specified key</td>
  *   <td>This could include setting a security provider or defining
- * the location of the the system-wide security policy.  Malicious
+ * the location of the system-wide security policy.  Malicious
  * code that has permission to set a new security provider may
  * set a rogue provider that steals confidential information such
  * as cryptographic private keys. In addition, malicious code with
--- a/jdk/src/share/classes/java/security/SignatureSpi.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/security/SignatureSpi.java	Wed Jul 05 16:52:18 2017 +0200
@@ -316,7 +316,7 @@
      * overridden by a provider
      *
      * @exception InvalidAlgorithmParameterException if this method is
-     * overridden by a provider and the the given parameters
+     * overridden by a provider and the given parameters
      * are inappropriate for this signature engine
      */
     protected void engineSetParameter(AlgorithmParameterSpec params)
--- a/jdk/src/share/classes/java/security/cert/CertificateFactory.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/security/cert/CertificateFactory.java	Wed Jul 05 16:52:18 2017 +0200
@@ -460,7 +460,7 @@
      * {@link java.io.InputStream#reset() reset}, this method will
      * consume the entire input stream. Otherwise, each call to this
      * method consumes one CRL and the read position of the input stream
-     * is positioned to the next available byte after the the inherent
+     * is positioned to the next available byte after the inherent
      * end-of-CRL marker. If the data in the
      * input stream does not contain an inherent end-of-CRL marker (other
      * than EOF) and there is trailing data after the CRL is parsed, a
--- a/jdk/src/share/classes/java/security/cert/CertificateFactorySpi.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/security/cert/CertificateFactorySpi.java	Wed Jul 05 16:52:18 2017 +0200
@@ -88,7 +88,7 @@
      * {@link java.io.InputStream#reset() reset}, this method will
      * consume the entire input stream. Otherwise, each call to this
      * method consumes one certificate and the read position of the input stream
-     * is positioned to the next available byte after the the inherent
+     * is positioned to the next available byte after the inherent
      * end-of-certificate marker. If the data in the
      * input stream does not contain an inherent end-of-certificate marker (other
      * than EOF) and there is trailing data after the certificate is parsed, a
@@ -261,7 +261,7 @@
      * {@link java.io.InputStream#reset() reset}, this method will
      * consume the entire input stream. Otherwise, each call to this
      * method consumes one CRL and the read position of the input stream
-     * is positioned to the next available byte after the the inherent
+     * is positioned to the next available byte after the inherent
      * end-of-CRL marker. If the data in the
      * input stream does not contain an inherent end-of-CRL marker (other
      * than EOF) and there is trailing data after the CRL is parsed, a
--- a/jdk/src/share/classes/java/util/Calendar.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/util/Calendar.java	Wed Jul 05 16:52:18 2017 +0200
@@ -41,9 +41,14 @@
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.io.OptionalDataException;
 import java.io.Serializable;
+import java.security.AccessControlContext;
 import java.security.AccessController;
+import java.security.PermissionCollection;
+import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
+import java.security.ProtectionDomain;
 import java.text.DateFormat;
 import java.text.DateFormatSymbols;
 import sun.util.BuddhistCalendar;
@@ -2628,6 +2633,18 @@
         }
     }
 
+    private static class CalendarAccessControlContext {
+        private static final AccessControlContext INSTANCE;
+        static {
+            RuntimePermission perm = new RuntimePermission("accessClassInPackage.sun.util.calendar");
+            PermissionCollection perms = perm.newPermissionCollection();
+            perms.add(perm);
+            INSTANCE = new AccessControlContext(new ProtectionDomain[] {
+                                                    new ProtectionDomain(null, perms)
+                                                });
+        }
+    }
+
     /**
      * Reconstitutes this object from a stream (i.e., deserialize it).
      */
@@ -2657,17 +2674,30 @@
         serialVersionOnStream = currentSerialVersion;
 
         // If there's a ZoneInfo object, use it for zone.
+        ZoneInfo zi = null;
         try {
-            ZoneInfo zi = (ZoneInfo) AccessController.doPrivileged(
-                new PrivilegedExceptionAction() {
-                    public Object run() throws Exception {
-                        return input.readObject();
-                    }
-                });
-            if (zi != null) {
-                zone = zi;
+            zi = AccessController.doPrivileged(
+                    new PrivilegedExceptionAction<ZoneInfo>() {
+                        public ZoneInfo run() throws Exception {
+                            return (ZoneInfo) input.readObject();
+                        }
+                    },
+                    CalendarAccessControlContext.INSTANCE);
+        } catch (PrivilegedActionException pae) {
+            Exception e = pae.getException();
+            if (!(e instanceof OptionalDataException)) {
+                if (e instanceof RuntimeException) {
+                    throw (RuntimeException) e;
+                } else if (e instanceof IOException) {
+                    throw (IOException) e;
+                } else if (e instanceof ClassNotFoundException) {
+                    throw (ClassNotFoundException) e;
+                }
+                throw new RuntimeException(e);
             }
-        } catch (Exception e) {
+        }
+        if (zi != null) {
+            zone = zi;
         }
 
         // If the deserialized object has a SimpleTimeZone, try to
@@ -2676,9 +2706,9 @@
         // implementation as much as possible.
         if (zone instanceof SimpleTimeZone) {
             String id = zone.getID();
-            TimeZone zi = TimeZone.getTimeZone(id);
-            if (zi != null && zi.hasSameRules(zone) && zi.getID().equals(id)) {
-                zone = zi;
+            TimeZone tz = TimeZone.getTimeZone(id);
+            if (tz != null && tz.hasSameRules(zone) && tz.getID().equals(id)) {
+                zone = tz;
             }
         }
     }
--- a/jdk/src/share/classes/java/util/logging/LogRecord.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/util/logging/LogRecord.java	Wed Jul 05 16:52:18 2017 +0200
@@ -25,6 +25,8 @@
 
 package java.util.logging;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
 import java.io.*;
 
 /**
@@ -64,9 +66,24 @@
  */
 
 public class LogRecord implements java.io.Serializable {
-    private static long globalSequenceNumber;
-    private static int nextThreadId=10;
-    private static ThreadLocal<Integer> threadIds = new ThreadLocal<Integer>();
+    private static final AtomicLong globalSequenceNumber
+        = new AtomicLong(0);
+
+    /**
+     * The default value of threadID will be the current thread's
+     * thread id, for ease of correlation, unless it is greater than
+     * MIN_SEQUENTIAL_THREAD_ID, in which case we try harder to keep
+     * our promise to keep threadIDs unique by avoiding collisions due
+     * to 32-bit wraparound.  Unfortunately, LogRecord.getThreadID()
+     * returns int, while Thread.getId() returns long.
+     */
+    private static final int MIN_SEQUENTIAL_THREAD_ID = Integer.MAX_VALUE / 2;
+
+    private static final AtomicInteger nextThreadId
+        = new AtomicInteger(MIN_SEQUENTIAL_THREAD_ID);
+
+    private static final ThreadLocal<Integer> threadIds
+        = new ThreadLocal<Integer>();
 
     /**
      * @serial Logging message level
@@ -123,6 +140,23 @@
     private transient ResourceBundle resourceBundle;
 
     /**
+     * Returns the default value for a new LogRecord's threadID.
+     */
+    private int defaultThreadID() {
+        long tid = Thread.currentThread().getId();
+        if (tid < MIN_SEQUENTIAL_THREAD_ID) {
+            return (int) tid;
+        } else {
+            Integer id = threadIds.get();
+            if (id == null) {
+                id = nextThreadId.getAndIncrement();
+                threadIds.set(id);
+            }
+            return id;
+        }
+    }
+
+    /**
      * Construct a LogRecord with the given level and message values.
      * <p>
      * The sequence property will be initialized with a new unique value.
@@ -144,15 +178,8 @@
         this.level = level;
         message = msg;
         // Assign a thread ID and a unique sequence number.
-        synchronized (LogRecord.class) {
-            sequenceNumber = globalSequenceNumber++;
-            Integer id = threadIds.get();
-            if (id == null) {
-                id = new Integer(nextThreadId++);
-                threadIds.set(id);
-            }
-            threadID = id.intValue();
-        }
+        sequenceNumber = globalSequenceNumber.getAndIncrement();
+        threadID = defaultThreadID();
         millis = System.currentTimeMillis();
         needToInferCaller = true;
    }
--- a/jdk/src/share/classes/java/util/logging/Logger.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/util/logging/Logger.java	Wed Jul 05 16:52:18 2017 +0200
@@ -477,7 +477,7 @@
 
         Logger logger = this;
         while (logger != null) {
-            for (Handler handler : logger.handlers) {
+            for (Handler handler : logger.getHandlers()) {
                 handler.publish(record);
             }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/java/util/zip/ZipCoder.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.util.zip;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
+import java.util.Arrays;
+
+/**
+ * Utility class for zipfile name and comment decoding and encoding
+ */
+
+final class ZipCoder {
+
+    String toString(byte[] ba, int length) {
+        CharsetDecoder cd = decoder().reset();
+        int len = (int)(length * cd.maxCharsPerByte());
+        char[] ca = new char[len];
+        if (len == 0)
+            return new String(ca);
+        ByteBuffer bb = ByteBuffer.wrap(ba, 0, length);
+        CharBuffer cb = CharBuffer.wrap(ca);
+        CoderResult cr = cd.decode(bb, cb, true);
+        if (!cr.isUnderflow())
+            throw new IllegalArgumentException(cr.toString());
+        cr = cd.flush(cb);
+        if (!cr.isUnderflow())
+            throw new IllegalArgumentException(cr.toString());
+        return new String(ca, 0, cb.position());
+    }
+
+    String toString(byte[] ba) {
+        return toString(ba, ba.length);
+    }
+
+    byte[] getBytes(String s) {
+        CharsetEncoder ce = encoder().reset();
+        char[] ca = s.toCharArray();
+        int len = (int)(ca.length * ce.maxBytesPerChar());
+        byte[] ba = new byte[len];
+        if (len == 0)
+            return ba;
+        ByteBuffer bb = ByteBuffer.wrap(ba);
+        CharBuffer cb = CharBuffer.wrap(ca);
+        CoderResult cr = ce.encode(cb, bb, true);
+        if (!cr.isUnderflow())
+            throw new IllegalArgumentException(cr.toString());
+        cr = ce.flush(bb);
+        if (!cr.isUnderflow())
+            throw new IllegalArgumentException(cr.toString());
+        if (bb.position() == ba.length)  // defensive copy?
+            return ba;
+        else
+            return Arrays.copyOf(ba, bb.position());
+    }
+
+    // assume invoked only if "this" is not utf8
+    byte[] getBytesUTF8(String s) {
+        if (isutf8)
+            return getBytes(s);
+        if (utf8 == null)
+            utf8 = new ZipCoder(Charset.forName("UTF-8"));
+        return utf8.getBytes(s);
+    }
+
+
+    String toStringUTF8(byte[] ba, int len) {
+        if (isutf8)
+            return toString(ba, len);
+        if (utf8 == null)
+            utf8 = new ZipCoder(Charset.forName("UTF-8"));
+        return utf8.toString(ba, len);
+    }
+
+    boolean isUTF8() {
+        return isutf8;
+    }
+
+    private Charset cs;
+    private CharsetDecoder dec;
+    private CharsetEncoder enc;
+    private boolean isutf8;
+    private ZipCoder utf8;
+
+    private ZipCoder(Charset cs) {
+        this.cs = cs;
+        this.isutf8 = cs.name().equals("UTF-8");
+    }
+
+    static ZipCoder get(Charset charset) {
+        return new ZipCoder(charset);
+    }
+
+    private CharsetDecoder decoder() {
+        if (dec == null) {
+            dec = cs.newDecoder()
+              .onMalformedInput(CodingErrorAction.REPORT)
+              .onUnmappableCharacter(CodingErrorAction.REPORT);
+        }
+        return dec;
+    }
+
+    private CharsetEncoder encoder() {
+        if (enc == null) {
+            enc = cs.newEncoder()
+              .onMalformedInput(CodingErrorAction.REPORT)
+              .onUnmappableCharacter(CodingErrorAction.REPORT);
+        }
+        return enc;
+    }
+}
--- a/jdk/src/share/classes/java/util/zip/ZipConstants64.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipConstants64.java	Wed Jul 05 16:52:18 2017 +0200
@@ -73,5 +73,12 @@
     static final int  ZIP64_EXTSIZ = 8;       // compressed size, 8-byte
     static final int  ZIP64_EXTLEN = 16;      // uncompressed size, 8-byte
 
+    /*
+     * Language encoding flag EFS
+     */
+    static final int EFS = 0x800;       // If this bit is set the filename and
+                                        // comment fields for this file must be
+                                        // encoded using UTF-8.
+
     private ZipConstants64() {}
 }
--- a/jdk/src/share/classes/java/util/zip/ZipEntry.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipEntry.java	Wed Jul 05 16:52:18 2017 +0200
@@ -40,6 +40,7 @@
     long size = -1;     // uncompressed size of entry data
     long csize = -1;    // compressed size of entry data
     int method = -1;    // compression method
+    int flag = 0;       // general purpose flag
     byte[] extra;       // optional extra field data for entry
     String comment;     // optional comment string for entry
 
@@ -53,13 +54,6 @@
      */
     public static final int DEFLATED = 8;
 
-    static {
-        /* Zip library is loaded from System.initializeSystemClass */
-        initIDs();
-    }
-
-    private static native void initIDs();
-
     /**
      * Creates a new zip entry with the specified name.
      *
@@ -90,28 +84,15 @@
         size = e.size;
         csize = e.csize;
         method = e.method;
+        flag = e.flag;
         extra = e.extra;
         comment = e.comment;
     }
 
     /*
-     * Creates a new zip entry for the given name with fields initialized
-     * from the specified jzentry data.
+     * Creates a new un-initialized zip entry
      */
-    ZipEntry(String name, long jzentry) {
-        this.name = name;
-        initFields(jzentry);
-    }
-
-    private native void initFields(long jzentry);
-
-    /*
-     * Creates a new zip entry with fields initialized from the specified
-     * jzentry data.
-     */
-    ZipEntry(long jzentry) {
-        initFields(jzentry);
-    }
+    ZipEntry() {}
 
     /**
      * Returns the name of the entry.
@@ -258,16 +239,16 @@
 
     /**
      * Sets the optional comment string for the entry.
+     *
+     * <p>ZIP entry comments have maximum length of 0xffff. If the length of the
+     * specified comment string is greater than 0xFFFF bytes after encoding, only
+     * the first 0xFFFF bytes are output to the ZIP file entry.
+     *
      * @param comment the comment string
-     * @exception IllegalArgumentException if the length of the specified
-     *            comment string is greater than 0xFFFF bytes
+     *
      * @see #getComment()
      */
     public void setComment(String comment) {
-        if (comment != null && comment.length() > 0xffff/3
-                    && ZipOutputStream.getUTF8Length(comment) > 0xffff) {
-            throw new IllegalArgumentException("invalid entry comment length");
-        }
         this.comment = comment;
     }
 
--- a/jdk/src/share/classes/java/util/zip/ZipFile.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipFile.java	Wed Jul 05 16:52:18 2017 +0200
@@ -29,9 +29,11 @@
 import java.io.IOException;
 import java.io.EOFException;
 import java.io.File;
+import java.nio.charset.Charset;
 import java.util.Vector;
 import java.util.Enumeration;
 import java.util.NoSuchElementException;
+import static java.util.zip.ZipConstants64.*;
 
 /**
  * This class is used to read entries from a zip file.
@@ -76,16 +78,19 @@
     /**
      * Opens a zip file for reading.
      *
-     * <p>First, if there is a security
-     * manager, its <code>checkRead</code> method
-     * is called with the <code>name</code> argument
-     * as its argument to ensure the read is allowed.
+     * <p>First, if there is a security manager, its <code>checkRead</code>
+     * method is called with the <code>name</code> argument as its argument
+     * to ensure the read is allowed.
+     *
+     * <p>The UTF-8 {@link java.nio.charset.Charset charset} is used to
+     * decode the entry names and comments.
      *
      * @param name the name of the zip file
      * @throws ZipException if a ZIP format error has occurred
      * @throws IOException if an I/O error has occurred
      * @throws SecurityException if a security manager exists and its
      *         <code>checkRead</code> method doesn't allow read access to the file.
+     *
      * @see SecurityManager#checkRead(java.lang.String)
      */
     public ZipFile(String name) throws IOException {
@@ -101,6 +106,9 @@
      * method is called with the <code>name</code> argument as its argument to
      * ensure the read is allowed.
      *
+     * <p>The UTF-8 {@link java.nio.charset.Charset charset} is used to
+     * decode the entry names and comments
+     *
      * @param file the ZIP file to be opened for reading
      * @param mode the mode in which the file is to be opened
      * @throws ZipException if a ZIP format error has occurred
@@ -115,6 +123,59 @@
      * @since 1.3
      */
     public ZipFile(File file, int mode) throws IOException {
+        this(file, mode, Charset.forName("UTF-8"));
+    }
+
+    /**
+     * Opens a ZIP file for reading given the specified File object.
+     *
+     * <p>The UTF-8 {@link java.nio.charset.Charset charset} is used to
+     * decode the entry names and comments.
+     *
+     * @param file the ZIP file to be opened for reading
+     * @throws ZipException if a ZIP format error has occurred
+     * @throws IOException if an I/O error has occurred
+     */
+    public ZipFile(File file) throws ZipException, IOException {
+        this(file, OPEN_READ);
+    }
+
+    private ZipCoder zc;
+
+    /**
+     * Opens a new <code>ZipFile</code> to read from the specified
+     * <code>File</code> object in the specified mode.  The mode argument
+     * must be either <tt>OPEN_READ</tt> or <tt>OPEN_READ | OPEN_DELETE</tt>.
+     *
+     * <p>First, if there is a security manager, its <code>checkRead</code>
+     * method is called with the <code>name</code> argument as its argument to
+     * ensure the read is allowed.
+     *
+     * @param file the ZIP file to be opened for reading
+     * @param mode the mode in which the file is to be opened
+     * @param charset
+     *        the {@link java.nio.charset.Charset {@code charset}} to
+     *        be used to decode the ZIP entry name and comment that are not
+     *        encoded by using UTF-8 encoding (indicated by entry's general
+     *        purpose flag).
+     *
+     * @throws ZipException if a ZIP format error has occurred
+     * @throws IOException if an I/O error has occurred
+     *
+     * @throws SecurityException
+     *         if a security manager exists and its <code>checkRead</code>
+     *         method doesn't allow read access to the file,or its
+     *         <code>checkDelete</code> method doesn't allow deleting the
+     *         file when the <tt>OPEN_DELETE</tt> flag is set
+     *
+     * @throws IllegalArgumentException if the <tt>mode</tt> argument is invalid
+     *
+     * @see SecurityManager#checkRead(java.lang.String)
+     *
+     * @since 1.7
+     */
+    public ZipFile(File file, int mode, Charset charset) throws IOException
+    {
         if (((mode & OPEN_READ) == 0) ||
             ((mode & ~(OPEN_READ | OPEN_DELETE)) != 0)) {
             throw new IllegalArgumentException("Illegal mode: 0x"+
@@ -128,24 +189,61 @@
                 sm.checkDelete(name);
             }
         }
+        if (charset == null)
+            throw new NullPointerException("charset is null");
+        this.zc = ZipCoder.get(charset);
         jzfile = open(name, mode, file.lastModified());
-
         this.name = name;
         this.total = getTotal(jzfile);
     }
 
-    private static native long open(String name, int mode, long lastModified);
-    private static native int getTotal(long jzfile);
-
+    /**
+     * Opens a zip file for reading.
+     *
+     * <p>First, if there is a security manager, its <code>checkRead</code>
+     * method is called with the <code>name</code> argument as its argument
+     * to ensure the read is allowed.
+     *
+     * @param name the name of the zip file
+     * @param charset
+     *        the {@link java.nio.charset.Charset {@code charset}} to
+     *        be used to decode the ZIP entry name and comment that are not
+     *        encoded by using UTF-8 encoding (indicated by entry's general
+     *        purpose flag).
+     *
+     * @throws ZipException if a ZIP format error has occurred
+     * @throws IOException if an I/O error has occurred
+     * @throws SecurityException
+     *         if a security manager exists and its <code>checkRead</code>
+     *         method doesn't allow read access to the file
+     *
+     * @see SecurityManager#checkRead(java.lang.String)
+     *
+     * @since 1.7
+     */
+    public ZipFile(String name, Charset charset) throws IOException
+    {
+        this(new File(name), OPEN_READ, charset);
+    }
 
     /**
      * Opens a ZIP file for reading given the specified File object.
      * @param file the ZIP file to be opened for reading
-     * @throws ZipException if a ZIP error has occurred
+     * @param charset
+     *        The {@link java.nio.charset.Charset {@code charset}} to be
+     *        used to decode the ZIP entry name and comment (ignored if
+     *        the <a href="package-summary.html#lang_encoding"> language
+     *        encoding bit</a> of the ZIP entry's general purpose bit
+     *        flag is set).
+     *
+     * @throws ZipException if a ZIP format error has occurred
      * @throws IOException if an I/O error has occurred
+     *
+     * @since 1.7
      */
-    public ZipFile(File file) throws ZipException, IOException {
-        this(file, OPEN_READ);
+    public ZipFile(File file, Charset charset) throws IOException
+    {
+        this(file, OPEN_READ, charset);
     }
 
     /**
@@ -163,9 +261,9 @@
         long jzentry = 0;
         synchronized (this) {
             ensureOpen();
-            jzentry = getEntry(jzfile, name, true);
+            jzentry = getEntry(jzfile, zc.getBytes(name), true);
             if (jzentry != 0) {
-                ZipEntry ze = new ZipEntry(name, jzentry);
+                ZipEntry ze = getZipEntry(name, jzentry);
                 freeEntry(jzfile, jzentry);
                 return ze;
             }
@@ -173,7 +271,7 @@
         return null;
     }
 
-    private static native long getEntry(long jzfile, String name,
+    private static native long getEntry(long jzfile, byte[] name,
                                         boolean addSlash);
 
     // freeEntry releases the C jzentry struct.
@@ -194,36 +292,30 @@
      * @throws IllegalStateException if the zip file has been closed
      */
     public InputStream getInputStream(ZipEntry entry) throws IOException {
-        return getInputStream(entry.name);
-    }
-
-    /**
-     * Returns an input stream for reading the contents of the specified
-     * entry, or null if the entry was not found.
-     */
-    private InputStream getInputStream(String name) throws IOException {
-        if (name == null) {
-            throw new NullPointerException("name");
+        if (entry == null) {
+            throw new NullPointerException("entry");
         }
         long jzentry = 0;
         ZipFileInputStream in = null;
         synchronized (this) {
             ensureOpen();
-            jzentry = getEntry(jzfile, name, false);
+            if (!zc.isUTF8() && (entry.flag & EFS) != 0) {
+                jzentry = getEntry(jzfile, zc.getBytesUTF8(entry.name), false);
+            } else {
+                jzentry = getEntry(jzfile, zc.getBytes(entry.name), false);
+            }
             if (jzentry == 0) {
                 return null;
             }
-
             in = new ZipFileInputStream(jzentry);
-
         }
         final ZipFileInputStream zfin = in;
-        switch (getMethod(jzentry)) {
+        switch (getEntryMethod(jzentry)) {
         case STORED:
             return zfin;
         case DEFLATED:
             // MORE: Compute good size for inflater stream:
-            long size = getSize(jzentry) + 2; // Inflater likes a bit of slack
+            long size = getEntrySize(jzentry) + 2; // Inflater likes a bit of slack
             if (size > 65536) size = 8192;
             if (size <= 0) size = 4096;
             return new InflaterInputStream(zfin, getInflater(), (int)size) {
@@ -267,8 +359,6 @@
         }
     }
 
-    private static native int getMethod(long jzentry);
-
     /*
      * Gets an inflater from the list of available inflaters or allocates
      * a new one.
@@ -343,7 +433,7 @@
                                                ",\n message = " + message
                                 );
                         }
-                        ZipEntry ze = new ZipEntry(jzentry);
+                        ZipEntry ze = getZipEntry(null, jzentry);
                         freeEntry(jzfile, jzentry);
                         return ze;
                     }
@@ -351,6 +441,38 @@
             };
     }
 
+    private ZipEntry getZipEntry(String name, long jzentry) {
+        ZipEntry e = new ZipEntry();
+        e.flag = getEntryFlag(jzentry);  // get the flag first
+        if (name != null) {
+            e.name = name;
+        } else {
+            byte[] bname = getEntryBytes(jzentry, JZENTRY_NAME);
+            if (!zc.isUTF8() && (e.flag & EFS) != 0) {
+                e.name = zc.toStringUTF8(bname, bname.length);
+            } else {
+                e.name = zc.toString(bname, bname.length);
+            }
+        }
+        e.time = getEntryTime(jzentry);
+        e.crc = getEntryCrc(jzentry);
+        e.size = getEntrySize(jzentry);
+        e. csize = getEntryCSize(jzentry);
+        e.method = getEntryMethod(jzentry);
+        e.extra = getEntryBytes(jzentry, JZENTRY_EXTRA);
+        byte[] bcomm = getEntryBytes(jzentry, JZENTRY_COMMENT);
+        if (bcomm == null) {
+            e.comment = null;
+        } else {
+            if (!zc.isUTF8() && (e.flag & EFS) != 0) {
+                e.comment = zc.toStringUTF8(bcomm, bcomm.length);
+            } else {
+                e.comment = zc.toString(bcomm, bcomm.length);
+            }
+        }
+        return e;
+    }
+
     private static native long getNextEntry(long jzfile, int i);
 
     /**
@@ -443,8 +565,8 @@
 
         ZipFileInputStream(long jzentry) {
             pos = 0;
-            rem = getCSize(jzentry);
-            size = getSize(jzentry);
+            rem = getEntryCSize(jzentry);
+            size = getEntrySize(jzentry);
             this.jzentry = jzentry;
         }
 
@@ -514,13 +636,25 @@
 
     }
 
+
+    private static native long open(String name, int mode, long lastModified)
+        throws IOException;
+    private static native int getTotal(long jzfile);
     private static native int read(long jzfile, long jzentry,
                                    long pos, byte[] b, int off, int len);
 
-    private static native long getCSize(long jzentry);
+    // access to the native zentry object
+    private static native long getEntryTime(long jzentry);
+    private static native long getEntryCrc(long jzentry);
+    private static native long getEntryCSize(long jzentry);
+    private static native long getEntrySize(long jzentry);
+    private static native int getEntryMethod(long jzentry);
+    private static native int getEntryFlag(long jzentry);
 
-    private static native long getSize(long jzentry);
+    private static final int JZENTRY_NAME = 0;
+    private static final int JZENTRY_EXTRA = 1;
+    private static final int JZENTRY_COMMENT = 2;
+    private static native byte[] getEntryBytes(long jzentry, int type);
 
-    // Temporary add on for bug troubleshooting
     private static native String getZipMessage(long jzfile);
 }
--- a/jdk/src/share/classes/java/util/zip/ZipInputStream.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipInputStream.java	Wed Jul 05 16:52:18 2017 +0200
@@ -29,6 +29,7 @@
 import java.io.IOException;
 import java.io.EOFException;
 import java.io.PushbackInputStream;
+import java.nio.charset.Charset;
 import static java.util.zip.ZipConstants64.*;
 
 /**
@@ -54,6 +55,8 @@
     // one entry
     private boolean entryEOF = false;
 
+    private ZipCoder zc;
+
     /**
      * Check to make sure that this stream has not been closed
      */
@@ -65,14 +68,39 @@
 
     /**
      * Creates a new ZIP input stream.
+     *
+     * <p>The UTF-8 {@link java.nio.charset.Charset charset} is used to
+     * decode the entry names.
+     *
      * @param in the actual input stream
      */
     public ZipInputStream(InputStream in) {
+        this(in, Charset.forName("UTF-8"));
+    }
+
+    /**
+     * Creates a new ZIP input stream.
+     *
+     * @param in the actual input stream
+     *
+     * @param charset
+     *        The {@link java.nio.charset.Charset {@code charset}} to be
+     *        used to decode the ZIP entry name (ignored if the
+     *        <a href="package-summary.html#lang_encoding"> language
+     *        encoding bit</a> of the ZIP entry's general purpose bit
+     *        flag is set).
+     *
+     * @since 1.7
+     */
+    public ZipInputStream(InputStream in, Charset charset) {
         super(new PushbackInputStream(in, 512), new Inflater(true), 512);
         usesDefaultInflater = true;
         if(in == null) {
             throw new NullPointerException("in is null");
         }
+        if (charset == null)
+            throw new NullPointerException("charset is null");
+        this.zc = ZipCoder.get(charset);
     }
 
     /**
@@ -141,8 +169,8 @@
      * @param len the maximum number of bytes read
      * @return the actual number of bytes read, or -1 if the end of the
      *         entry is reached
-     * @exception  NullPointerException If <code>b</code> is <code>null</code>.
-     * @exception  IndexOutOfBoundsException If <code>off</code> is negative,
+     * @exception  NullPointerException if <code>b</code> is <code>null</code>.
+     * @exception  IndexOutOfBoundsException if <code>off</code> is negative,
      * <code>len</code> is negative, or <code>len</code> is greater than
      * <code>b.length - off</code>
      * @exception ZipException if a ZIP file error has occurred
@@ -252,6 +280,8 @@
         if (get32(tmpbuf, 0) != LOCSIG) {
             return null;
         }
+        // get flag first, we need check EFS.
+        flag = get16(tmpbuf, LOCFLG);
         // get the entry name and create the ZipEntry first
         int len = get16(tmpbuf, LOCNAM);
         int blen = b.length;
@@ -262,9 +292,11 @@
             b = new byte[blen];
         }
         readFully(b, 0, len);
-        ZipEntry e = createZipEntry(getUTF8String(b, 0, len));
+        // Force to use UTF-8 if the EFS bit is ON, even the cs is NOT UTF-8
+        ZipEntry e = createZipEntry(((flag & EFS) != 0)
+                                    ? zc.toStringUTF8(b, len)
+                                    : zc.toString(b, len));
         // now get the remaining fields for the entry
-        flag = get16(tmpbuf, LOCFLG);
         if ((flag & 1) == 1) {
             throw new ZipException("encrypted ZIP entry not supported");
         }
@@ -313,71 +345,6 @@
         return e;
     }
 
-    /*
-     * Fetches a UTF8-encoded String from the specified byte array.
-     */
-    private static String getUTF8String(byte[] b, int off, int len) {
-        // First, count the number of characters in the sequence
-        int count = 0;
-        int max = off + len;
-        int i = off;
-        while (i < max) {
-            int c = b[i++] & 0xff;
-            switch (c >> 4) {
-            case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
-                // 0xxxxxxx
-                count++;
-                break;
-            case 12: case 13:
-                // 110xxxxx 10xxxxxx
-                if ((b[i++] & 0xc0) != 0x80) {
-                    throw new IllegalArgumentException();
-                }
-                count++;
-                break;
-            case 14:
-                // 1110xxxx 10xxxxxx 10xxxxxx
-                if (((b[i++] & 0xc0) != 0x80) ||
-                    ((b[i++] & 0xc0) != 0x80)) {
-                    throw new IllegalArgumentException();
-                }
-                count++;
-                break;
-            default:
-                // 10xxxxxx, 1111xxxx
-                throw new IllegalArgumentException();
-            }
-        }
-        if (i != max) {
-            throw new IllegalArgumentException();
-        }
-        // Now decode the characters...
-        char[] cs = new char[count];
-        i = 0;
-        while (off < max) {
-            int c = b[off++] & 0xff;
-            switch (c >> 4) {
-            case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
-                // 0xxxxxxx
-                cs[i++] = (char)c;
-                break;
-            case 12: case 13:
-                // 110xxxxx 10xxxxxx
-                cs[i++] = (char)(((c & 0x1f) << 6) | (b[off++] & 0x3f));
-                break;
-            case 14:
-                // 1110xxxx 10xxxxxx 10xxxxxx
-                int t = (b[off++] & 0x3f) << 6;
-                cs[i++] = (char)(((c & 0x0f) << 12) | t | (b[off++] & 0x3f));
-                break;
-            default:
-                // 10xxxxxx, 1111xxxx
-                throw new IllegalArgumentException();
-            }
-        }
-        return new String(cs, 0, count);
-    }
-
     /**
      * Creates a new <code>ZipEntry</code> object for the specified
      * entry name.
--- a/jdk/src/share/classes/java/util/zip/ZipOutputStream.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipOutputStream.java	Wed Jul 05 16:52:18 2017 +0200
@@ -27,6 +27,7 @@
 
 import java.io.OutputStream;
 import java.io.IOException;
+import java.nio.charset.Charset;
 import java.util.Vector;
 import java.util.HashSet;
 import static java.util.zip.ZipConstants64.*;
@@ -44,19 +45,9 @@
     private static class XEntry {
         public final ZipEntry entry;
         public final long offset;
-        public final int flag;
         public XEntry(ZipEntry entry, long offset) {
             this.entry = entry;
             this.offset = offset;
-            this.flag = (entry.method == DEFLATED &&
-                         (entry.size  == -1 ||
-                          entry.csize == -1 ||
-                          entry.crc   == -1))
-                // store size, compressed size, and crc-32 in data descriptor
-                // immediately following the compressed entry data
-                ? 8
-                // store size, compressed size, and crc-32 in LOC header
-                : 0;
         }
     }
 
@@ -66,12 +57,14 @@
     private CRC32 crc = new CRC32();
     private long written = 0;
     private long locoff = 0;
-    private String comment;
+    private byte[] comment;
     private int method = DEFLATED;
     private boolean finished;
 
     private boolean closed = false;
 
+    private final ZipCoder zc;
+
     private static int version(ZipEntry e) throws ZipException {
         switch (e.method) {
         case DEFLATED: return 20;
@@ -100,10 +93,31 @@
 
     /**
      * Creates a new ZIP output stream.
+     *
+     * <p>The UTF-8 {@link java.nio.charset.Charset charset} is used
+     * to encode the entry names and comments.
+     *
      * @param out the actual output stream
      */
     public ZipOutputStream(OutputStream out) {
+        this(out, Charset.forName("UTF-8"));
+    }
+
+    /**
+     * Creates a new ZIP output stream.
+     *
+     * @param out the actual output stream
+     *
+     * @param charset the {@link java.nio.charset.Charset </code>charset<code>}
+     *                to be used to encode the entry names and comments
+     *
+     * @since 1.7
+     */
+    public ZipOutputStream(OutputStream out, Charset charset) {
         super(out, new Deflater(Deflater.DEFAULT_COMPRESSION, true));
+        if (charset == null)
+            throw new NullPointerException("charset is null");
+        this.zc = ZipCoder.get(charset);
         usesDefaultDeflater = true;
     }
 
@@ -114,11 +128,11 @@
      *            ZIP file comment is greater than 0xFFFF bytes
      */
     public void setComment(String comment) {
-        if (comment != null && comment.length() > 0xffff/3
-                                           && getUTF8Length(comment) > 0xffff) {
-            throw new IllegalArgumentException("ZIP file comment too long.");
+        if (comment != null) {
+            this.comment = zc.getBytes(comment);
+            if (this.comment.length > 0xffff)
+                throw new IllegalArgumentException("ZIP file comment too long.");
         }
-        this.comment = comment;
     }
 
     /**
@@ -167,8 +181,15 @@
         if (e.method == -1) {
             e.method = method;  // use default method
         }
+        // store size, compressed size, and crc-32 in LOC header
+        e.flag = 0;
         switch (e.method) {
         case DEFLATED:
+            // store size, compressed size, and crc-32 in data descriptor
+            // immediately following the compressed entry data
+            if (e.size  == -1 || e.csize == -1 || e.crc   == -1)
+                e.flag = 8;
+
             break;
         case STORED:
             // compressed size, uncompressed size, and crc-32 must all be
@@ -192,6 +213,8 @@
         if (! names.add(e.name)) {
             throw new ZipException("duplicate entry: " + e.name);
         }
+        if (zc.isUTF8())
+            e.flag |= EFS;
         current = new XEntry(e, written);
         xentries.add(current);
         writeLOC(current);
@@ -213,7 +236,7 @@
                 while (!def.finished()) {
                     deflate();
                 }
-                if ((current.flag & 8) == 0) {
+                if ((e.flag & 8) == 0) {
                     // verify size, compressed size, and crc-32 settings
                     if (e.size != def.getBytesRead()) {
                         throw new ZipException(
@@ -343,11 +366,11 @@
      */
     private void writeLOC(XEntry xentry) throws IOException {
         ZipEntry e = xentry.entry;
-        int flag = xentry.flag;
+        int flag = e.flag;
         int elen = (e.extra != null) ? e.extra.length : 0;
         boolean hasZip64 = false;
 
-        writeInt(LOCSIG);           // LOC header signature
+        writeInt(LOCSIG);               // LOC header signature
 
         if ((flag & 8) == 8) {
             writeShort(version(e));     // version needed to extract
@@ -380,7 +403,7 @@
                 writeInt(e.size);   // uncompressed size
             }
         }
-        byte[] nameBytes = getUTF8Bytes(e.name);
+        byte[] nameBytes = zc.getBytes(e.name);
         writeShort(nameBytes.length);
         writeShort(elen);
         writeBytes(nameBytes, 0, nameBytes.length);
@@ -417,7 +440,7 @@
      */
     private void writeCEN(XEntry xentry) throws IOException {
         ZipEntry e  = xentry.entry;
-        int flag = xentry.flag;
+        int flag = e.flag;
         int version = version(e);
 
         long csize = e.csize;
@@ -454,7 +477,7 @@
         writeInt(e.crc);            // crc-32
         writeInt(csize);            // compressed size
         writeInt(size);             // uncompressed size
-        byte[] nameBytes = getUTF8Bytes(e.name);
+        byte[] nameBytes = zc.getBytes(e.name);
         writeShort(nameBytes.length);
         if (hasZip64) {
             // + headid(2) + datasize(2)
@@ -464,8 +487,8 @@
         }
         byte[] commentBytes;
         if (e.comment != null) {
-            commentBytes = getUTF8Bytes(e.comment);
-            writeShort(commentBytes.length);
+            commentBytes = zc.getBytes(e.comment);
+            writeShort(Math.min(commentBytes.length, 0xffff));
         } else {
             commentBytes = null;
             writeShort(0);
@@ -489,7 +512,7 @@
             writeBytes(e.extra, 0, e.extra.length);
         }
         if (commentBytes != null) {
-            writeBytes(commentBytes, 0, commentBytes.length);
+            writeBytes(commentBytes, 0, Math.min(commentBytes.length, 0xffff));
         }
     }
 
@@ -541,9 +564,8 @@
         writeInt(xlen);                   // length of central directory
         writeInt(xoff);                   // offset of central directory
         if (comment != null) {            // zip file comment
-            byte[] b = getUTF8Bytes(comment);
-            writeShort(b.length);
-            writeBytes(b, 0, b.length);
+            writeShort(comment.length);
+            writeBytes(comment, 0, comment.length);
         } else {
             writeShort(0);
         }
@@ -594,60 +616,4 @@
         super.out.write(b, off, len);
         written += len;
     }
-
-    /*
-     * Returns the length of String's UTF8 encoding.
-     */
-    static int getUTF8Length(String s) {
-        int count = 0;
-        for (int i = 0; i < s.length(); i++) {
-            char ch = s.charAt(i);
-            if (ch <= 0x7f) {
-                count++;
-            } else if (ch <= 0x7ff) {
-                count += 2;
-            } else {
-                count += 3;
-            }
-        }
-        return count;
-    }
-
-    /*
-     * Returns an array of bytes representing the UTF8 encoding
-     * of the specified String.
-     */
-    private static byte[] getUTF8Bytes(String s) {
-        char[] c = s.toCharArray();
-        int len = c.length;
-        // Count the number of encoded bytes...
-        int count = 0;
-        for (int i = 0; i < len; i++) {
-            int ch = c[i];
-            if (ch <= 0x7f) {
-                count++;
-            } else if (ch <= 0x7ff) {
-                count += 2;
-            } else {
-                count += 3;
-            }
-        }
-        // Now return the encoded bytes...
-        byte[] b = new byte[count];
-        int off = 0;
-        for (int i = 0; i < len; i++) {
-            int ch = c[i];
-            if (ch <= 0x7f) {
-                b[off++] = (byte)ch;
-            } else if (ch <= 0x7ff) {
-                b[off++] = (byte)((ch >> 6) | 0xc0);
-                b[off++] = (byte)((ch & 0x3f) | 0x80);
-            } else {
-                b[off++] = (byte)((ch >> 12) | 0xe0);
-                b[off++] = (byte)(((ch >> 6) & 0x3f) | 0x80);
-                b[off++] = (byte)((ch & 0x3f) | 0x80);
-            }
-        }
-        return b;
-    }
 }
--- a/jdk/src/share/classes/java/util/zip/package.html	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/java/util/zip/package.html	Wed Jul 05 16:52:18 2017 +0200
@@ -53,6 +53,11 @@
       PKWARE ZIP File Format Specification</a>. The ZIP64(tm) format extensions
       are used to overcome the size limitations of the original ZIP format.
 <p>
+  <a name="lang_encoding">
+  <li>APPENDIX D of <a href="http://www.pkware.com/documents/casestudies/APPNOTE.TXT">
+      PKWARE ZIP File Format Specification</a> - Language Encoding Flag (EFS) to
+      encode ZIP entry filename and comment fields using UTF-8.
+<p>
   <li><a href="http://www.isi.edu/in-notes/rfc1950.txt">
       ZLIB Compressed Data Format Specification version 3.3</a>
       &nbsp;
--- a/jdk/src/share/classes/javax/management/monitor/CounterMonitor.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/management/monitor/CounterMonitor.java	Wed Jul 05 16:52:18 2017 +0200
@@ -599,7 +599,7 @@
      */
     @Override
     public MBeanNotificationInfo[] getNotificationInfo() {
-        return notifsInfo;
+        return notifsInfo.clone();
     }
 
     /*
--- a/jdk/src/share/classes/javax/management/monitor/GaugeMonitor.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/management/monitor/GaugeMonitor.java	Wed Jul 05 16:52:18 2017 +0200
@@ -481,7 +481,7 @@
      */
     @Override
     public MBeanNotificationInfo[] getNotificationInfo() {
-        return notifsInfo;
+        return notifsInfo.clone();
     }
 
     /*
--- a/jdk/src/share/classes/javax/management/monitor/Monitor.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/management/monitor/Monitor.java	Wed Jul 05 16:52:18 2017 +0200
@@ -32,7 +32,10 @@
 import java.security.AccessControlContext;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
+import java.security.ProtectionDomain;
 import java.util.List;
+import java.util.Map;
+import java.util.WeakHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
@@ -163,7 +166,10 @@
     /**
      * AccessControlContext of the Monitor.start() caller.
      */
-    private AccessControlContext acc;
+    private static final AccessControlContext noPermissionsACC =
+            new AccessControlContext(
+            new ProtectionDomain[] {new ProtectionDomain(null, null)});
+    private volatile AccessControlContext acc = noPermissionsACC;
 
     /**
      * Scheduler Service.
@@ -173,14 +179,20 @@
             new DaemonThreadFactory("Scheduler"));
 
     /**
+     * Map containing the thread pool executor per thread group.
+     */
+    private static final Map<ThreadPoolExecutor, Void> executors =
+            new WeakHashMap<ThreadPoolExecutor, Void>();
+
+    /**
+     * Lock for executors map.
+     */
+    private static final Object executorsLock = new Object();
+
+    /**
      * Maximum Pool Size
      */
     private static final int maximumPoolSize;
-
-    /**
-     * Executor Service.
-     */
-    private static final ThreadPoolExecutor executor;
     static {
         final String maximumPoolSizeSysProp = "jmx.x.monitor.maximum.pool.size";
         final String maximumPoolSizeStr = AccessController.doPrivileged(
@@ -210,22 +222,9 @@
                 maximumPoolSize = maximumPoolSizeTmp;
             }
         }
-        executor = new ThreadPoolExecutor(
-                maximumPoolSize,
-                maximumPoolSize,
-                60L,
-                TimeUnit.SECONDS,
-                new LinkedBlockingQueue<Runnable>(),
-                new DaemonThreadFactory("Executor"));
-        executor.allowCoreThreadTimeOut(true);
     }
 
     /**
-     * Monitor task to be executed by the Executor Service.
-     */
-    private final MonitorTask monitorTask = new MonitorTask();
-
-    /**
      * Future associated to the current monitor task.
      */
     private Future<?> monitorFuture;
@@ -233,7 +232,7 @@
     /**
      * Scheduler task to be executed by the Scheduler Service.
      */
-    private final SchedulerTask schedulerTask = new SchedulerTask(monitorTask);
+    private final SchedulerTask schedulerTask = new SchedulerTask();
 
     /**
      * ScheduledFuture associated to the current scheduler task.
@@ -719,6 +718,7 @@
             // Start the scheduler.
             //
             cleanupFutures();
+            schedulerTask.setMonitorTask(new MonitorTask());
             schedulerFuture = scheduler.schedule(schedulerTask,
                                                  getGranularityPeriod(),
                                                  TimeUnit.MILLISECONDS);
@@ -748,7 +748,7 @@
 
             // Reset the AccessControlContext.
             //
-            acc = null;
+            acc = noPermissionsACC;
 
             // Reset the complex type attribute information
             // such that it is recalculated again.
@@ -1467,7 +1467,7 @@
      */
     private class SchedulerTask implements Runnable {
 
-        private Runnable task = null;
+        private MonitorTask task;
 
         /*
          * ------------------------------------------
@@ -1475,7 +1475,16 @@
          * ------------------------------------------
          */
 
-        public SchedulerTask(Runnable task) {
+        public SchedulerTask() {
+        }
+
+        /*
+         * ------------------------------------------
+         *  GETTERS/SETTERS
+         * ------------------------------------------
+         */
+
+        public void setMonitorTask(MonitorTask task) {
             this.task = task;
         }
 
@@ -1487,7 +1496,7 @@
 
         public void run() {
             synchronized (Monitor.this) {
-                Monitor.this.monitorFuture = executor.submit(task);
+                Monitor.this.monitorFuture = task.submit();
             }
         }
     }
@@ -1500,6 +1509,8 @@
      */
     private class MonitorTask implements Runnable {
 
+        private ThreadPoolExecutor executor;
+
         /*
          * ------------------------------------------
          *  CONSTRUCTORS
@@ -1507,6 +1518,38 @@
          */
 
         public MonitorTask() {
+            // Find out if there's already an existing executor for the calling
+            // thread and reuse it. Otherwise, create a new one and store it in
+            // the executors map. If there is a SecurityManager, the group of
+            // System.getSecurityManager() is used, else the group of the thread
+            // instantiating this MonitorTask, i.e. the group of the thread that
+            // calls "Monitor.start()".
+            SecurityManager s = System.getSecurityManager();
+            ThreadGroup group = (s != null) ? s.getThreadGroup() :
+                Thread.currentThread().getThreadGroup();
+            synchronized (executorsLock) {
+                for (ThreadPoolExecutor e : executors.keySet()) {
+                    DaemonThreadFactory tf =
+                            (DaemonThreadFactory) e.getThreadFactory();
+                    ThreadGroup tg = tf.getThreadGroup();
+                    if (tg == group) {
+                        executor = e;
+                        break;
+                    }
+                }
+                if (executor == null) {
+                    executor = new ThreadPoolExecutor(
+                            maximumPoolSize,
+                            maximumPoolSize,
+                            60L,
+                            TimeUnit.SECONDS,
+                            new LinkedBlockingQueue<Runnable>(),
+                            new DaemonThreadFactory("ThreadGroup<" +
+                            group.getName() + "> Executor", group));
+                    executor.allowCoreThreadTimeOut(true);
+                    executors.put(executor, null);
+                }
+            }
         }
 
         /*
@@ -1515,12 +1558,18 @@
          * ------------------------------------------
          */
 
+        public Future<?> submit() {
+            return executor.submit(this);
+        }
+
         public void run() {
             final ScheduledFuture<?> sf;
+            final AccessControlContext ac;
             synchronized (Monitor.this) {
                 sf = Monitor.this.schedulerFuture;
+                ac = Monitor.this.acc;
             }
-            AccessController.doPrivileged(new PrivilegedAction<Void>() {
+            PrivilegedAction<Void> action = new PrivilegedAction<Void>() {
                 public Void run() {
                     if (Monitor.this.isActive()) {
                         final int an[] = alreadyNotifieds;
@@ -1533,7 +1582,11 @@
                     }
                     return null;
                 }
-            }, Monitor.this.acc);
+            };
+            if (ac == null) {
+                throw new SecurityException("AccessControlContext cannot be null");
+            }
+            AccessController.doPrivileged(action, ac);
             synchronized (Monitor.this) {
                 if (Monitor.this.isActive() &&
                     Monitor.this.schedulerFuture == sf) {
@@ -1573,6 +1626,15 @@
             namePrefix = "JMX Monitor " + poolName + " Pool [Thread-";
         }
 
+        public DaemonThreadFactory(String poolName, ThreadGroup threadGroup) {
+            group = threadGroup;
+            namePrefix = "JMX Monitor " + poolName + " Pool [Thread-";
+        }
+
+        public ThreadGroup getThreadGroup() {
+            return group;
+        }
+
         public Thread newThread(Runnable r) {
             Thread t = new Thread(group,
                                   r,
--- a/jdk/src/share/classes/javax/management/monitor/StringMonitor.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/management/monitor/StringMonitor.java	Wed Jul 05 16:52:18 2017 +0200
@@ -184,6 +184,7 @@
      * @return The derived gauge of the specified object.
      *
      */
+    @Override
     public synchronized String getDerivedGauge(ObjectName object) {
         return (String) super.getDerivedGauge(object);
     }
@@ -199,6 +200,7 @@
      * @return The derived gauge timestamp of the specified object.
      *
      */
+    @Override
     public synchronized long getDerivedGaugeTimeStamp(ObjectName object) {
         return super.getDerivedGaugeTimeStamp(object);
     }
@@ -341,8 +343,9 @@
      * the Java class of the notification and the notification types sent by
      * the string monitor.
      */
+    @Override
     public MBeanNotificationInfo[] getNotificationInfo() {
-        return notifsInfo;
+        return notifsInfo.clone();
     }
 
     /*
--- a/jdk/src/share/classes/javax/print/attribute/standard/MediaSize.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaSize.java	Wed Jul 05 16:52:18 2017 +0200
@@ -123,8 +123,10 @@
         if (x > y) {
             throw new IllegalArgumentException("X dimension > Y dimension");
         }
-        mediaName = media;
-        mediaMap.put(mediaName, this);
+        if (media != null && mediaMap.get(media) == null) {
+            mediaName = media;
+            mediaMap.put(mediaName, this);
+        }
         sizeVector.add(this);
     }
 
@@ -147,8 +149,10 @@
         if (x > y) {
             throw new IllegalArgumentException("X dimension > Y dimension");
         }
-        mediaName = media;
-        mediaMap.put(mediaName, this);
+        if (media != null && mediaMap.get(media) == null) {
+            mediaName = media;
+            mediaMap.put(mediaName, this);
+        }
         sizeVector.add(this);
     }
 
--- a/jdk/src/share/classes/javax/sound/midi/MetaMessage.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/sound/midi/MetaMessage.java	Wed Jul 05 16:52:18 2017 +0200
@@ -102,6 +102,29 @@
         this(defaultMessage);
     }
 
+    /**
+     * Constructs a new {@code MetaMessage} and sets the message parameters.
+     * The contents of the message can be changed by using
+     * the {@code setMessage} method.
+     *
+     * @param type   meta-message type (must be less than 128)
+     * @param data   the data bytes in the MIDI message
+     * @param length an amount of bytes in the {@code data} byte array;
+     *     it should be non-negative and less than or equal to
+     *     {@code data.length}
+     * @throws InvalidMidiDataException if the parameter values do not specify
+     *     a valid MIDI meta message
+     * @see #setMessage(int, byte[], int)
+     * @see #getType()
+     * @see #getData()
+     * @since 1.7
+     */
+    public MetaMessage(int type, byte[] data, int length)
+            throws InvalidMidiDataException {
+        super(null);
+        setMessage(type, data, length); // can throw InvalidMidiDataException
+    }
+
 
     /**
      * Constructs a new <code>MetaMessage</code>.
--- a/jdk/src/share/classes/javax/sound/midi/ShortMessage.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/sound/midi/ShortMessage.java	Wed Jul 05 16:52:18 2017 +0200
@@ -187,6 +187,83 @@
         length = 3;
     }
 
+    /**
+     * Constructs a new {@code ShortMessage} which represents a MIDI
+     * message that takes no data bytes.
+     * The contents of the message can be changed by using one of
+     * the {@code setMessage} methods.
+     *
+     * @param status the MIDI status byte
+     * @throws InvalidMidiDataException if {@code status} does not specify
+     *     a valid MIDI status byte for a message that requires no data bytes
+     * @see #setMessage(int)
+     * @see #setMessage(int, int, int)
+     * @see #setMessage(int, int, int, int)
+     * @see #getStatus()
+     * @since 1.7
+     */
+    public ShortMessage(int status) throws InvalidMidiDataException {
+        super(null);
+        setMessage(status); // can throw InvalidMidiDataException
+    }
+
+    /**
+     * Constructs a new {@code ShortMessage} which represents a MIDI message
+     * that takes up to two data bytes. If the message only takes one data byte,
+     * the second data byte is ignored. If the message does not take
+     * any data bytes, both data bytes are ignored.
+     * The contents of the message can be changed by using one of
+     * the {@code setMessage} methods.
+     *
+     * @param status   the MIDI status byte
+     * @param data1    the first data byte
+     * @param data2    the second data byte
+     * @throws InvalidMidiDataException if the status byte or all data bytes
+     *     belonging to the message do not specify a valid MIDI message
+     * @see #setMessage(int)
+     * @see #setMessage(int, int, int)
+     * @see #setMessage(int, int, int, int)
+     * @see #getStatus()
+     * @see #getData1()
+     * @see #getData2()
+     * @since 1.7
+     */
+    public ShortMessage(int status, int data1, int data2)
+            throws InvalidMidiDataException {
+        super(null);
+        setMessage(status, data1, data2); // can throw InvalidMidiDataException
+    }
+
+    /**
+     * Constructs a new {@code ShortMessage} which represents a channel
+     * MIDI message that takes up to two data bytes. If the message only takes
+     * one data byte, the second data byte is ignored. If the message does not
+     * take any data bytes, both data bytes are ignored.
+     * The contents of the message can be changed by using one of
+     * the {@code setMessage} methods.
+     *
+     * @param command  the MIDI command represented by this message
+     * @param channel  the channel associated with the message
+     * @param data1    the first data byte
+     * @param data2    the second data byte
+     * @throws InvalidMidiDataException if the command value, channel value
+     *     or all data bytes belonging to the message do not specify
+     *     a valid MIDI message
+     * @see #setMessage(int)
+     * @see #setMessage(int, int, int)
+     * @see #setMessage(int, int, int, int)
+     * @see #getCommand()
+     * @see #getChannel()
+     * @see #getData1()
+     * @see #getData2()
+     * @since 1.7
+     */
+    public ShortMessage(int command, int channel, int data1, int data2)
+            throws InvalidMidiDataException {
+        super(null);
+        setMessage(command, channel, data1, data2);
+    }
+
 
     /**
      * Constructs a new <code>ShortMessage</code>.
--- a/jdk/src/share/classes/javax/sound/midi/SysexMessage.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/sound/midi/SysexMessage.java	Wed Jul 05 16:52:18 2017 +0200
@@ -120,6 +120,54 @@
         data[1] = (byte) (ShortMessage.END_OF_EXCLUSIVE & 0xFF);
     }
 
+    /**
+     * Constructs a new {@code SysexMessage} and sets the data for
+     * the message. The first byte of the data array must be a valid system
+     * exclusive status byte (0xF0 or 0xF7).
+     * The contents of the message can be changed by using one of
+     * the {@code setMessage} methods.
+     *
+     * @param data the system exclusive message data including the status byte
+     * @param length the length of the valid message data in the array,
+     *     including the status byte; it should be non-negative and less than
+     *     or equal to {@code data.length}
+     * @throws InvalidMidiDataException if the parameter values
+     *     do not specify a valid MIDI meta message.
+     * @see #setMessage(byte[], int)
+     * @see #setMessage(int, byte[], int)
+     * @see #getData()
+     * @since 1.7
+     */
+    public SysexMessage(byte[] data, int length)
+            throws InvalidMidiDataException {
+        super(null);
+        setMessage(data, length);
+    }
+
+    /**
+     * Constructs a new {@code SysexMessage} and sets the data for the message.
+     * The contents of the message can be changed by using one of
+     * the {@code setMessage} methods.
+     *
+     * @param status the status byte for the message; it must be a valid system
+     *     exclusive status byte (0xF0 or 0xF7)
+     * @param data the system exclusive message data (without the status byte)
+     * @param length the length of the valid message data in the array;
+     *     it should be non-negative and less than or equal to
+     *     {@code data.length}
+     * @throws InvalidMidiDataException if the parameter values
+     *     do not specify a valid MIDI meta message.
+     * @see #setMessage(byte[], int)
+     * @see #setMessage(int, byte[], int)
+     * @see #getData()
+     * @since 1.7
+     */
+    public SysexMessage(int status, byte[] data, int length)
+            throws InvalidMidiDataException {
+        super(null);
+        setMessage(status, data, length);
+    }
+
 
     /**
      * Constructs a new <code>SysexMessage</code>.
--- a/jdk/src/share/classes/javax/sound/sampled/FloatControl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/sound/sampled/FloatControl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -131,13 +131,31 @@
      * @param minLabel the label for the minimum value, such as "Left" or "Off"
      * @param midLabel the label for the midpoint value, such as "Center" or "Default"
      * @param maxLabel the label for the maximum value, such as "Right" or "Full"
+     *
+     * @throws IllegalArgumentException if {@code minimum} is greater
+     *     than {@code maximum} or {@code initialValue} does not fall
+     *     within the allowable range
      */
     protected FloatControl(Type type, float minimum, float maximum,
-                           float precision, int updatePeriod, float initialValue,
-                           String units, String minLabel, String midLabel, String maxLabel) {
+            float precision, int updatePeriod, float initialValue,
+            String units, String minLabel, String midLabel, String maxLabel) {
 
         super(type);
 
+        if (minimum > maximum) {
+            throw new IllegalArgumentException("Minimum value " + minimum
+                    + " exceeds maximum value " + maximum + ".");
+        }
+        if (initialValue < minimum) {
+            throw new IllegalArgumentException("Initial value " + initialValue
+                    + " smaller than allowable minimum value " + minimum + ".");
+        }
+        if (initialValue > maximum) {
+            throw new IllegalArgumentException("Initial value " + initialValue
+                    + " exceeds allowable maximum value " + maximum + ".");
+        }
+
+
         this.minimum = minimum;
         this.maximum = maximum;
 
@@ -167,10 +185,15 @@
      * @param initialValue the value that the control starts with when constructed
      * @param units the label for the units in which the control's values are expressed,
      * such as "dB" or "frames per second"
+     *
+     * @throws IllegalArgumentException if {@code minimum} is greater
+     *     than {@code maximum} or {@code initialValue} does not fall
+     *     within the allowable range
      */
     protected FloatControl(Type type, float minimum, float maximum,
-                           float precision, int updatePeriod, float initialValue, String units) {
-        this(type, minimum, maximum, precision, updatePeriod, initialValue, units, "", "", "");
+            float precision, int updatePeriod, float initialValue, String units) {
+        this(type, minimum, maximum, precision, updatePeriod,
+                initialValue, units, "", "", "");
     }
 
 
@@ -306,9 +329,21 @@
      * @param to final value after the shift
      * @param microseconds maximum duration of the shift in microseconds
      *
+     * @throws IllegalArgumentException if either {@code from} or {@code to}
+     *     value does not fall within the allowable range
+     *
      * @see #getUpdatePeriod
      */
     public void shift(float from, float to, int microseconds) {
+        // test "from" value, "to" value will be tested by setValue()
+        if (from < minimum) {
+            throw new IllegalArgumentException("Requested value " + from
+                    + " smaller than allowable minimum value " + minimum + ".");
+        }
+        if (from > maximum) {
+            throw new IllegalArgumentException("Requested value " + from
+                    + " exceeds allowable maximum value " + maximum + ".");
+        }
         setValue(to);
     }
 
--- a/jdk/src/share/classes/javax/sound/sampled/spi/MixerProvider.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/sound/sampled/spi/MixerProvider.java	Wed Jul 05 16:52:18 2017 +0200
@@ -42,9 +42,15 @@
     /**
      * Indicates whether the mixer provider supports the mixer represented by
      * the specified mixer info object.
+     * <p>
+     * The full set of mixer info objects that represent the mixers supported
+     * by this {@code MixerProvider} may be obtained
+     * through the {@code getMixerInfo} method.
+     *
      * @param info an info object that describes the mixer for which support is queried
-     * @return <code>true</code> if the specified mixer is supported,
-     * otherwise <code>false</code>
+     * @return {@code true} if the specified mixer is supported,
+     *     otherwise {@code false}
+     * @see #getMixerInfo()
      */
     public boolean isMixerSupported(Mixer.Info info) {
 
@@ -62,17 +68,34 @@
     /**
      * Obtains the set of info objects representing the mixer
      * or mixers provided by this MixerProvider.
-     * @return set of mixer info objects
+     * <p>
+     * The {@code isMixerSupported} method returns {@code true}
+     * for all the info objects returned by this method.
+     * The corresponding mixer instances for the info objects
+     * are returned by the {@code getMixer} method.
+     *
+     * @return a set of mixer info objects
+     * @see #getMixer(javax.sound.sampled.Mixer.Info) getMixer(Mixer.Info)
+     * @see #isMixerSupported(javax.sound.sampled.Mixer.Info) isMixerSupported(Mixer.Info)
      */
     public abstract Mixer.Info[] getMixerInfo();
 
 
     /**
      * Obtains an instance of the mixer represented by the info object.
+     * <p>
+     * The full set of the mixer info objects that represent the mixers
+     * supported by this {@code MixerProvider} may be obtained
+     * through the {@code getMixerInfo} method.
+     * Use the {@code isMixerSupported} method to test whether
+     * this {@code MixerProvider} supports a particular mixer.
+     *
      * @param info an info object that describes the desired mixer
      * @return mixer instance
      * @throws IllegalArgumentException if the info object specified does not
-     * match the info object for a mixer supported by this MixerProvider.
+     *     match the info object for a mixer supported by this MixerProvider.
+     * @see #getMixerInfo()
+     * @see #isMixerSupported(javax.sound.sampled.Mixer.Info) isMixerSupported(Mixer.Info)
      */
     public abstract Mixer getMixer(Mixer.Info info);
 }
--- a/jdk/src/share/classes/javax/swing/DefaultCellEditor.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/DefaultCellEditor.java	Wed Jul 05 16:52:18 2017 +0200
@@ -266,6 +266,26 @@
                                                  boolean isSelected,
                                                  int row, int column) {
         delegate.setValue(value);
+        if (editorComponent instanceof JCheckBox) {
+            //in order to avoid a "flashing" effect when clicking a checkbox
+            //in a table, it is important for the editor to have as a border
+            //the same border that the renderer has, and have as the background
+            //the same color as the renderer has. This is primarily only
+            //needed for JCheckBox since this editor doesn't fill all the
+            //visual space of the table cell, unlike a text field.
+            TableCellRenderer renderer = table.getCellRenderer(row, column);
+            Component c = renderer.getTableCellRendererComponent(table, value,
+                    isSelected, true, row, column);
+            if (c != null) {
+                editorComponent.setOpaque(true);
+                editorComponent.setBackground(c.getBackground());
+                if (c instanceof JComponent) {
+                    editorComponent.setBorder(((JComponent)c).getBorder());
+                }
+            } else {
+                editorComponent.setOpaque(false);
+            }
+        }
         return editorComponent;
     }
 
--- a/jdk/src/share/classes/javax/swing/DefaultListCellRenderer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/DefaultListCellRenderer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -34,6 +34,7 @@
 import java.awt.Rectangle;
 
 import java.io.Serializable;
+import sun.swing.DefaultLookup;
 
 
 /**
@@ -79,8 +80,9 @@
     * <code>getListCellRendererComponent</code> method and set the border
     * of the returned component directly.
     */
-    protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
     private static final Border SAFE_NO_FOCUS_BORDER = new EmptyBorder(1, 1, 1, 1);
+    private static final Border DEFAULT_NO_FOCUS_BORDER = new EmptyBorder(1, 1, 1, 1);
+    protected static Border noFocusBorder = DEFAULT_NO_FOCUS_BORDER;
 
     /**
      * Constructs a default renderer object for an item
@@ -90,14 +92,21 @@
         super();
         setOpaque(true);
         setBorder(getNoFocusBorder());
+        setName("List.cellRenderer");
     }
 
-
-    private static Border getNoFocusBorder() {
+    private Border getNoFocusBorder() {
+        Border border = DefaultLookup.getBorder(this, ui, "List.cellNoFocusBorder");
         if (System.getSecurityManager() != null) {
+            if (border != null) return border;
             return SAFE_NO_FOCUS_BORDER;
         } else {
-            return UIManager.getBorder("List.noFocusBorder");
+            if (border != null &&
+                    (noFocusBorder == null ||
+                    noFocusBorder == DEFAULT_NO_FOCUS_BORDER)) {
+                return border;
+            }
+            return noFocusBorder;
         }
     }
 
@@ -118,8 +127,8 @@
                 && !dropLocation.isInsert()
                 && dropLocation.getIndex() == index) {
 
-            bg = UIManager.getColor("List.dropCellBackground");
-            fg = UIManager.getColor("List.dropCellForeground");
+            bg = DefaultLookup.getColor(this, ui, "List.dropCellBackground");
+            fg = DefaultLookup.getColor(this, ui, "List.dropCellForeground");
 
             isSelected = true;
         }
@@ -148,10 +157,10 @@
         Border border = null;
         if (cellHasFocus) {
             if (isSelected) {
-                border = UIManager.getBorder("List.focusSelectedCellHighlightBorder");
+                border = DefaultLookup.getBorder(this, ui, "List.focusSelectedCellHighlightBorder");
             }
             if (border == null) {
-                border = UIManager.getBorder("List.focusCellHighlightBorder");
+                border = DefaultLookup.getBorder(this, ui, "List.focusCellHighlightBorder");
             }
         } else {
             border = getNoFocusBorder();
@@ -161,7 +170,6 @@
         return this;
     }
 
-
     /**
      * Overridden for performance reasons.
      * See the <a href="#override">Implementation Note</a>
@@ -172,6 +180,7 @@
      *         and differs from the JList's background;
      *         <code>false</code> otherwise
      */
+    @Override
     public boolean isOpaque() {
         Color back = getBackground();
         Component p = getParent();
@@ -190,6 +199,7 @@
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     public void validate() {}
 
    /**
@@ -199,6 +209,7 @@
     *
     * @since 1.5
     */
+    @Override
     public void invalidate() {}
 
    /**
@@ -208,6 +219,7 @@
     *
     * @since 1.5
     */
+    @Override
     public void repaint() {}
 
    /**
@@ -215,12 +227,14 @@
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     public void revalidate() {}
    /**
     * Overridden for performance reasons.
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     public void repaint(long tm, int x, int y, int width, int height) {}
 
    /**
@@ -228,6 +242,7 @@
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     public void repaint(Rectangle r) {}
 
    /**
@@ -235,6 +250,7 @@
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
         // Strings get interned...
         if (propertyName == "text"
@@ -251,6 +267,7 @@
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     public void firePropertyChange(String propertyName, byte oldValue, byte newValue) {}
 
    /**
@@ -258,6 +275,7 @@
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     public void firePropertyChange(String propertyName, char oldValue, char newValue) {}
 
    /**
@@ -265,6 +283,7 @@
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     public void firePropertyChange(String propertyName, short oldValue, short newValue) {}
 
    /**
@@ -272,6 +291,7 @@
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     public void firePropertyChange(String propertyName, int oldValue, int newValue) {}
 
    /**
@@ -279,6 +299,7 @@
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     public void firePropertyChange(String propertyName, long oldValue, long newValue) {}
 
    /**
@@ -286,6 +307,7 @@
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     public void firePropertyChange(String propertyName, float oldValue, float newValue) {}
 
    /**
@@ -293,6 +315,7 @@
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     public void firePropertyChange(String propertyName, double oldValue, double newValue) {}
 
    /**
@@ -300,6 +323,7 @@
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
+    @Override
     public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {}
 
     /**
@@ -321,5 +345,4 @@
         implements javax.swing.plaf.UIResource
     {
     }
-
 }
--- a/jdk/src/share/classes/javax/swing/JComboBox.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/JComboBox.java	Wed Jul 05 16:52:18 2017 +0200
@@ -34,12 +34,10 @@
 
 import java.io.Serializable;
 import java.io.ObjectOutputStream;
-import java.io.ObjectInputStream;
 import java.io.IOException;
 
 import javax.swing.event.*;
 import javax.swing.plaf.*;
-import javax.swing.border.*;
 
 import javax.accessibility.*;
 
@@ -227,7 +225,7 @@
 
     private void init() {
         installAncestorListener();
-        setOpaque(true);
+        setUIProperty("opaque",true);
         updateUI();
     }
 
--- a/jdk/src/share/classes/javax/swing/JScrollPane.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/JScrollPane.java	Wed Jul 05 16:52:18 2017 +0200
@@ -32,15 +32,12 @@
 
 import java.awt.Component;
 import java.awt.ComponentOrientation;
-import java.awt.Graphics;
 import java.awt.Rectangle;
 import java.awt.Insets;
-import java.awt.Color;
 import java.awt.LayoutManager;
 import java.awt.Point;
 
 import java.io.ObjectOutputStream;
-import java.io.ObjectInputStream;
 import java.io.IOException;
 
 import java.beans.PropertyChangeEvent;
@@ -304,7 +301,7 @@
         if (view != null) {
             setViewportView(view);
         }
-        setOpaque(true);
+        setUIProperty("opaque",true);
         updateUI();
 
         if (!this.getComponentOrientation().isLeftToRight()) {
--- a/jdk/src/share/classes/javax/swing/JSpinner.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/JSpinner.java	Wed Jul 05 16:52:18 2017 +0200
@@ -28,7 +28,6 @@
 import java.awt.*;
 import java.awt.event.*;
 
-import javax.swing.*;
 import javax.swing.event.*;
 import javax.swing.text.*;
 import javax.swing.plaf.SpinnerUI;
@@ -154,7 +153,7 @@
         }
         this.model = model;
         this.editor = createEditor(model);
-        setOpaque(true);
+        setUIProperty("opaque",true);
         updateUI();
     }
 
--- a/jdk/src/share/classes/javax/swing/JSplitPane.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/JSplitPane.java	Wed Jul 05 16:52:18 2017 +0200
@@ -246,7 +246,8 @@
      * layout, using two buttons for the components.
      */
     public JSplitPane() {
-        this(JSplitPane.HORIZONTAL_SPLIT, false,
+        this(JSplitPane.HORIZONTAL_SPLIT,
+            UIManager.getBoolean("SplitPane.continuousLayout"),
             new JButton(UIManager.getString("SplitPane.leftButtonText")),
             new JButton(UIManager.getString("SplitPane.rightButtonText")));
     }
@@ -263,7 +264,8 @@
      */
     @ConstructorProperties({"orientation"})
     public JSplitPane(int newOrientation) {
-        this(newOrientation, false);
+        this(newOrientation,
+            UIManager.getBoolean("SplitPane.continuousLayout"));
     }
 
 
@@ -307,7 +309,9 @@
     public JSplitPane(int newOrientation,
                       Component newLeftComponent,
                       Component newRightComponent){
-        this(newOrientation, false, newLeftComponent, newRightComponent);
+        this(newOrientation,
+            UIManager.getBoolean("SplitPane.continuousLayout"),
+            newLeftComponent, newRightComponent);
     }
 
 
--- a/jdk/src/share/classes/javax/swing/JTable.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/JTable.java	Wed Jul 05 16:52:18 2017 +0200
@@ -731,6 +731,37 @@
                     return;
                 }
                 scrollPane.setColumnHeaderView(getTableHeader());
+                // configure the scrollpane for any LAF dependent settings
+                configureEnclosingScrollPaneUI();
+            }
+        }
+    }
+
+    /**
+     * This is a sub-part of configureEnclosingScrollPane() that configures
+     * anything on the scrollpane that may change when the look and feel
+     * changes. It needed to be split out from configureEnclosingScrollPane() so
+     * that it can be called from updateUI() when the LAF changes without
+     * causing the regression found in bug 6687962. This was because updateUI()
+     * is called from the constructor which then caused
+     * configureEnclosingScrollPane() to be called by the constructor which
+     * changes its contract for any subclass that overrides it. So by splitting
+     * it out in this way configureEnclosingScrollPaneUI() can be called both
+     * from configureEnclosingScrollPane() and updateUI() in a safe manor.
+     */
+    private void configureEnclosingScrollPaneUI() {
+        Container p = getParent();
+        if (p instanceof JViewport) {
+            Container gp = p.getParent();
+            if (gp instanceof JScrollPane) {
+                JScrollPane scrollPane = (JScrollPane)gp;
+                // Make certain we are the viewPort's view and not, for
+                // example, the rowHeaderView of the scrollPane -
+                // an implementor of fixed columns might do this.
+                JViewport viewport = scrollPane.getViewport();
+                if (viewport == null || viewport.getView() != this) {
+                    return;
+                }
                 //  scrollPane.getViewport().setBackingStoreEnabled(true);
                 Border border = scrollPane.getBorder();
                 if (border == null || border instanceof UIResource) {
@@ -740,6 +771,24 @@
                         scrollPane.setBorder(scrollPaneBorder);
                     }
                 }
+                // add JScrollBar corner component if available from LAF and not already set by the user
+                Component corner =
+                        scrollPane.getCorner(JScrollPane.UPPER_TRAILING_CORNER);
+                if (corner == null || corner instanceof UIResource){
+                    corner = null;
+                    Object componentClass = UIManager.get(
+                            "Table.scrollPaneCornerComponent");
+                    if (componentClass instanceof Class){
+                        try {
+                            corner = (Component)
+                                    ((Class)componentClass).newInstance();
+                        } catch (Exception e) {
+                            // just ignore and don't set corner
+                        }
+                    }
+                    scrollPane.setCorner(JScrollPane.UPPER_TRAILING_CORNER,
+                            corner);
+                }
             }
         }
     }
@@ -783,6 +832,13 @@
                     return;
                 }
                 scrollPane.setColumnHeaderView(null);
+                // remove ScrollPane corner if one was added by the LAF
+                Component corner =
+                        scrollPane.getCorner(JScrollPane.UPPER_TRAILING_CORNER);
+                if (corner instanceof UIResource){
+                    scrollPane.setCorner(JScrollPane.UPPER_TRAILING_CORNER,
+                            null);
+                }
             }
         }
     }
@@ -3592,6 +3648,9 @@
             tableHeader.updateUI();
         }
 
+        // Update UI applied to parent ScrollPane
+        configureEnclosingScrollPaneUI();
+
         setUI((TableUI)UIManager.getUI(this));
     }
 
--- a/jdk/src/share/classes/javax/swing/MultiUIDefaults.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/MultiUIDefaults.java	Wed Jul 05 16:52:18 2017 +0200
@@ -26,7 +26,10 @@
 package javax.swing;
 
 import java.util.Enumeration;
+import java.util.HashSet;
 import java.util.Locale;
+import java.util.Map.Entry;
+import java.util.Set;
 
 
 
@@ -48,7 +51,7 @@
         tables = new UIDefaults[0];
     }
 
-
+    @Override
     public Object get(Object key)
     {
         Object value = super.get(key);
@@ -66,7 +69,7 @@
         return null;
     }
 
-
+    @Override
     public Object get(Object key, Locale l)
     {
         Object value = super.get(key,l);
@@ -84,7 +87,7 @@
         return null;
     }
 
-
+    @Override
     public int size() {
         int n = super.size();
         for (UIDefaults table : tables) {
@@ -93,12 +96,12 @@
         return n;
     }
 
-
+    @Override
     public boolean isEmpty() {
         return size() == 0;
     }
 
-
+    @Override
     public Enumeration<Object> keys()
     {
         Enumeration[] enums = new Enumeration[1 + tables.length];
@@ -112,7 +115,7 @@
         return new MultiUIDefaultsEnumerator(enums);
     }
 
-
+    @Override
     public Enumeration<Object> elements()
     {
         Enumeration[] enums = new Enumeration[1 + tables.length];
@@ -126,6 +129,19 @@
         return new MultiUIDefaultsEnumerator(enums);
     }
 
+    @Override
+    public Set<Entry<Object, Object>> entrySet() {
+        Set<Entry<Object, Object>> set = new HashSet<Entry<Object, Object>>();
+        if (tables == null) return set;
+        for (UIDefaults table : tables) {
+            if (table != null) {
+                set.addAll(table.entrySet());
+            }
+        }
+        return set;
+    }
+
+    @Override
     protected void getUIError(String msg) {
         if (tables.length > 0) {
             tables[0].getUIError(msg);
@@ -164,7 +180,7 @@
         }
     }
 
-
+    @Override
     public Object remove(Object key)
     {
         Object value = super.remove(key);
@@ -182,7 +198,7 @@
         return null;
     }
 
-
+    @Override
     public void clear() {
         super.clear();
         for (UIDefaults table : tables) {
@@ -192,6 +208,7 @@
         }
     }
 
+    @Override
     public synchronized String toString() {
         StringBuffer buf = new StringBuffer();
         buf.append("{");
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/Painter.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing;
+
+import java.awt.Graphics2D;
+
+/**
+ * <p>A painting delegate. The Painter interface defines exactly one method,
+ * <code>paint</code>. It is used in situations where the developer can change
+ * the painting routine of a component without having to resort to subclassing
+ * the component. It is also generically useful when doing any form of painting
+ * delegation.</p>
+ *
+ * <p><code>Painter</code>s are simply encapsulations of Java2D code and make
+ * it fairly trivial to reuse existing <code>Painter</code>s or to combine
+ * them together. Implementations of this interface are also trivial to write,
+ * such that if you can't find a <code>Painter</code> that does what you need,
+ * you can write one with minimal effort. Writing a <code>Painter</code> requires
+ * knowledge of Java2D.</p>
+ *
+ * <p>A <code>Painter</code> may be created with a type parameter. This type will be
+ * expected in the <code>paint</code> method. For example, you may wish to write a
+ * <code>Painter</code> that only works with subclasses of {@link java.awt.Component}.
+ * In that case, when the <code>Painter</code> is declared, you may declare that
+ * it requires a <code>Component</code>, allowing the paint method to be type safe. Ex:
+ * <pre><code>
+ *     Painter<Component> p = new Painter<Component>() {
+ *         public void paint(Graphics2D g, Component c, int width, int height) {
+ *             g.setColor(c.getBackground());
+ *             //and so forth
+ *         }
+ *     }
+ * </code></pre></p>
+ *
+ * <p>This interface makes no guarantees of threadsafety.</p>
+ *
+ * @author rbair
+ */
+public interface Painter<T> {
+    /**
+     * <p>Renders to the given {@link java.awt.Graphics2D} object. Implementations
+     * of this method <em>may</em> modify state on the <code>Graphics2D</code>, and are not
+     * required to restore that state upon completion. In most cases, it is recommended
+     * that the caller pass in a scratch graphics object. The <code>Graphics2D</code>
+     * must never be null.</p>
+     *
+     * <p>State on the graphics object may be honored by the <code>paint</code> method,
+     * but may not be. For instance, setting the antialiasing rendering hint on the
+     * graphics may or may not be respected by the <code>Painter</code> implementation.</p>
+     *
+     * <p>The supplied object parameter acts as an optional configuration argument.
+     * For example, it could be of type <code>Component</code>. A <code>Painter</code>
+     * that expected it could then read state from that <code>Component</code> and
+     * use the state for painting. For example, an implementation may read the
+     * backgroundColor and use that.</p>
+     *
+     * <p>Generally, to enhance reusability, most standard <code>Painter</code>s ignore
+     * this parameter. They can thus be reused in any context. The <code>object</code>
+     * may be null. Implementations must not throw a NullPointerException if the object
+     * parameter is null.</p>
+     *
+     * <p>Finally, the <code>width</code> and <code>height</code> arguments specify the
+     * width and height that the <code>Painter</code> should paint into. More
+     * specifically, the specified width and height instruct the painter that it should
+     * paint fully within this width and height. Any specified clip on the
+     * <code>g</code> param will further constrain the region.</p>
+     *
+     * <p>For example, suppose I have a <code>Painter</code> implementation that draws
+     * a gradient. The gradient goes from white to black. It "stretches" to fill the
+     * painted region. Thus, if I use this <code>Painter</code> to paint a 500 x 500
+     * region, the far left would be black, the far right would be white, and a smooth
+     * gradient would be painted between. I could then, without modification, reuse the
+     * <code>Painter</code> to paint a region that is 20x20 in size. This region would
+     * also be black on the left, white on the right, and a smooth gradient painted
+     * between.</p>
+     *
+     * @param g The Graphics2D to render to. This must not be null.
+     * @param object an optional configuration parameter. This may be null.
+     * @param width width of the area to paint.
+     * @param height height of the area to paint.
+     */
+    public void paint(Graphics2D g, T object, int width, int height);
+}
--- a/jdk/src/share/classes/javax/swing/UIManager.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/UIManager.java	Wed Jul 05 16:52:18 2017 +0200
@@ -383,6 +383,8 @@
         ArrayList<LookAndFeelInfo> iLAFs = new ArrayList<LookAndFeelInfo>(4);
         iLAFs.add(new LookAndFeelInfo(
                       "Metal", "javax.swing.plaf.metal.MetalLookAndFeel"));
+        iLAFs.add(new LookAndFeelInfo(
+                      "Nimbus", "javax.swing.plaf.nimbus.NimbusLookAndFeel"));
         iLAFs.add(new LookAndFeelInfo("CDE/Motif",
                   "com.sun.java.swing.plaf.motif.MotifLookAndFeel"));
 
--- a/jdk/src/share/classes/javax/swing/border/TitledBorder.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/border/TitledBorder.java	Wed Jul 05 16:52:18 2017 +0200
@@ -133,7 +133,7 @@
      * @param title  the title the border should display
      */
     public TitledBorder(String title)     {
-        this(null, title, LEADING, TOP, null, null);
+        this(null, title, LEADING, DEFAULT_POSITION, null, null);
     }
 
     /**
@@ -143,7 +143,7 @@
      * @param border  the border
      */
     public TitledBorder(Border border)       {
-        this(border, "", LEADING, TOP, null, null);
+        this(border, "", LEADING, DEFAULT_POSITION, null, null);
     }
 
     /**
@@ -154,7 +154,7 @@
      * @param title  the title the border should display
      */
     public TitledBorder(Border border, String title) {
-        this(border, title, LEADING, TOP, null, null);
+        this(border, title, LEADING, DEFAULT_POSITION, null, null);
     }
 
     /**
@@ -502,7 +502,33 @@
     /**
      * Returns the title-position of the titled border.
      */
-    public int getTitlePosition()   {       return titlePosition;   }
+    public int getTitlePosition() {
+        if (titlePosition == DEFAULT_POSITION) {
+            Object value = UIManager.get("TitledBorder.position");
+            if (value instanceof String) {
+                String s = (String)value;
+                if ("ABOVE_TOP".equalsIgnoreCase(s)) {
+                    return ABOVE_TOP;
+                } else if ("TOP".equalsIgnoreCase(s)) {
+                    return TOP;
+                } else if ("BELOW_TOP".equalsIgnoreCase(s)) {
+                    return BELOW_TOP;
+                } else if ("ABOVE_BOTTOM".equalsIgnoreCase(s)) {
+                    return ABOVE_BOTTOM;
+                } else if ("BOTTOM".equalsIgnoreCase(s)) {
+                    return BOTTOM;
+                } else if ("BELOW_BOTTOM".equalsIgnoreCase(s)) {
+                    return BELOW_BOTTOM;
+                }
+            } else if (value instanceof Integer) {
+                int i = (Integer)value;
+                if (i >= 0 && i <= 6) {
+                    return i;
+                }
+            }
+        }
+        return titlePosition;
+    }
 
     /**
      * Returns the title-justification of the titled border.
@@ -613,7 +639,7 @@
         Font font = getFont(c);
         FontMetrics fm = c.getFontMetrics(font);
         JComponent jc = (c instanceof JComponent) ? (JComponent)c : null;
-        switch (titlePosition) {
+        switch (getTitlePosition()) {
           case ABOVE_TOP:
           case BELOW_BOTTOM:
               minSize.width = Math.max(SwingUtilities2.stringWidth(jc, fm,
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -29,7 +29,6 @@
 import java.awt.event.*;
 import javax.swing.*;
 import javax.accessibility.*;
-import javax.swing.FocusManager;
 import javax.swing.plaf.*;
 import javax.swing.border.*;
 import javax.swing.text.*;
@@ -187,6 +186,23 @@
      */
     private boolean sameBaseline;
 
+    /**
+     * Indicates whether or not the combo box button should be square.
+     * If square, then the width and height are equal, and are both set to
+     * the height of the combo (minus appropriate insets).
+     */
+    private boolean squareButton = true;
+
+    /**
+     * Optional: if specified, these insets act as padding around the cell
+     * renderer when laying out and painting the "selected" item in the
+     * combo box. BasicComboBoxUI uses a single combo box renderer for rendering
+     * both the main combo box item and also all the items in the dropdown
+     * for the combo box. padding allows you to specify addition insets in
+     * addition to those specified by the cell renderer.
+     */
+    private Insets padding;
+
     // Used for calculating the default size.
     private static ListCellRenderer getDefaultListCellRenderer() {
         ListCellRenderer renderer = (ListCellRenderer)AppContext.
@@ -226,6 +242,7 @@
         return new BasicComboBoxUI();
     }
 
+    @Override
     public void installUI( JComponent c ) {
         isMinimumSizeDirty = true;
 
@@ -265,6 +282,7 @@
         comboBox.setKeySelectionManager(keySelectionManager);
     }
 
+    @Override
     public void uninstallUI( JComponent c ) {
         setPopupVisible( comboBox, false);
         popup.uninstallingUI();
@@ -317,7 +335,13 @@
         LookAndFeel.installProperty( comboBox, "opaque", Boolean.TRUE);
 
         Long l = (Long)UIManager.get("ComboBox.timeFactor");
-        timeFactor = (l!=null) ? l.longValue() : 1000L;
+        timeFactor = l == null ? 1000L : l.longValue();
+
+        //NOTE: this needs to default to true if not specified
+        Boolean b = (Boolean)UIManager.get("ComboBox.squareButton");
+        squareButton = b == null ? true : b;
+
+        padding = UIManager.getInsets("ComboBox.padding");
     }
 
     /**
@@ -530,6 +554,7 @@
      * <code>BasicComboBoxUI</code>.
      */
     public class KeyHandler extends KeyAdapter {
+        @Override
         public void keyPressed( KeyEvent e ) {
             getHandler().keyPressed(e);
         }
@@ -761,6 +786,8 @@
         }
 
         comboBox.configureEditor(comboBox.getEditor(),comboBox.getSelectedItem());
+
+        editor.addPropertyChangeListener(propertyChangeListener);
     }
 
     /**
@@ -774,6 +801,7 @@
             editor.removeFocusListener(focusListener);
         }
 
+        editor.removePropertyChangeListener(propertyChangeListener);
         editor.removeFocusListener(getHandler());
         comboBox.getEditor().removeActionListener(getHandler());
     }
@@ -868,7 +896,7 @@
 
     //=================================
     // begin ComponentUI Implementation
-
+    @Override
     public void paint( Graphics g, JComponent c ) {
         hasFocus = comboBox.hasFocus();
         if ( !comboBox.isEditable() ) {
@@ -878,6 +906,7 @@
         }
     }
 
+    @Override
     public Dimension getPreferredSize( JComponent c ) {
         return getMinimumSize(c);
     }
@@ -885,15 +914,19 @@
     /**
      * The minumum size is the size of the display area plus insets plus the button.
      */
+    @Override
     public Dimension getMinimumSize( JComponent c ) {
         if ( !isMinimumSizeDirty ) {
             return new Dimension(cachedMinimumSize);
         }
         Dimension size = getDisplaySize();
         Insets insets = getInsets();
+        //calculate the width and height of the button
+        int buttonHeight = size.height;
+        int buttonWidth = squareButton ? buttonHeight : arrowButton.getPreferredSize().width;
+        //adjust the size based on the button width
         size.height += insets.top + insets.bottom;
-        int buttonSize = size.height - (insets.top + insets.bottom);
-        size.width +=  insets.left + insets.right + buttonSize;
+        size.width +=  insets.left + insets.right + buttonWidth;
 
         cachedMinimumSize.setSize( size.width, size.height );
         isMinimumSizeDirty = false;
@@ -901,6 +934,7 @@
         return new Dimension(size);
     }
 
+    @Override
     public Dimension getMaximumSize( JComponent c ) {
         return new Dimension(Short.MAX_VALUE, Short.MAX_VALUE);
     }
@@ -913,6 +947,7 @@
      * @see javax.swing.JComponent#getBaseline(int, int)
      * @since 1.6
      */
+    @Override
     public int getBaseline(JComponent c, int width, int height) {
         super.getBaseline(c, width, height);
         int baseline = -1;
@@ -967,6 +1002,7 @@
      * @see javax.swing.JComponent#getBaseline(int, int)
      * @since 1.6
      */
+    @Override
     public Component.BaselineResizeBehavior getBaselineResizeBehavior(
             JComponent c) {
         super.getBaselineResizeBehavior(c);
@@ -1001,6 +1037,7 @@
     }
 
     // This is currently hacky...
+    @Override
     public int getAccessibleChildrenCount(JComponent c) {
         if ( comboBox.isEditable() ) {
             return 2;
@@ -1011,6 +1048,7 @@
     }
 
     // This is currently hacky...
+    @Override
     public Accessible getAccessibleChild(JComponent c, int i) {
         // 0 = the popup
         // 1 = the editor
@@ -1204,8 +1242,15 @@
             shouldValidate = true;
         }
 
-        currentValuePane.paintComponent(g,c,comboBox,bounds.x,bounds.y,
-                                        bounds.width,bounds.height, shouldValidate);
+        int x = bounds.x, y = bounds.y, w = bounds.width, h = bounds.height;
+        if (padding != null) {
+            x = bounds.x + padding.left;
+            y = bounds.y + padding.top;
+            w = bounds.width - (padding.left + padding.right);
+            h = bounds.height - (padding.top + padding.bottom);
+        }
+
+        currentValuePane.paintComponent(g,c,comboBox,x,y,w,h,shouldValidate);
     }
 
     /**
@@ -1333,6 +1378,12 @@
             result.height = Math.max(result.height,d.height);
         }
 
+        // calculate in the padding
+        if (padding != null) {
+            result.width += padding.left + padding.right;
+            result.height += padding.top + padding.bottom;
+        }
+
         // Set the cached value
         cachedDisplaySize.setSize(result.width, result.height);
         isDisplaySizeDirty = false;
@@ -1591,91 +1642,99 @@
         //
         public void propertyChange(PropertyChangeEvent e) {
             String propertyName = e.getPropertyName();
-            JComboBox comboBox = (JComboBox)e.getSource();
-
-            if ( propertyName == "model" ) {
-                ComboBoxModel newModel = (ComboBoxModel)e.getNewValue();
-                ComboBoxModel oldModel = (ComboBoxModel)e.getOldValue();
-
-                if ( oldModel != null && listDataListener != null ) {
-                    oldModel.removeListDataListener( listDataListener );
-                }
-
-                if ( newModel != null && listDataListener != null ) {
-                    newModel.addListDataListener( listDataListener );
-                }
-
-                if ( editor != null ) {
-                    comboBox.configureEditor( comboBox.getEditor(), comboBox.getSelectedItem() );
+            if (e.getSource() == editor){
+                // If the border of the editor changes then this can effect
+                // the size of the editor which can cause the combo's size to
+                // become invalid so we need to clear size caches
+                if ("border".equals(propertyName)){
+                    isMinimumSizeDirty = true;
+                    isDisplaySizeDirty = true;
+                    comboBox.revalidate();
                 }
-                isMinimumSizeDirty = true;
-                isDisplaySizeDirty = true;
-                comboBox.revalidate();
-                comboBox.repaint();
-            }
-            else if ( propertyName == "editor" && comboBox.isEditable() ) {
-                addEditor();
-                comboBox.revalidate();
-            }
-            else if ( propertyName == "editable" ) {
-                if ( comboBox.isEditable() ) {
-                    comboBox.setRequestFocusEnabled( false );
-                    addEditor();
-                } else {
-                    comboBox.setRequestFocusEnabled( true );
-                    removeEditor();
-                }
+            } else {
+                JComboBox comboBox = (JComboBox)e.getSource();
+                if ( propertyName == "model" ) {
+                    ComboBoxModel newModel = (ComboBoxModel)e.getNewValue();
+                    ComboBoxModel oldModel = (ComboBoxModel)e.getOldValue();
 
-                updateToolTipTextForChildren();
+                    if ( oldModel != null && listDataListener != null ) {
+                        oldModel.removeListDataListener( listDataListener );
+                    }
+
+                    if ( newModel != null && listDataListener != null ) {
+                        newModel.addListDataListener( listDataListener );
+                    }
 
-                comboBox.revalidate();
-            }
-            else if ( propertyName == "enabled" ) {
-                boolean enabled = comboBox.isEnabled();
-                if ( editor != null )
-                    editor.setEnabled(enabled);
-                if ( arrowButton != null )
-                    arrowButton.setEnabled(enabled);
-                comboBox.repaint();
-            }
-            else if ( propertyName == "focusable" ) {
-                boolean focusable = comboBox.isFocusable();
-                if ( editor != null )
-                    editor.setFocusable(focusable);
-                if ( arrowButton != null )
-                    arrowButton.setFocusable(focusable);
-                comboBox.repaint();
-            }
-            else if ( propertyName == "maximumRowCount" ) {
-                if ( isPopupVisible( comboBox ) ) {
-                    setPopupVisible(comboBox, false);
-                    setPopupVisible(comboBox, true);
+                    if ( editor != null ) {
+                        comboBox.configureEditor( comboBox.getEditor(), comboBox.getSelectedItem() );
+                    }
+                    isMinimumSizeDirty = true;
+                    isDisplaySizeDirty = true;
+                    comboBox.revalidate();
+                    comboBox.repaint();
+                }
+                else if ( propertyName == "editor" && comboBox.isEditable() ) {
+                    addEditor();
+                    comboBox.revalidate();
+                }
+                else if ( propertyName == "editable" ) {
+                    if ( comboBox.isEditable() ) {
+                        comboBox.setRequestFocusEnabled( false );
+                        addEditor();
+                    } else {
+                        comboBox.setRequestFocusEnabled( true );
+                        removeEditor();
+                    }
+                    updateToolTipTextForChildren();
+                    comboBox.revalidate();
+                }
+                else if ( propertyName == "enabled" ) {
+                    boolean enabled = comboBox.isEnabled();
+                    if ( editor != null )
+                        editor.setEnabled(enabled);
+                    if ( arrowButton != null )
+                        arrowButton.setEnabled(enabled);
+                    comboBox.repaint();
                 }
-            }
-            else if ( propertyName == "font" ) {
-                listBox.setFont( comboBox.getFont() );
-                if ( editor != null ) {
-                    editor.setFont( comboBox.getFont() );
+                else if ( propertyName == "focusable" ) {
+                    boolean focusable = comboBox.isFocusable();
+                    if ( editor != null )
+                        editor.setFocusable(focusable);
+                    if ( arrowButton != null )
+                        arrowButton.setFocusable(focusable);
+                    comboBox.repaint();
+                }
+                else if ( propertyName == "maximumRowCount" ) {
+                    if ( isPopupVisible( comboBox ) ) {
+                        setPopupVisible(comboBox, false);
+                        setPopupVisible(comboBox, true);
+                    }
                 }
-                isMinimumSizeDirty = true;
-                comboBox.validate();
-            }
-            else if ( propertyName == JComponent.TOOL_TIP_TEXT_KEY ) {
-                updateToolTipTextForChildren();
-            }
-            else if ( propertyName == BasicComboBoxUI.IS_TABLE_CELL_EDITOR ) {
-                Boolean inTable = (Boolean)e.getNewValue();
-                isTableCellEditor = inTable.equals(Boolean.TRUE) ? true : false;
-            }
-            else if (propertyName == "prototypeDisplayValue") {
-                isMinimumSizeDirty = true;
-                isDisplaySizeDirty = true;
-                comboBox.revalidate();
-            }
-            else if (propertyName == "renderer") {
-                isMinimumSizeDirty = true;
-                isDisplaySizeDirty = true;
-                comboBox.revalidate();
+                else if ( propertyName == "font" ) {
+                    listBox.setFont( comboBox.getFont() );
+                    if ( editor != null ) {
+                        editor.setFont( comboBox.getFont() );
+                    }
+                    isMinimumSizeDirty = true;
+                    comboBox.validate();
+                }
+                else if ( propertyName == JComponent.TOOL_TIP_TEXT_KEY ) {
+                    updateToolTipTextForChildren();
+                }
+                else if ( propertyName == BasicComboBoxUI.IS_TABLE_CELL_EDITOR ) {
+                    Boolean inTable = (Boolean)e.getNewValue();
+                    isTableCellEditor = inTable.equals(Boolean.TRUE) ? true : false;
+                }
+                else if (propertyName == "prototypeDisplayValue") {
+                    isMinimumSizeDirty = true;
+                    isDisplaySizeDirty = true;
+                    comboBox.revalidate();
+                }
+                else if (propertyName == "renderer") {
+                    isMinimumSizeDirty = true;
+                    isDisplaySizeDirty = true;
+                    comboBox.revalidate();
+                }
             }
         }
 
@@ -1809,18 +1868,23 @@
             int height = cb.getHeight();
 
             Insets insets = getInsets();
-            int buttonSize = height - (insets.top + insets.bottom);
+            int buttonHeight = height - (insets.top + insets.bottom);
+            int buttonWidth = buttonHeight;
+            if (arrowButton != null) {
+                Insets arrowInsets = arrowButton.getInsets();
+                buttonWidth = squareButton ?
+                    buttonHeight :
+                    arrowButton.getPreferredSize().width + arrowInsets.left + arrowInsets.right;
+            }
             Rectangle cvb;
 
-            if ( arrowButton != null ) {
-                if(BasicGraphicsUtils.isLeftToRight(cb)) {
-                    arrowButton.setBounds( width - (insets.right + buttonSize),
-                                           insets.top,
-                                           buttonSize, buttonSize);
-                }
-                else {
-                    arrowButton.setBounds( insets.left, insets.top,
-                                           buttonSize, buttonSize);
+            if (arrowButton != null) {
+                if (BasicGraphicsUtils.isLeftToRight(cb)) {
+                    arrowButton.setBounds(width - (insets.right + buttonWidth),
+                            insets.top, buttonWidth, buttonHeight);
+                } else {
+                    arrowButton.setBounds(insets.left, insets.top,
+                            buttonWidth, buttonHeight);
                 }
             }
             if ( editor != null ) {
@@ -1829,7 +1893,6 @@
             }
         }
 
-
         //
         // ActionListener
         //
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicListUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicListUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -480,6 +480,12 @@
         if (renderer == null) {
             ListCellRenderer lcr = (ListCellRenderer)UIManager.get(
                     "List.cellRenderer");
+
+            // fix for 6711072 some LAFs like Nimbus do not provide this
+            // UIManager key and we should not through a NPE here because of it
+            if (lcr == null) {
+                lcr = new DefaultListCellRenderer();
+            }
             renderer = lcr.getListCellRendererComponent(
                     list, "a", -1, false, false);
             lafDefaults.put(BASELINE_COMPONENT_KEY, renderer);
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -111,6 +111,11 @@
         String prefix = getPropertyPrefix();
 
         acceleratorFont = UIManager.getFont("MenuItem.acceleratorFont");
+        // use default if missing so that BasicMenuItemUI can be used in other
+        // LAFs like Nimbus
+        if (acceleratorFont == null) {
+            acceleratorFont = UIManager.getFont("MenuItem.font");
+        }
 
         Object opaque = UIManager.get(getPropertyPrefix() + ".opaque");
         if (opaque != null) {
@@ -130,7 +135,7 @@
         LookAndFeel.installBorder(menuItem, prefix + ".border");
         oldBorderPainted = menuItem.isBorderPainted();
         LookAndFeel.installProperty(menuItem, "borderPainted",
-                                    UIManager.get(prefix + ".borderPainted"));
+                                    UIManager.getBoolean(prefix + ".borderPainted"));
         LookAndFeel.installColorsAndFont(menuItem,
                                          prefix + ".background",
                                          prefix + ".foreground",
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicProgressBarUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicProgressBarUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -158,6 +158,7 @@
                                          "ProgressBar.foreground",
                                          "ProgressBar.font");
         cellLength = UIManager.getInt("ProgressBar.cellLength");
+        if (cellLength == 0) cellLength = 1;
         cellSpacing = UIManager.getInt("ProgressBar.cellSpacing");
         selectionForeground = UIManager.getColor("ProgressBar.selectionForeground");
         selectionBackground = UIManager.getColor("ProgressBar.selectionBackground");
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -112,6 +112,24 @@
      */
     private int scrollBarValue;
 
+    /**
+     * Distance between the increment button and the track. This may be a negative
+     * number. If negative, then an overlap between the button and track will occur,
+     * which is useful for shaped buttons.
+     *
+     * TODO This should be made protected in a feature release
+     */
+    private int incrGap;
+
+    /**
+     * Distance between the decrement button and the track. This may be a negative
+     * number. If negative, then an overlap between the button and track will occur,
+     * which is useful for shaped buttons.
+     *
+     * TODO This should be made protected in a feature release
+     */
+    private int decrGap;
+
     static void loadActionMap(LazyActionMap map) {
         map.put(new Actions(Actions.POSITIVE_UNIT_INCREMENT));
         map.put(new Actions(Actions.POSITIVE_BLOCK_INCREMENT));
@@ -186,6 +204,31 @@
         LookAndFeel.installProperty(scrollbar, "opaque", Boolean.TRUE);
 
         scrollBarValue = scrollbar.getValue();
+
+        incrGap = UIManager.getInt("ScrollBar.incrementButtonGap");
+        decrGap = UIManager.getInt("ScrollBar.decrementButtonGap");
+
+        // TODO this can be removed when incrGap/decrGap become protected
+        // handle scaling for sizeVarients for special case components. The
+        // key "JComponent.sizeVariant" scales for large/small/mini
+        // components are based on Apples LAF
+        String scaleKey = (String)scrollbar.getClientProperty(
+                "JComponent.sizeVariant");
+        if (scaleKey != null){
+            if ("large".equals(scaleKey)){
+                scrollBarWidth *= 1.15;
+                incrGap *= 1.15;
+                decrGap *= 1.15;
+            } else if ("small".equals(scaleKey)){
+                scrollBarWidth *= 0.857;
+                incrGap *= 0.857;
+                decrGap *= 0.714;
+            } else if ("mini".equals(scaleKey)){
+                scrollBarWidth *= 0.714;
+                incrGap *= 0.714;
+                decrGap *= 0.714;
+            }
+        }
     }
 
 
@@ -442,20 +485,23 @@
         g.setColor(trackHighlightColor);
 
         if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {
+            //paint the distance between the start of the track and top of the thumb
             int x = insets.left;
-            int y = decrButton.getY() + decrButton.getHeight();
+            int y = trackRect.y;
             int w = scrollbar.getWidth() - (insets.left + insets.right);
             int h = thumbR.y - y;
             g.fillRect(x, y, w, h);
-        }
-        else    {
+        } else {
+            //if left-to-right, fill the area between the start of the track and
+            //the left edge of the thumb. If right-to-left, fill the area between
+            //the end of the thumb and end of the track.
             int x, w;
             if (scrollbar.getComponentOrientation().isLeftToRight()) {
-                x = decrButton.getX() + decrButton.getWidth();
+               x = trackRect.x;
                 w = thumbR.x - x;
             } else {
                 x = thumbR.x + thumbR.width;
-                w = decrButton.getX() - x;
+                w = trackRect.x + trackRect.width - x;
             }
             int y = insets.top;
             int h = scrollbar.getHeight() - (insets.top + insets.bottom);
@@ -471,19 +517,23 @@
         g.setColor(trackHighlightColor);
 
         if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {
+            //fill the area between the bottom of the thumb and the end of the track.
             int x = insets.left;
             int y = thumbR.y + thumbR.height;
             int w = scrollbar.getWidth() - (insets.left + insets.right);
-            int h = incrButton.getY() - y;
+            int h = trackRect.y + trackRect.height - y;
             g.fillRect(x, y, w, h);
         }
         else {
+            //if left-to-right, fill the area between the right of the thumb and the
+            //end of the track. If right-to-left, then fill the area to the left of
+            //the thumb and the start of the track.
             int x, w;
             if (scrollbar.getComponentOrientation().isLeftToRight()) {
                 x = thumbR.x + thumbR.width;
-                w = incrButton.getX() - x;
+                w = trackRect.x + trackRect.width - x;
             } else {
-                x = incrButton.getX() + incrButton.getWidth();
+                x = trackRect.x;
                 w = thumbR.x - x;
             }
             int y = insets.top;
@@ -610,11 +660,13 @@
         int incrButtonY = sbSize.height - (sbInsets.bottom + incrButtonH);
 
         /* The thumb must fit within the height left over after we
-         * subtract the preferredSize of the buttons and the insets.
+         * subtract the preferredSize of the buttons and the insets
+         * and the gaps
          */
         int sbInsetsH = sbInsets.top + sbInsets.bottom;
         int sbButtonsH = decrButtonH + incrButtonH;
-        float trackH = sbSize.height - (sbInsetsH + sbButtonsH);
+        int gaps = decrGap + incrGap;
+        float trackH = sbSize.height - (sbInsetsH + sbButtonsH) - gaps;
 
         /* Compute the height and origin of the thumb.   The case
          * where the thumb is at the bottom edge is handled specially
@@ -632,11 +684,11 @@
         thumbH = Math.max(thumbH, getMinimumThumbSize().height);
         thumbH = Math.min(thumbH, getMaximumThumbSize().height);
 
-        int thumbY = incrButtonY - thumbH;
+        int thumbY = incrButtonY - incrGap - thumbH;
         if (value < (sb.getMaximum() - sb.getVisibleAmount())) {
             float thumbRange = trackH - thumbH;
             thumbY = (int)(0.5f + (thumbRange * ((value - min) / (range - extent))));
-            thumbY +=  decrButtonY + decrButtonH;
+            thumbY +=  decrButtonY + decrButtonH + decrGap;
         }
 
         /* If the buttons don't fit, allocate half of the available
@@ -652,8 +704,8 @@
 
         /* Update the trackRect field.
          */
-        int itrackY = decrButtonY + decrButtonH;
-        int itrackH = incrButtonY - itrackY;
+        int itrackY = decrButtonY + decrButtonH + decrGap;
+        int itrackH = incrButtonY - incrGap - itrackY;
         trackRect.setBounds(itemX, itrackY, itemW, itrackH);
 
         /* If the thumb isn't going to fit, zero it's bounds.  Otherwise
@@ -671,11 +723,11 @@
             }
         }
         else {
-            if ((thumbY + thumbH) > incrButtonY) {
-                thumbY = incrButtonY - thumbH;
+            if ((thumbY + thumbH) > incrButtonY - incrGap) {
+                thumbY = incrButtonY - incrGap - thumbH;
             }
-            if (thumbY  < (decrButtonY + decrButtonH)) {
-                thumbY = decrButtonY + decrButtonH + 1;
+            if (thumbY  < (decrButtonY + decrButtonH + decrGap)) {
+                thumbY = decrButtonY + decrButtonH + decrGap + 1;
             }
             setThumbBounds(itemX, thumbY, itemW, thumbH);
         }
@@ -710,13 +762,16 @@
         }
         int leftButtonX = sbInsets.left;
         int rightButtonX = sbSize.width - (sbInsets.right + rightButtonW);
+        int leftGap = ltr ? decrGap : incrGap;
+        int rightGap = ltr ? incrGap : decrGap;
 
         /* The thumb must fit within the width left over after we
-         * subtract the preferredSize of the buttons and the insets.
+         * subtract the preferredSize of the buttons and the insets
+         * and the gaps
          */
         int sbInsetsW = sbInsets.left + sbInsets.right;
         int sbButtonsW = leftButtonW + rightButtonW;
-        float trackW = sbSize.width - (sbInsetsW + sbButtonsW);
+        float trackW = sbSize.width - (sbInsetsW + sbButtonsW) - (leftGap + rightGap);
 
         /* Compute the width and origin of the thumb.  Enforce
          * the thumbs min/max dimensions.  The case where the thumb
@@ -735,7 +790,7 @@
         thumbW = Math.max(thumbW, getMinimumThumbSize().width);
         thumbW = Math.min(thumbW, getMaximumThumbSize().width);
 
-        int thumbX = ltr ? rightButtonX - thumbW : leftButtonX + leftButtonW;
+        int thumbX = ltr ? rightButtonX - rightGap - thumbW : leftButtonX + leftButtonW + leftGap;
         if (value < (max - sb.getVisibleAmount())) {
             float thumbRange = trackW - thumbW;
             if( ltr ) {
@@ -743,7 +798,7 @@
             } else {
                 thumbX = (int)(0.5f + (thumbRange * ((max - extent - value) / (range - extent))));
             }
-            thumbX +=  leftButtonX + leftButtonW;
+            thumbX += leftButtonX + leftButtonW + leftGap;
         }
 
         /* If the buttons don't fit, allocate half of the available
@@ -752,7 +807,7 @@
         int sbAvailButtonW = (sbSize.width - sbInsetsW);
         if (sbAvailButtonW < sbButtonsW) {
             rightButtonW = leftButtonW = sbAvailButtonW / 2;
-            rightButtonX = sbSize.width - (sbInsets.right + rightButtonW);
+            rightButtonX = sbSize.width - (sbInsets.right + rightButtonW + rightGap);
         }
 
         (ltr ? decrButton : incrButton).setBounds(leftButtonX, itemY, leftButtonW, itemH);
@@ -760,8 +815,8 @@
 
         /* Update the trackRect field.
          */
-        int itrackX = leftButtonX + leftButtonW;
-        int itrackW = rightButtonX - itrackX;
+        int itrackX = leftButtonX + leftButtonW + leftGap;
+        int itrackW = rightButtonX - rightGap - itrackX;
         trackRect.setBounds(itrackX, itemY, itrackW, itemH);
 
         /* Make sure the thumb fits between the buttons.  Note
@@ -778,11 +833,11 @@
             }
         }
         else {
-            if (thumbX + thumbW > rightButtonX) {
-                thumbX = rightButtonX - thumbW;
+            if (thumbX + thumbW > rightButtonX - rightGap) {
+                thumbX = rightButtonX - rightGap - thumbW;
             }
-            if (thumbX  < leftButtonX + leftButtonW) {
-                thumbX = leftButtonX + leftButtonW + 1;
+            if (thumbX  < leftButtonX + leftButtonW + leftGap) {
+                thumbX = leftButtonX + leftButtonW + leftGap + 1;
             }
             setThumbBounds(thumbX, itemY, thumbW, itemH);
         }
@@ -1151,20 +1206,15 @@
             int thumbMin, thumbMax, thumbPos;
 
             if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {
-                thumbMin = decrButton.getY() + decrButton.getHeight();
-                thumbMax = incrButton.getY() - thumbR.height;
+                thumbMin = trackRect.y;
+                thumbMax = trackRect.y + trackRect.height - thumbR.height;
                 thumbPos = Math.min(thumbMax, Math.max(thumbMin, (e.getY() - offset)));
                 setThumbBounds(thumbR.x, thumbPos, thumbR.width, thumbR.height);
                 trackLength = getTrackBounds().height;
             }
             else {
-                if (scrollbar.getComponentOrientation().isLeftToRight()) {
-                    thumbMin = decrButton.getX() + decrButton.getWidth();
-                    thumbMax = incrButton.getX() - thumbR.width;
-                } else {
-                    thumbMin = incrButton.getX() + incrButton.getWidth();
-                    thumbMax = decrButton.getX() - thumbR.width;
-                }
+                thumbMin = trackRect.x;
+                thumbMax = trackRect.x + trackRect.width - thumbR.width;
                 thumbPos = Math.min(thumbMax, Math.max(thumbMin, (e.getX() - offset)));
                 setThumbBounds(thumbPos, thumbR.y, thumbR.width, thumbR.height);
                 trackLength = getTrackBounds().width;
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSliderUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSliderUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -205,6 +205,9 @@
         focusColor = UIManager.getColor("Slider.focus");
 
         focusInsets = (Insets)UIManager.get( "Slider.focusInsets" );
+        // use default if missing so that BasicSliderUI can be used in other
+        // LAFs like Nimbus
+        if (focusInsets == null) focusInsets = new InsetsUIResource(2,2,2,2);
     }
 
     protected TrackListener createTrackListener(JSlider slider) {
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -347,8 +347,9 @@
         // This plus 2 here is to provide backwards consistancy. Previously,
         // the old size did not include the 2 pixel border around the divider,
         // it now does.
-        LookAndFeel.installProperty(splitPane, "dividerSize",
-                                    UIManager.get("SplitPane.dividerSize"));
+        Integer dividerSize = (Integer)UIManager.get("SplitPane.dividerSize");
+        if (divider == null) dividerSize = 10;
+        LookAndFeel.installProperty(splitPane, "dividerSize", dividerSize);
 
         divider.setDividerSize(splitPane.getDividerSize());
         dividerSize = divider.getDividerSize();
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -379,6 +379,14 @@
             opaque = Boolean.FALSE;
         }
         LookAndFeel.installProperty(tabPane, "opaque", opaque);
+
+        // Fix for 6711145 BasicTabbedPanuUI should not throw a NPE if these
+        // keys are missing. So we are setting them to there default values here
+        // if the keys are missing.
+        if (tabInsets == null) tabInsets = new Insets(0,4,1,4);
+        if (selectedTabPadInsets == null) selectedTabPadInsets = new Insets(2,2,2,1);
+        if (tabAreaInsets == null) tabAreaInsets = new Insets(3,2,0,2);
+        if (contentBorderInsets == null) contentBorderInsets = new Insets(2,2,3,3);
     }
 
     protected void uninstallDefaults() {
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1414,17 +1414,20 @@
 
         Color sbg = table.getSelectionBackground();
         if (sbg == null || sbg instanceof UIResource) {
-            table.setSelectionBackground(UIManager.getColor("Table.selectionBackground"));
+            sbg = UIManager.getColor("Table.selectionBackground");
+            table.setSelectionBackground(sbg != null ? sbg : UIManager.getColor("textHighlight"));
         }
 
         Color sfg = table.getSelectionForeground();
         if (sfg == null || sfg instanceof UIResource) {
-            table.setSelectionForeground(UIManager.getColor("Table.selectionForeground"));
+            sfg = UIManager.getColor("Table.selectionForeground");
+            table.setSelectionForeground(sfg != null ? sfg : UIManager.getColor("textHighlightText"));
         }
 
         Color gridColor = table.getGridColor();
         if (gridColor == null || gridColor instanceof UIResource) {
-            table.setGridColor(UIManager.getColor("Table.gridColor"));
+            gridColor = UIManager.getColor("Table.gridColor");
+            table.setGridColor(gridColor != null ? gridColor : Color.GRAY);
         }
 
         // install the scrollpane border
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -27,13 +27,10 @@
 import java.util.*;
 import java.awt.*;
 import java.awt.event.*;
-import java.awt.font.*;
 import java.awt.datatransfer.*;
-import java.awt.dnd.*;
 import java.awt.im.InputContext;
 import java.beans.*;
 import java.io.*;
-import java.net.*;
 import javax.swing.*;
 import javax.swing.plaf.*;
 import javax.swing.text.*;
@@ -785,11 +782,15 @@
             installDefaults();
             installDefaults2();
 
-            // common case is background painted... this can
-            // easily be changed by subclasses or from outside
-            // of the component.
-            LookAndFeel.installProperty(editor, "opaque", Boolean.TRUE);
-            LookAndFeel.installProperty(editor, "autoscrolls", Boolean.TRUE);
+            // This is a workaround as these should not override what synth has
+            // set them to
+            if (!(this instanceof sun.swing.plaf.synth.SynthUI)){
+                // common case is background painted... this can
+                // easily be changed by subclasses or from outside
+                // of the component.
+                LookAndFeel.installProperty(editor, "opaque", Boolean.TRUE);
+                LookAndFeel.installProperty(editor, "autoscrolls", Boolean.TRUE);
+            }
 
             // attach to the model and editor
             editor.addPropertyChangeListener(updateHandler);
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -2402,15 +2402,25 @@
         }
         leadRow = getRowForPath(tree, newPath);
 
-        if(repaint) {
-            if(bounds != null)
-                tree.repaint(bounds);
+        if (repaint) {
+            if (bounds != null) {
+                tree.repaint(getRepaintPathBounds(bounds));
+            }
             bounds = getPathBounds(tree, newPath);
-            if(bounds != null)
-                tree.repaint(bounds);
+            if (bounds != null) {
+                tree.repaint(getRepaintPathBounds(bounds));
+            }
         }
     }
 
+    private Rectangle getRepaintPathBounds(Rectangle bounds) {
+        if (UIManager.getBoolean("Tree.repaintWholeRow")) {
+           bounds.x = 0;
+           bounds.width = tree.getWidth();
+        }
+        return bounds;
+    }
+
     private TreePath getLeadSelectionPath() {
         return tree.getLeadSelectionPath();
     }
@@ -3643,14 +3653,6 @@
             focusGained(e);
         }
 
-        private Rectangle getRepaintPathBounds(Rectangle bounds) {
-            if(UIManager.getBoolean("Tree.repaintWholeRow")) {
-               bounds.x = 0;
-               bounds.width = tree.getWidth();
-            }
-            return bounds;
-        }
-
         //
         // CellEditorListener
         //
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/AbstractRegionPainter.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,735 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.image.*;
+import java.lang.reflect.Method;
+import javax.swing.*;
+import javax.swing.plaf.UIResource;
+import javax.swing.Painter;
+import java.awt.print.PrinterGraphics;
+import static javax.swing.plaf.nimbus.NimbusLookAndFeel.deriveARGB;
+
+/**
+ * Convenient base class for defining Painter instances for rendering a
+ * region or component in Nimbus.
+ *
+ * @author Jasper Potts
+ * @author Richard Bair
+ */
+public abstract class AbstractRegionPainter implements Painter<JComponent> {
+    /**
+     * PaintContext, which holds a lot of the state needed for cache hinting and x/y value decoding
+     * The data contained within the context is typically only computed once and reused over
+     * multiple paint calls, whereas the other values (w, h, f, leftWidth, etc) are recomputed
+     * for each call to paint.
+     *
+     * This field is retrieved from subclasses on each paint operation. It is up
+     * to the subclass to compute and cache the PaintContext over multiple calls.
+     */
+    private PaintContext ctx;
+    /**
+     * The scaling factor. Recomputed on each call to paint.
+     */
+    private float f;
+    /*
+      Various metrics used for decoding x/y values based on the canvas size
+      and stretching insets.
+
+      On each call to paint, we first ask the subclass for the PaintContext.
+      From the context we get the canvas size and stretching insets, and whether
+      the algorithm should be "inverted", meaning the center section remains
+      a fixed size and the other sections scale.
+
+      We then use these values to compute a series of metrics (listed below)
+      which are used to decode points in a specific axis (x or y).
+
+      The leftWidth represents the distance from the left edge of the region
+      to the first stretching inset, after accounting for any scaling factor
+      (such as DPI scaling). The centerWidth is the distance between the leftWidth
+      and the rightWidth. The rightWidth is the distance from the right edge,
+      to the right inset (after scaling has been applied).
+
+      The same logic goes for topHeight, centerHeight, and bottomHeight.
+
+      The leftScale represents the proportion of the width taken by the left section.
+      The same logic is applied to the other scales.
+
+      The various widths/heights are used to decode control points. The
+      various scales are used to decode bezier handles (or anchors).
+    */
+    /**
+     * The width of the left section. Recomputed on each call to paint.
+     */
+    private float leftWidth;
+    /**
+     * The height of the top section. Recomputed on each call to paint.
+     */
+    private float topHeight;
+    /**
+     * The width of the center section. Recomputed on each call to paint.
+     */
+    private float centerWidth;
+    /**
+     * The height of the center section. Recomputed on each call to paint.
+     */
+    private float centerHeight;
+    /**
+     * The width of the right section. Recomputed on each call to paint.
+     */
+    private float rightWidth;
+    /**
+     * The height of the bottom section. Recomputed on each call to paint.
+     */
+    private float bottomHeight;
+    /**
+     * The scaling factor to use for the left section. Recomputed on each call to paint.
+     */
+    private float leftScale;
+    /**
+     * The scaling factor to use for the top section. Recomputed on each call to paint.
+     */
+    private float topScale;
+    /**
+     * The scaling factor to use for the center section, in the horizontal
+     * direction. Recomputed on each call to paint.
+     */
+    private float centerHScale;
+    /**
+     * The scaling factor to use for the center section, in the vertical
+     * direction. Recomputed on each call to paint.
+     */
+    private float centerVScale;
+    /**
+     * The scaling factor to use for the right section. Recomputed on each call to paint.
+     */
+    private float rightScale;
+    /**
+     * The scaling factor to use for the bottom section. Recomputed on each call to paint.
+     */
+    private float bottomScale;
+
+    /**
+     * Create a new AbstractRegionPainter
+     */
+    protected AbstractRegionPainter() { }
+
+    /**
+     * @inheritDoc
+     */
+    @Override
+    public final void paint(Graphics2D g, JComponent c, int w, int h) {
+        //don't render if the width/height are too small
+        if (w <= 0 || h <=0) return;
+
+        Object[] extendedCacheKeys = getExtendedCacheKeys(c);
+        ctx = getPaintContext();
+        PaintContext.CacheMode cacheMode = ctx == null ? PaintContext.CacheMode.NO_CACHING : ctx.cacheMode;
+        if (cacheMode == PaintContext.CacheMode.NO_CACHING ||
+                !ImageCache.getInstance().isImageCachable(w, h) ||
+                g instanceof PrinterGraphics) {
+            // no caching so paint directly
+            paint0(g, c, w, h, extendedCacheKeys);
+        } else if (cacheMode == PaintContext.CacheMode.FIXED_SIZES) {
+            paintWithFixedSizeCaching(g, c, w, h, extendedCacheKeys);
+        } else {
+            // 9 Square caching
+            paintWith9SquareCaching(g, ctx, c, w, h, extendedCacheKeys);
+        }
+    }
+
+    /**
+     * Get any extra attributes which the painter implementation would like
+     * to include in the image cache lookups. This is checked for every call
+     * of the paint(g, c, w, h) method.
+     *
+     * @param c The component on the current paint call
+     * @return Array of extra objects to be included in the cache key
+     */
+    protected Object[] getExtendedCacheKeys(JComponent c) {
+        return null;
+    }
+
+    /**
+     * <p>Gets the PaintContext for this painting operation. This method is called on every
+     * paint, and so should be fast and produce no garbage. The PaintContext contains
+     * information such as cache hints. It also contains data necessary for decoding
+     * points at runtime, such as the stretching insets, the canvas size at which the
+     * encoded points were defined, and whether the stretching insets are inverted.</p>
+     *
+     * <p> This method allows for subclasses to package the painting of different states
+     * with possibly different canvas sizes, etc, into one AbstractRegionPainter implementation.</p>
+     *
+     * @return a PaintContext associated with this paint operation.
+     */
+    protected abstract PaintContext getPaintContext();
+
+    /**
+     * <p>Configures the given Graphics2D. Often, rendering hints or compositiing rules are
+     * applied to a Graphics2D object prior to painting, which should affect all of the
+     * subsequent painting operations. This method provides a convenient hook for configuring
+     * the Graphics object prior to rendering, regardless of whether the render operation is
+     * performed to an intermediate buffer or directly to the display.</p>
+     *
+     * @param g The Graphics2D object to configure. Will not be null.
+     */
+    protected void configureGraphics(Graphics2D g) {
+        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+    }
+
+    /**
+     * Actually performs the painting operation. Subclasses must implement this method.
+     * The graphics object passed may represent the actual surface being rendererd to,
+     * or it may be an intermediate buffer. It has also been pre-translated. Simply render
+     * the component as if it were located at 0, 0 and had a width of <code>width</code>
+     * and a height of <code>height</code>. For performance reasons, you may want to read
+     * the clip from the Graphics2D object and only render within that space.
+     *
+     * @param g The Graphics2D surface to paint to
+     * @param c The JComponent related to the drawing event. For example, if the
+     *          region being rendered is Button, then <code>c</code> will be a
+     *          JButton. If the region being drawn is ScrollBarSlider, then the
+     *          component will be JScrollBar. This value may be null.
+     * @param width The width of the region to paint. Note that in the case of
+     *              painting the foreground, this value may differ from c.getWidth().
+     * @param height The height of the region to paint. Note that in the case of
+     *               painting the foreground, this value may differ from c.getHeight().
+     * @param extendedCacheKeys The result of the call to getExtendedCacheKeys()
+     */
+    protected abstract void doPaint(Graphics2D g, JComponent c, int width,
+                                    int height, Object[] extendedCacheKeys);
+
+    /**
+     * Decodes and returns a float value representing the actual pixel location for
+     * the given encoded X value.
+     *
+     * @param x an encoded x value (0...1, or 1...2, or 2...3)
+     * @return the decoded x value
+     */
+    protected final float decodeX(float x) {
+        if (ctx.canvasSize == null) return x;
+
+        if (x >= 0 && x <= 1) {
+            return x * leftWidth;
+        } else if (x > 1 && x < 2) {
+            return ((x-1) * centerWidth) + leftWidth;
+        } else if (x >= 2 && x <= 3) {
+            return ((x-2) * rightWidth) + leftWidth + centerWidth;
+        } else {
+            throw new AssertionError("Invalid x");
+        }
+    }
+
+    /**
+     * Decodes and returns a float value representing the actual pixel location for
+     * the given encoded y value.
+     *
+     * @param y an encoded y value (0...1, or 1...2, or 2...3)
+     * @return the decoded y value
+     */
+    protected final float decodeY(float y) {
+        if (ctx.canvasSize == null) return y;
+
+        if (y >= 0 && y <= 1) {
+            return y * topHeight;
+        } else if (y > 1 && y < 2) {
+            return ((y-1) * centerHeight) + topHeight;
+        } else if (y >= 2 && y <= 3) {
+            return ((y-2) * bottomHeight) + topHeight + centerHeight;
+        } else {
+            throw new AssertionError("Invalid y");
+        }
+    }
+
+    /**
+     * Decodes and returns a float value representing the actual pixel location for
+     * the anchor point given the encoded X value of the control point, and the offset
+     * distance to the anchor from that control point.
+     *
+     * @param x an encoded x value of the bezier control point (0...1, or 1...2, or 2...3)
+     * @param dx the offset distance to the anchor from the control point x
+     * @return the decoded x location of the control point
+     */
+    protected final float decodeAnchorX(float x, float dx) {
+        if (ctx.canvasSize == null) return x + dx;
+
+        if (x >= 0 && x <= 1) {
+            return decodeX(x) + (dx * leftScale);
+        } else if (x > 1 && x < 2) {
+            return decodeX(x) + (dx * centerHScale);
+        } else if (x >= 2 && x <= 3) {
+            return decodeX(x) + (dx * rightScale);
+        } else {
+            throw new AssertionError("Invalid x");
+        }
+    }
+
+    /**
+     * Decodes and returns a float value representing the actual pixel location for
+     * the anchor point given the encoded Y value of the control point, and the offset
+     * distance to the anchor from that control point.
+     *
+     * @param y an encoded y value of the bezier control point (0...1, or 1...2, or 2...3)
+     * @param dy the offset distance to the anchor from the control point y
+     * @return the decoded y position of the control point
+     */
+    protected final float decodeAnchorY(float y, float dy) {
+        if (ctx.canvasSize == null) return y + dy;
+
+        if (y >= 0 && y <= 1) {
+            return decodeY(y) + (dy * topScale);
+        } else if (y > 1 && y < 2) {
+            return decodeY(y) + (dy * centerVScale);
+        } else if (y >= 2 && y <= 3) {
+            return decodeY(y) + (dy * bottomScale);
+        } else {
+            throw new AssertionError("Invalid y");
+        }
+    }
+
+    /**
+     * Decodes and returns a color, which is derived from a base color in UI
+     * defaults.
+     *
+     * @param key     A key corrosponding to the value in the UI Defaults table
+     *                of UIManager where the base color is defined
+     * @param hOffset The hue offset used for derivation.
+     * @param sOffset The saturation offset used for derivation.
+     * @param bOffset The brightness offset used for derivation.
+     * @param aOffset The alpha offset used for derivation. Between 0...255
+     * @return The derived color, whos color value will change if the parent
+     *         uiDefault color changes.
+     */
+    protected final Color decodeColor(String key, float hOffset, float sOffset,
+                                      float bOffset, int aOffset) {
+        if (UIManager.getLookAndFeel() instanceof NimbusLookAndFeel){
+            NimbusLookAndFeel laf = (NimbusLookAndFeel) UIManager.getLookAndFeel();
+            return laf.getDerivedColor(key, hOffset, sOffset, bOffset, aOffset, true);
+        } else {
+            // can not give a right answer as painter sould not be used outside
+            // of nimbus laf but do the best we can
+            return Color.getHSBColor(hOffset,sOffset,bOffset);
+        }
+    }
+
+    /**
+     * Decodes and returns a color, which is derived from a offset between two
+     * other colors.
+     *
+     * @param color1   The first color
+     * @param color2   The second color
+     * @param midPoint The offset between color 1 and color 2, a value of 0.0 is
+     *                 color 1 and 1.0 is color 2;
+     * @return The derived color
+     */
+    protected final Color decodeColor(Color color1, Color color2,
+                                      float midPoint) {
+        return new Color(deriveARGB(color1, color2, midPoint));
+    }
+
+    /**
+     * Given parameters for creating a LinearGradientPaint, this method will
+     * create and return a linear gradient paint. One primary purpose for this
+     * method is to avoid creating a LinearGradientPaint where the start and
+     * end points are equal. In such a case, the end y point is slightly
+     * increased to avoid the overlap.
+     *
+     * @param x1
+     * @param y1
+     * @param x2
+     * @param y2
+     * @param midpoints
+     * @param colors
+     * @return a valid LinearGradientPaint. This method never returns null.
+     */
+    protected final LinearGradientPaint decodeGradient(float x1, float y1, float x2, float y2, float[] midpoints, Color[] colors) {
+        if (x1 == x2 && y1 == y2) {
+            y2 += .00001f;
+        }
+        return new LinearGradientPaint(x1, y1, x2, y2, midpoints, colors);
+    }
+
+    /**
+     * Given parameters for creating a RadialGradientPaint, this method will
+     * create and return a radial gradient paint. One primary purpose for this
+     * method is to avoid creating a RadialGradientPaint where the radius
+     * is non-positive. In such a case, the radius is just slightly
+     * increased to avoid 0.
+     *
+     * @param x
+     * @param y
+     * @param r
+     * @param midpoints
+     * @param colors
+     * @return a valid RadialGradientPaint. This method never returns null.
+     */
+    protected final RadialGradientPaint decodeRadialGradient(float x, float y, float r, float[] midpoints, Color[] colors) {
+        if (r == 0f) {
+            r = .00001f;
+        }
+        return new RadialGradientPaint(x, y, r, midpoints, colors);
+    }
+
+    /**
+     * Get a color property from the given JComponent. First checks for a
+     * <code>getXXX()</code> method and if that fails checks for a client
+     * property with key <code>property</code>. If that still fails to return
+     * a Color then <code>defaultColor</code> is returned.
+     *
+     * @param c The component to get the color property from
+     * @param property The name of a bean style property or client property
+     * @param defaultColor The color to return if no color was obtained from
+     *        the component.
+     * @return The color that was obtained from the component or defaultColor
+     */
+    protected final Color getComponentColor(JComponent c, String property,
+                                            Color defaultColor,
+                                            float saturationOffset,
+                                            float brightnessOffset,
+                                            int alphaOffset) {
+        Color color = null;
+        if (c != null) {
+            // handle some special cases for performance
+            if ("background".equals(property)) {
+                color = c.getBackground();
+            } else if ("foreground".equals(property)) {
+                color = c.getForeground();
+            } else if (c instanceof JList && "selectionForeground".equals(property)) {
+                color = ((JList) c).getSelectionForeground();
+            } else if (c instanceof JList && "selectionBackground".equals(property)) {
+                color = ((JList) c).getSelectionBackground();
+            } else if (c instanceof JTable && "selectionForeground".equals(property)) {
+                color = ((JTable) c).getSelectionForeground();
+            } else if (c instanceof JTable && "selectionBackground".equals(property)) {
+                color = ((JTable) c).getSelectionBackground();
+            } else {
+                String s = "get" + Character.toUpperCase(property.charAt(0)) + property.substring(1);
+                try {
+                    Method method = c.getClass().getMethod(s);
+                    color = (Color) method.invoke(c);
+                } catch (Exception e) {
+                    //don't do anything, it just didn't work, that's all.
+                    //This could be a normal occurance if you use a property
+                    //name referring to a key in clientProperties instead of
+                    //a real property
+                }
+                if (color == null) {
+                    Object value = c.getClientProperty(property);
+                    if (value instanceof Color) {
+                        color = (Color) value;
+                    }
+                }
+            }
+        }
+        // we return the defaultColor if the color found is null, or if
+        // it is a UIResource. This is done because the color for the
+        // ENABLED state is set on the component, but you don't want to use
+        // that color for the over state. So we only respect the color
+        // specified for the property if it was set by the user, as opposed
+        // to set by us.
+        if (color == null || color instanceof UIResource) {
+            return defaultColor;
+        } else if (saturationOffset != 0 || brightnessOffset != 0 || alphaOffset != 0) {
+            float[] tmp = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null);
+            tmp[1] = clamp(tmp[1] + saturationOffset);
+            tmp[2] = clamp(tmp[2] + brightnessOffset);
+            int alpha = clamp(color.getAlpha() + alphaOffset);
+            return new Color((Color.HSBtoRGB(tmp[0], tmp[1], tmp[2]) & 0xFFFFFF) | (alpha <<24));
+        } else {
+            return color;
+        }
+    }
+
+    /**
+     * A class encapsulating state useful when painting. Generally, instances of this
+     * class are created once, and reused for each paint request without modification.
+     * This class contains values useful when hinting the cache engine, and when decoding
+     * control points and bezier curve anchors.
+     */
+    protected static class PaintContext {
+        protected static enum CacheMode {
+            NO_CACHING, FIXED_SIZES, NINE_SQUARE_SCALE
+        }
+
+        private static Insets EMPTY_INSETS = new Insets(0, 0, 0, 0);
+
+        private Insets stretchingInsets;
+        private Dimension canvasSize;
+        private boolean inverted;
+        private CacheMode cacheMode;
+        private double maxHorizontalScaleFactor;
+        private double maxVerticalScaleFactor;
+
+        private float a; // insets.left
+        private float b; // canvasSize.width - insets.right
+        private float c; // insets.top
+        private float d; // canvasSize.height - insets.bottom;
+        private float aPercent; // only used if inverted == true
+        private float bPercent; // only used if inverted == true
+        private float cPercent; // only used if inverted == true
+        private float dPercent; // only used if inverted == true
+
+        /**
+         * Creates a new PaintContext which does not attempt to cache or scale any cached
+         * images.
+         *
+         * @param insets The stretching insets. May be null. If null, then assumed to be 0, 0, 0, 0.
+         * @param canvasSize The size of the canvas used when encoding the various x/y values. May be null.
+         *                   If null, then it is assumed that there are no encoded values, and any calls
+         *                   to one of the "decode" methods will return the passed in value.
+         * @param inverted Whether to "invert" the meaning of the 9-square grid and stretching insets
+         */
+        public PaintContext(Insets insets, Dimension canvasSize, boolean inverted) {
+            this(insets, canvasSize, inverted, null, 1, 1);
+        }
+
+        /**
+         * Creates a new PaintContext.
+         *
+         * @param insets The stretching insets. May be null. If null, then assumed to be 0, 0, 0, 0.
+         * @param canvasSize The size of the canvas used when encoding the various x/y values. May be null.
+         *                   If null, then it is assumed that there are no encoded values, and any calls
+         *                   to one of the "decode" methods will return the passed in value.
+         * @param inverted Whether to "invert" the meaning of the 9-square grid and stretching insets
+         * @param cacheMode A hint as to which caching mode to use. If null, then set to no caching.
+         * @param maxH The maximium scale in the horizontal direction to use before punting and redrawing from scratch.
+         *             For example, if maxH is 2, then we will attempt to scale any cached images up to 2x the canvas
+         *             width before redrawing from scratch. Reasonable maxH values may improve painting performance.
+         *             If set too high, then you may get poor looking graphics at higher zoom levels. Must be >= 1.
+         * @param maxV The maximium scale in the vertical direction to use before punting and redrawing from scratch.
+         *             For example, if maxV is 2, then we will attempt to scale any cached images up to 2x the canvas
+         *             height before redrawing from scratch. Reasonable maxV values may improve painting performance.
+         *             If set too high, then you may get poor looking graphics at higher zoom levels. Must be >= 1.
+         */
+        public PaintContext(Insets insets, Dimension canvasSize, boolean inverted,
+                            CacheMode cacheMode, double maxH, double maxV) {
+            if (maxH < 1 || maxH < 1) {
+                throw new IllegalArgumentException("Both maxH and maxV must be >= 1");
+            }
+
+            this.stretchingInsets = insets == null ? EMPTY_INSETS : insets;
+            this.canvasSize = canvasSize;
+            this.inverted = inverted;
+            this.cacheMode = cacheMode == null ? CacheMode.NO_CACHING : cacheMode;
+            this.maxHorizontalScaleFactor = maxH;
+            this.maxVerticalScaleFactor = maxV;
+
+            if (canvasSize != null) {
+                a = insets.left;
+                b = canvasSize.width - insets.right;
+                c = insets.top;
+                d = canvasSize.height - insets.bottom;
+                this.canvasSize = canvasSize;
+                this.inverted = inverted;
+                if (inverted) {
+                    float available = canvasSize.width - (b - a);
+                    aPercent = available > 0f ? a / available : 0f;
+                    bPercent = available > 0f ? b / available : 0f;
+                    available = canvasSize.height - (d - c);
+                    cPercent = available > 0f ? c / available : 0f;
+                    dPercent = available > 0f ? d / available : 0f;
+                }
+            }
+        }
+    }
+
+    //---------------------- private methods
+
+    //initializes the class to prepare it for being able to decode points
+    private void prepare(float w, float h) {
+        //if no PaintContext has been specified, reset the values and bail
+        //also bail if the canvasSize was not set (since decoding will not work)
+        if (ctx == null || ctx.canvasSize == null) {
+            f = 1f;
+            leftWidth = centerWidth = rightWidth = 0f;
+            topHeight = centerHeight = bottomHeight = 0f;
+            leftScale = centerHScale = rightScale = 0f;
+            topScale = centerVScale = bottomScale = 0f;
+            return;
+        }
+
+        //calculate the scaling factor, and the sizes for the various 9-square sections
+        Number scale = (Number)UIManager.get("scale");
+        f = scale == null ? 1f : scale.floatValue();
+
+        if (ctx.inverted) {
+            centerWidth = (ctx.b - ctx.a) * f;
+            float availableSpace = w - centerWidth;
+            leftWidth = availableSpace * ctx.aPercent;
+            rightWidth = availableSpace * ctx.bPercent;
+            centerHeight = (ctx.d - ctx.c) * f;
+            availableSpace = h - centerHeight;
+            topHeight = availableSpace * ctx.cPercent;
+            bottomHeight = availableSpace * ctx.dPercent;
+        } else {
+            leftWidth = ctx.a * f;
+            rightWidth = (float)(ctx.canvasSize.getWidth() - ctx.b) * f;
+            centerWidth = w - leftWidth - rightWidth;
+            topHeight = ctx.c * f;
+            bottomHeight = (float)(ctx.canvasSize.getHeight() - ctx.d) * f;
+            centerHeight = h - topHeight - bottomHeight;
+        }
+
+        leftScale = ctx.a == 0f ? 0f : leftWidth / ctx.a;
+        centerHScale = (ctx.b - ctx.a) == 0f ? 0f : centerWidth / (ctx.b - ctx.a);
+        rightScale = (ctx.canvasSize.width - ctx.b) == 0f ? 0f : rightWidth / (ctx.canvasSize.width - ctx.b);
+        topScale = ctx.c == 0f ? 0f : topHeight / ctx.c;
+        centerVScale = (ctx.d - ctx.c) == 0f ? 0f : centerHeight / (ctx.d - ctx.c);
+        bottomScale = (ctx.canvasSize.height - ctx.d) == 0f ? 0f : bottomHeight / (ctx.canvasSize.height - ctx.d);
+    }
+
+    private void paintWith9SquareCaching(Graphics2D g, PaintContext ctx,
+                                         JComponent c, int w, int h,
+                                         Object[] extendedCacheKeys) {
+        // check if we can scale to the requested size
+        Dimension canvas = ctx.canvasSize;
+        Insets insets = ctx.stretchingInsets;
+
+        if (w <= (canvas.width * ctx.maxHorizontalScaleFactor) && h <= (canvas.height * ctx.maxVerticalScaleFactor)) {
+            // get image at canvas size
+            VolatileImage img = getImage(g.getDeviceConfiguration(), c, canvas.width, canvas.height, extendedCacheKeys);
+            if (img != null) {
+                // calculate dst inserts
+                // todo: destination inserts need to take into acount scale factor for high dpi. Note: You can use f for this, I think
+                Insets dstInsets;
+                if (ctx.inverted){
+                    int leftRight = (w-(canvas.width-(insets.left+insets.right)))/2;
+                    int topBottom = (h-(canvas.height-(insets.top+insets.bottom)))/2;
+                    dstInsets = new Insets(topBottom,leftRight,topBottom,leftRight);
+                } else {
+                    dstInsets = insets;
+                }
+                // paint 9 square scaled
+                Object oldScaleingHints = g.getRenderingHint(RenderingHints.KEY_INTERPOLATION);
+                g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+                ImageScalingHelper.paint(g, 0, 0, w, h, img, insets, dstInsets,
+                        ImageScalingHelper.PaintType.PAINT9_STRETCH, ImageScalingHelper.PAINT_ALL);
+                g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
+                    oldScaleingHints!=null?oldScaleingHints:RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
+            } else {
+                // render directly
+                paint0(g, c, w, h, extendedCacheKeys);
+            }
+        } else {
+            // paint directly
+            paint0(g, c, w, h, extendedCacheKeys);
+        }
+    }
+
+    private void paintWithFixedSizeCaching(Graphics2D g, JComponent c, int w,
+                                           int h, Object[] extendedCacheKeys) {
+        VolatileImage img = getImage(g.getDeviceConfiguration(), c, w, h, extendedCacheKeys);
+        if (img != null) {
+            //render cached image
+            g.drawImage(img, 0, 0, null);
+        } else {
+            // render directly
+            paint0(g, c, w, h, extendedCacheKeys);
+        }
+    }
+
+    /** Gets the rendered image for this painter at the requested size, either from cache or create a new one */
+    private VolatileImage getImage(GraphicsConfiguration config, JComponent c,
+                                   int w, int h, Object[] extendedCacheKeys) {
+        ImageCache imageCache = ImageCache.getInstance();
+        //get the buffer for this component
+        VolatileImage buffer = (VolatileImage) imageCache.getImage(config, w, h, this, extendedCacheKeys);
+
+        int renderCounter = 0; //to avoid any potential, though unlikely, infinite loop
+        do {
+            //validate the buffer so we can check for surface loss
+            int bufferStatus = VolatileImage.IMAGE_INCOMPATIBLE;
+            if (buffer != null) {
+                bufferStatus = buffer.validate(config);
+            }
+
+            //If the buffer status is incompatible or restored, then we need to re-render to the volatile image
+            if (bufferStatus == VolatileImage.IMAGE_INCOMPATIBLE || bufferStatus == VolatileImage.IMAGE_RESTORED) {
+                //if the buffer is null (hasn't been created), or isn't the right size, or has lost its contents,
+                //then recreate the buffer
+                if (buffer == null || buffer.getWidth() != w || buffer.getHeight() != h ||
+                        bufferStatus == VolatileImage.IMAGE_INCOMPATIBLE) {
+                    //clear any resources related to the old back buffer
+                    if (buffer != null) {
+                        buffer.flush();
+                        buffer = null;
+                    }
+                    //recreate the buffer
+                    buffer = config.createCompatibleVolatileImage(w, h,
+                            Transparency.TRANSLUCENT);
+                    // put in cache for future
+                    imageCache.setImage(buffer, config, w, h, this, extendedCacheKeys);
+                }
+                //create the graphics context with which to paint to the buffer
+                Graphics2D bg = buffer.createGraphics();
+                //clear the background before configuring the graphics
+                bg.setComposite(AlphaComposite.Clear);
+                bg.fillRect(0, 0, w, h);
+                bg.setComposite(AlphaComposite.SrcOver);
+                configureGraphics(bg);
+                // paint the painter into buffer
+                paint0(bg, c, w, h, extendedCacheKeys);
+                //close buffer graphics
+                bg.dispose();
+            }
+        } while (buffer.contentsLost() && renderCounter++ < 3);
+        // check if we failed
+        if (renderCounter == 3) return null;
+        // return image
+        return buffer;
+    }
+
+    //convenience method which creates a temporary graphics object by creating a
+    //clone of the passed in one, configuring it, drawing with it, disposing it.
+    //These steps have to be taken to ensure that any hints set on the graphics
+    //are removed subsequent to painting.
+    private void paint0(Graphics2D g, JComponent c, int width, int height,
+                        Object[] extendedCacheKeys) {
+        prepare(width, height);
+        g = (Graphics2D)g.create();
+        configureGraphics(g);
+        doPaint(g, c, width, height, extendedCacheKeys);
+        g.dispose();
+    }
+
+    private float clamp(float value) {
+        if (value < 0) {
+            value = 0;
+        } else if (value > 1) {
+            value = 1;
+        }
+        return value;
+    }
+
+    private int clamp(int value) {
+        if (value < 0) {
+            value = 0;
+        } else if (value > 255) {
+            value = 255;
+        }
+        return value;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/Defaults.template	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,878 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package ${PACKAGE};
+
+import javax.swing.Painter;
+import java.awt.Graphics;
+import sun.font.FontManager;
+import sun.swing.plaf.synth.DefaultSynthStyle;
+import javax.swing.BorderFactory;
+import javax.swing.JComponent;
+import javax.swing.JInternalFrame;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import javax.swing.plaf.BorderUIResource;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.DimensionUIResource;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.InsetsUIResource;
+import javax.swing.plaf.synth.Region;
+import javax.swing.plaf.synth.SynthStyle;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.Insets;
+import java.awt.image.BufferedImage;
+import static java.awt.image.BufferedImage.*;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.lang.ref.WeakReference;
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.WeakHashMap;
+import javax.swing.border.Border;
+import javax.swing.plaf.UIResource;
+
+/**
+ * This class contains all the implementation details related to
+ * ${LAF_NAME}. It contains all the code for initializing the UIDefaults table,
+ * as well as for selecting
+ * a SynthStyle based on a JComponent/Region pair.
+ *
+ * @author Richard Bair
+ */
+final class ${LAF_NAME}Defaults {
+    /**
+     * The map of SynthStyles. This map is keyed by Region. Each Region maps
+     * to a List of LazyStyles. Each LazyStyle has a reference to the prefix
+     * that was registered with it. This reference can then be inspected to see
+     * if it is the proper lazy style.
+     * <p/>
+     * There can be more than one LazyStyle for a single Region if there is more
+     * than one prefix defined for a given region. For example, both Button and
+     * "MyButton" might be prefixes assigned to the Region.Button region.
+     */
+    private Map<Region, List<LazyStyle>> m;
+    /**
+     * A map of regions which have been registered.
+     * This mapping is maintained so that the Region can be found based on
+     * prefix in a very fast manner. This is used in the "matches" method of
+     * LazyStyle.
+     */
+    private Map<String, Region> registeredRegions =
+            new HashMap<String, Region>();
+    /**
+     * Our fallback style to avoid NPEs if the proper style cannot be found in
+     * this class. Not sure if relying on DefaultSynthStyle is the best choice.
+     */
+    private DefaultSynthStyle defaultStyle;
+    /**
+     * The default font that will be used. I store this value so that it can be
+     * set in the UIDefaults when requested.
+     */
+    private FontUIResource defaultFont;
+
+    /**
+     * Map of lists of derived colors keyed by the DerivedColorKeys
+     */
+    private Map<DerivedColorKey, DerivedColor> derivedColorsMap =
+            new HashMap<DerivedColorKey, DerivedColor>();
+
+    /** Tempory key used for fetching from the derivedColorsMap */
+    private final DerivedColorKey tmpDCKey = new DerivedColorKey();
+
+    /** Listener for changes to user defaults table */
+    private DefaultsListener defaultsListener = new DefaultsListener();
+
+    /** Called by UIManager when this look and feel is installed. */
+    void initialize() {
+        // add listener for derived colors
+        UIManager.addPropertyChangeListener(defaultsListener);
+        UIManager.getDefaults().addPropertyChangeListener(defaultsListener);
+    }
+
+    /** Called by UIManager when this look and feel is uninstalled. */
+    void uninitialize() {
+        // remove listener for derived colors
+        UIManager.getDefaults().removePropertyChangeListener(defaultsListener);
+        UIManager.removePropertyChangeListener(defaultsListener);
+    }
+
+    /**
+     * Create a new ${LAF_NAME}Defaults. This constructor is only called from
+     * within ${LAF_NAME}LookAndFeel.
+     */
+    ${LAF_NAME}Defaults() {
+        m = new HashMap<Region, List<LazyStyle>>();
+
+        //Create the default font and default style. Also register all of the
+        //regions and their states that this class will use for later lookup.
+        //Additional regions can be registered later by 3rd party components.
+        //These are simply the default registrations.
+        defaultFont = FontManager.getFontConfigFUIR("sans", Font.PLAIN, 12);
+        defaultStyle = new DefaultSynthStyle();
+        defaultStyle.setFont(defaultFont);
+
+        //initialize the map of styles
+${STYLE_INIT}
+    }
+
+    //--------------- Methods called by ${LAF_NAME}LookAndFeel
+
+    /**
+     * Called from ${LAF_NAME}LookAndFeel to initialize the UIDefaults.
+     *
+     * @param d UIDefaults table to initialize. This will never be null.
+     *          If listeners are attached to <code>d</code>, then you will
+     *          only receive notification of LookAndFeel level defaults, not
+     *          all defaults on the UIManager.
+     */
+    void initializeDefaults(UIDefaults d) {
+${UI_DEFAULT_INIT}
+    }
+
+    /**
+     * <p>Registers the given region and prefix. The prefix, if it contains
+     * quoted sections, refers to certain named components. If there are not
+     * quoted sections, then the prefix refers to a generic component type.</p>
+     *
+     * <p>If the given region/prefix combo has already been registered, then
+     * it will not be registered twice. The second registration attempt will
+     * fail silently.</p>
+     *
+     * @param region The Synth Region that is being registered. Such as Button,
+     *        or ScrollBarThumb.
+     * @param prefix The UIDefault prefix. For example, could be ComboBox, or if
+     *        a named components, "MyComboBox", or even something like
+     *        ToolBar:"MyComboBox":"ComboBox.arrowButton"
+     */
+    void register(Region region, String prefix) {
+        //validate the method arguments
+        if (region == null || prefix == null) {
+            throw new IllegalArgumentException(
+                    "Neither Region nor Prefix may be null");
+        }
+
+        //Add a LazyStyle for this region/prefix to m.
+        List<LazyStyle> styles = m.get(region);
+        if (styles == null) {
+            styles = new LinkedList<LazyStyle>();
+            styles.add(new LazyStyle(prefix));
+            m.put(region, styles);
+        } else {
+            //iterate over all the current styles and see if this prefix has
+            //already been registered. If not, then register it.
+            for (LazyStyle s : styles) {
+                if (prefix.equals(s.prefix)) {
+                    return;
+                }
+            }
+            styles.add(new LazyStyle(prefix));
+        }
+
+        //add this region to the map of registered regions
+        registeredRegions.put(region.getName(), region);
+    }
+
+    /**
+     * <p>Locate the style associated with the given region, and component.
+     * This is called from ${LAF_NAME}LookAndFeel in the SynthStyleFactory
+     * implementation.</p>
+     *
+     * <p>Lookup occurs as follows:<br/>
+     * Check the map of styles <code>m</code>. If the map contains no styles at
+     * all, then simply return the defaultStyle. If the map contains styles,
+     * then iterate over all of the styles for the Region <code>r</code> looking
+     * for the best match, based on prefix. If a match was made, then return
+     * that SynthStyle. Otherwise, return the defaultStyle.</p>
+     *
+     * @param comp The component associated with this region. For example, if
+     *        the Region is Region.Button then the component will be a JButton.
+     *        If the Region is a subregion, such as ScrollBarThumb, then the
+     *        associated component will be the component that subregion belongs
+     *        to, such as JScrollBar. The JComponent may be named. It may not be
+     *        null.
+     * @param r The region we are looking for a style for. May not be null.
+     */
+    SynthStyle getStyle(JComponent comp, Region r) {
+        //validate method arguments
+        if (comp == null || r == null) {
+            throw new IllegalArgumentException(
+                    "Neither comp nor r may be null");
+        }
+
+        //if there are no lazy styles registered for the region r, then return
+        //the default style
+        List<LazyStyle> styles = m.get(r);
+        if (styles == null || styles.size() == 0) {
+            return defaultStyle;
+        }
+
+        //Look for the best SynthStyle for this component/region pair.
+        LazyStyle foundStyle = null;
+        for (LazyStyle s : styles) {
+            if (s.matches(comp)) {
+                //replace the foundStyle if foundStyle is null, or
+                //if the new style "s" is more specific (ie, its path was
+                //longer), or if the foundStyle was "simple" and the new style
+                //was not (ie: the foundStyle was for something like Button and
+                //the new style was for something like "MyButton", hence, being
+                //more specific.) In all cases, favor the most specific style
+                //found.
+                if (foundStyle == null ||
+                   (foundStyle.parts.length < s.parts.length) ||
+                   (foundStyle.parts.length == s.parts.length 
+                    && foundStyle.simple && !s.simple)) {
+                    foundStyle = s;
+                }
+            }
+        }
+
+        //return the style, if found, or the default style if not found
+        return foundStyle == null ? defaultStyle : foundStyle.getStyle(comp);
+    }
+
+    /*
+        Various public helper classes.
+        These may be used to register 3rd party values into UIDefaults
+    */
+
+    /**
+     * <p>Derives its font value based on a parent font and a set of offsets and
+     * attributes. This class is an ActiveValue, meaning that it will recompute
+     * its value each time it is requested from UIDefaults. It is therefore
+     * recommended to read this value once and cache it in the UI delegate class
+     * until asked to reinitialize.</p>
+     *
+     * <p>To use this class, create an instance with the key of the font in the
+     * UI defaults table from which to derive this font, along with a size
+     * offset (if any), and whether it is to be bold, italic, or left in its
+     * default form.</p>
+     */
+    public static final class DerivedFont implements UIDefaults.ActiveValue {
+        private float sizeOffset;
+        private Boolean bold;
+        private Boolean italic;
+        private String parentKey;
+
+        /**
+         * Create a new DerivedFont.
+         *
+         * @param key The UIDefault key associated with this derived font's
+         *            parent or source. If this key leads to a null value, or a
+         *            value that is not a font, then null will be returned as
+         *            the derived font. The key must not be null.
+         * @param sizeOffset The size offset, as a percentage, to use. For
+         *                   example, if the source font was a 12pt font and the
+         *                   sizeOffset were specified as .9, then the new font
+         *                   will be 90% of what the source font was, or, 10.8
+         *                   pts which is rounded to 11pts. This fractional
+         *                   based offset allows for proper font scaling in high
+         *                   DPI or large system font scenarios.
+         * @param bold Whether the new font should be bold. If null, then this
+         *             new font will inherit the bold setting of the source
+         *             font.
+         * @param italic Whether the new font should be italicized. If null,
+         *               then this new font will inherit the italic setting of
+         *               the source font.
+         */
+        public DerivedFont(String key, float sizeOffset, Boolean bold,
+                           Boolean italic) {
+            //validate the constructor arguments
+            if (key == null) {
+                throw new IllegalArgumentException("You must specify a key");
+            }
+
+            //set the values
+            this.parentKey = key;
+            this.sizeOffset = sizeOffset;
+            this.bold = bold;
+            this.italic = italic;
+        }
+
+        /**
+         * @inheritDoc
+         */
+        @Override
+        public Object createValue(UIDefaults defaults) {
+            Font f = defaults.getFont(parentKey);
+            if (f != null) {
+                // always round size for now so we have exact int font size
+                // (or we may have lame looking fonts)
+                float size = Math.round(f.getSize2D() * sizeOffset);
+                int style = f.getStyle();
+                if (bold != null) {
+                    if (bold.booleanValue()) {
+                        style = style | Font.BOLD;
+                    } else {
+                        style = style & ~Font.BOLD;
+                    }
+                }
+                if (italic != null) {
+                    if (italic.booleanValue()) {
+                        style = style | Font.ITALIC;
+                    } else {
+                        style = style & ~Font.ITALIC;
+                    }
+                }
+                return f.deriveFont(style, size);
+            } else {
+                return null;
+            }
+        }
+    }
+
+
+    /**
+     * This class is private because it relies on the constructor of the
+     * auto-generated AbstractRegionPainter subclasses. Hence, it is not
+     * generally useful, and is private.
+     * <p/>
+     * LazyPainter is a LazyValue class. It will create the
+     * AbstractRegionPainter lazily, when asked. It uses reflection to load the
+     * proper class and invoke its constructor.
+     */
+    private static final class LazyPainter implements UIDefaults.LazyValue {
+        private int which;
+        private AbstractRegionPainter.PaintContext ctx;
+        private String className;
+
+        LazyPainter(String className, int which, Insets insets,
+                    Dimension canvasSize, boolean inverted) {
+            if (className == null) {
+                throw new IllegalArgumentException(
+                        "The className must be specified");
+            }
+
+            this.className = className;
+            this.which = which;
+            this.ctx = new AbstractRegionPainter.PaintContext(
+                insets, canvasSize, inverted);
+        }
+
+        LazyPainter(String className, int which, Insets insets,
+                    Dimension canvasSize, boolean inverted,
+                    AbstractRegionPainter.PaintContext.CacheMode cacheMode,
+                    double maxH, double maxV) {
+            if (className == null) {
+                throw new IllegalArgumentException(
+                        "The className must be specified");
+            }
+
+            this.className = className;
+            this.which = which;
+            this.ctx = new AbstractRegionPainter.PaintContext(
+                    insets, canvasSize, inverted, cacheMode, maxH, maxV);
+        }
+
+        @Override
+        public Object createValue(UIDefaults table) {
+            try {
+                Class c;
+                Object cl;
+                // See if we should use a separate ClassLoader
+                if (table == null || !((cl = table.get("ClassLoader"))
+                                       instanceof ClassLoader)) {
+                    cl = Thread.currentThread().
+                                getContextClassLoader();
+                    if (cl == null) {
+                        // Fallback to the system class loader.
+                        cl = ClassLoader.getSystemClassLoader();
+                    }
+                }
+
+                c = Class.forName(className, true, (ClassLoader)cl);
+                Constructor constructor = c.getConstructor(
+                        AbstractRegionPainter.PaintContext.class, int.class);
+                if (constructor == null) {
+                    throw new NullPointerException(
+                            "Failed to find the constructor for the class: " +
+                            className);
+                }
+                return constructor.newInstance(ctx, which);
+            } catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    /**
+     * A class which creates the NimbusStyle associated with it lazily, but also
+     * manages a lot more information about the style. It is less of a LazyValue
+     * type of class, and more of an Entry or Item type of class, as it
+     * represents an entry in the list of LazyStyles in the map m.
+     *
+     * The primary responsibilities of this class include:
+     * <ul>
+     *   <li>Determining whether a given component/region pair matches this
+     *       style</li>
+     *   <li>Splitting the prefix specified in the constructor into its
+     *       constituent parts to facilitate quicker matching</li>
+     *   <li>Creating and vending a NimbusStyle lazily.</li>
+     * </ul>
+     */
+    private final class LazyStyle {
+        /**
+         * The prefix this LazyStyle was registered with. Something like
+         * Button or ComboBox:"ComboBox.arrowButton"
+         */
+        private String prefix;
+        /**
+         * Whether or not this LazyStyle represents an unnamed component
+         */
+        private boolean simple = true;
+        /**
+         * The various parts, or sections, of the prefix. For example,
+         * the prefix:
+         *     ComboBox:"ComboBox.arrowButton"
+         *
+         * will be broken into two parts,
+         *     ComboBox and "ComboBox.arrowButton"
+         */
+        private Part[] parts;
+        /**
+         * Cached shared style.
+         */
+        private NimbusStyle style;
+        /**
+         * A weakly referenced hash map such that if the reference JComponent
+         * key is garbage collected then the entry is removed from the map.
+         * This cache exists so that when a JComponent has nimbus overrides
+         * in its client map, a unique style will be created and returned
+         * for that JComponent instance, always. In such a situation each
+         * JComponent instance must have its own instance of NimbusStyle.
+         */
+        private WeakHashMap<JComponent, WeakReference<NimbusStyle>> overridesCache;
+
+        /**
+         * Create a new LazyStyle.
+         *
+         * @param prefix The prefix associated with this style. Cannot be null.
+         */
+        private LazyStyle(String prefix) {
+            if (prefix == null) {
+                throw new IllegalArgumentException(
+                        "The prefix must not be null");
+            }
+
+            this.prefix = prefix;
+
+            //there is one odd case that needs to be supported here: cell
+            //renderers. A cell renderer is defined as a named internal
+            //component, so for example:
+            // List."List.cellRenderer"
+            //The problem is that the component named List.cellRenderer is not a
+            //child of a JList. Rather, it is treated more as a direct component
+            //Thus, if the prefix ends with "cellRenderer", then remove all the
+            //previous dotted parts of the prefix name so that it becomes, for
+            //example: "List.cellRenderer"
+            //Likewise, we have a hacked work around for cellRenderer, renderer,
+            //and listRenderer.
+            String temp = prefix;
+            if (temp.endsWith("cellRenderer\"")
+                    || temp.endsWith("renderer\"")
+                    || temp.endsWith("listRenderer\"")) {
+                temp = temp.substring(temp.lastIndexOf(":\"") + 1);
+            }
+
+            //otherwise, normal code path
+            List<String> sparts = split(temp);
+            parts = new Part[sparts.size()];
+            for (int i = 0; i < parts.length; i++) {
+                parts[i] = new Part(sparts.get(i));
+                if (parts[i].named) {
+                    simple = false;
+                }
+            }
+        }
+
+        /**
+         * Gets the style. Creates it if necessary.
+         * @return the style
+         */
+        SynthStyle getStyle(JComponent c) {
+            // if the component has overrides, it gets its own unique style
+            // instead of the shared style.
+            if (c.getClientProperty("Nimbus.Overrides") != null) {
+                if (overridesCache == null)
+                    overridesCache = new WeakHashMap<JComponent, WeakReference<NimbusStyle>>();
+                WeakReference<NimbusStyle> ref = overridesCache.get(c);
+                NimbusStyle s = ref == null ? null : ref.get();
+                if (s == null) {
+                    s = new NimbusStyle(prefix, c);
+                    overridesCache.put(c, new WeakReference<NimbusStyle>(s));
+                }
+                return s;
+            }
+            
+            // lazily create the style if necessary
+            if (style == null)
+                style = new NimbusStyle(prefix, null);
+            
+            // return the style
+            return style;
+        }
+
+        /**
+         * This LazyStyle is a match for the given component if, and only if,
+         * for each part of the prefix the component hierarchy matches exactly.
+         * That is, if given "a":something:"b", then:
+         * c.getName() must equals "b"
+         * c.getParent() can be anything
+         * c.getParent().getParent().getName() must equal "a".
+         */
+        boolean matches(JComponent c) {
+            return matches(c, parts.length - 1);
+        }
+
+        private boolean matches(Component c, int partIndex) {
+            if (partIndex < 0) return true;
+            if (c == null) return false;
+            //only get here if partIndex > 0 and c == null
+
+            String name = c.getName();
+            if (parts[partIndex].named && parts[partIndex].s.equals(name)) {
+                //so far so good, recurse
+                return matches(c.getParent(), partIndex - 1);
+            } else if (!parts[partIndex].named) {
+                //if c is not named, and parts[partIndex] has an expected class
+                //type registered, then check to make sure c is of the
+                //right type;
+                Class clazz = parts[partIndex].c;
+                if (clazz != null && clazz.isAssignableFrom(c.getClass())) {
+                    //so far so good, recurse
+                    return matches(c.getParent(), partIndex - 1);
+                } else if (clazz == null &&
+                           registeredRegions.containsKey(parts[partIndex].s)) {
+                    Region r = registeredRegions.get(parts[partIndex].s);
+                    Component parent = r.isSubregion() ? c : c.getParent();
+                    //special case the JInternalFrameTitlePane, because it
+                    //doesn't fit the mold. very, very funky.
+                    if (r == Region.INTERNAL_FRAME_TITLE_PANE && parent != null
+                        && parent instanceof JInternalFrame.JDesktopIcon) {
+                        JInternalFrame.JDesktopIcon icon =
+                                (JInternalFrame.JDesktopIcon) parent;
+                        parent = icon.getInternalFrame();
+                    }
+                    //it was the name of a region. So far, so good. Recurse.
+                    return matches(parent, partIndex - 1);
+                }
+            }
+
+            return false;
+        }
+
+        /**
+         * Given some dot separated prefix, split on the colons that are
+         * not within quotes, and not within brackets.
+         *
+         * @param prefix
+         * @return
+         */
+        private List<String> split(String prefix) {
+            List<String> parts = new ArrayList<String>();
+            int bracketCount = 0;
+            boolean inquotes = false;
+            int lastIndex = 0;
+            for (int i = 0; i < prefix.length(); i++) {
+                char c = prefix.charAt(i);
+
+                if (c == '[') {
+                    bracketCount++;
+                    continue;
+                } else if (c == '"') {
+                    inquotes = !inquotes;
+                    continue;
+                } else if (c == ']') {
+                    bracketCount--;
+                    if (bracketCount < 0) {
+                        throw new RuntimeException(
+                                "Malformed prefix: " + prefix);
+                    }
+                    continue;
+                }
+
+                if (c == ':' && !inquotes && bracketCount == 0) {
+                    //found a character to split on.
+                    parts.add(prefix.substring(lastIndex, i));
+                    lastIndex = i + 1;
+                }
+            }
+            if (lastIndex < prefix.length() - 1 && !inquotes
+                    && bracketCount == 0) {
+                parts.add(prefix.substring(lastIndex));
+            }
+            return parts;
+
+        }
+
+        private final class Part {
+            private String s;
+            //true if this part represents a component name
+            private boolean named;
+            private Class c;
+
+            Part(String s) {
+                named = s.charAt(0) == '"' && s.charAt(s.length() - 1) == '"';
+                if (named) {
+                    this.s = s.substring(1, s.length() - 1);
+                } else {
+                    this.s = s;
+                    //TODO use a map of known regions for Synth and Swing, and
+                    //then use [classname] instead of org_class_name style
+                    try {
+                        c = Class.forName("javax.swing.J" + s);
+                    } catch (Exception e) {
+                    }
+                    try {
+                        c = Class.forName(s.replace("_", "."));
+                    } catch (Exception e) {
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Get a derived color, derived colors are shared instances and will be
+     * updated when its parent UIDefault color changes.
+     *
+     * @param uiDefaultParentName The parent UIDefault key
+     * @param hOffset The hue offset
+     * @param sOffset The saturation offset
+     * @param bOffset The brightness offset
+     * @param aOffset The alpha offset
+     * @return The stored derived color
+     */
+    public DerivedColor getDerivedColor(String uiDefaultParentName,
+                                        float hOffset, float sOffset,
+                                        float bOffset, int aOffset){
+        return getDerivedColor(uiDefaultParentName, hOffset, sOffset,
+                               bOffset, aOffset, true);
+    }
+
+    /**
+     * Get a derived color, derived colors are shared instances and will be
+     * updated when its parent UIDefault color changes.
+     *
+     * @param uiDefaultParentName The parent UIDefault key
+     * @param hOffset The hue offset
+     * @param sOffset The saturation offset
+     * @param bOffset The brightness offset
+     * @param aOffset The alpha offset
+     * @param uiResource True if the derived color should be a UIResource,
+     *        false if it should not be a UIResource
+     * @return The stored derived color
+     */
+    public DerivedColor getDerivedColor(String uiDefaultParentName,
+                                        float hOffset, float sOffset,
+                                        float bOffset, int aOffset,
+                                        boolean uiResource){
+        tmpDCKey.set(uiDefaultParentName, hOffset, sOffset, bOffset, aOffset,
+            uiResource);
+        DerivedColor color = derivedColorsMap.get(tmpDCKey);
+        if (color == null){
+            if (uiResource) {
+                color = new DerivedColor.UIResource(uiDefaultParentName,
+                        hOffset, sOffset, bOffset, aOffset);
+            } else {
+                color = new DerivedColor(uiDefaultParentName, hOffset, sOffset,
+                    bOffset, aOffset);
+            }
+            // calculate the initial value
+            color.rederiveColor();
+            // add the listener so that if the color changes we'll propogate it
+            color.addPropertyChangeListener(defaultsListener);
+            // add to the derived colors table
+            derivedColorsMap.put(new DerivedColorKey(uiDefaultParentName,
+                    hOffset, sOffset, bOffset, aOffset, uiResource),color);
+        }
+        return color;
+    }
+
+    /**
+     * Key class for derived colors
+     */
+    private class DerivedColorKey {
+        private String uiDefaultParentName;
+        private float hOffset, sOffset, bOffset;
+        private int aOffset;
+        private boolean uiResource;
+
+        DerivedColorKey(){}
+
+        DerivedColorKey(String uiDefaultParentName, float hOffset,
+                        float sOffset, float bOffset, int aOffset,
+                        boolean uiResource) {
+            set(uiDefaultParentName, hOffset, sOffset, bOffset, aOffset, uiResource);
+        }
+
+        void set (String uiDefaultParentName, float hOffset,
+                        float sOffset, float bOffset, int aOffset,
+                        boolean uiResource) {
+            this.uiDefaultParentName = uiDefaultParentName;
+            this.hOffset = hOffset;
+            this.sOffset = sOffset;
+            this.bOffset = bOffset;
+            this.aOffset = aOffset;
+            this.uiResource = uiResource;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (!(o instanceof DerivedColorKey)) return false;
+            DerivedColorKey that = (DerivedColorKey) o;
+            if (aOffset != that.aOffset) return false;
+            if (Float.compare(that.bOffset, bOffset) != 0) return false;
+            if (Float.compare(that.hOffset, hOffset) != 0) return false;
+            if (Float.compare(that.sOffset, sOffset) != 0) return false;
+            if (uiDefaultParentName != null ?
+                !uiDefaultParentName.equals(that.uiDefaultParentName) :
+                that.uiDefaultParentName != null) return false;
+            if (this.uiResource != that.uiResource) return false;
+            return true;
+        }
+
+        @Override
+        public int hashCode() {
+            int result = super.hashCode();
+            result = 31 * result + uiDefaultParentName.hashCode();
+            result = 31 * result + hOffset != +0.0f ?
+                    Float.floatToIntBits(hOffset) : 0;
+            result = 31 * result + sOffset != +0.0f ?
+                    Float.floatToIntBits(sOffset) : 0;
+            result = 31 * result + bOffset != +0.0f ?
+                    Float.floatToIntBits(bOffset) : 0;
+            result = 31 * result + aOffset;
+            result = 31 * result + (uiResource ? 1 : 0);
+            return result;
+        }
+    }
+
+    /**
+     * Listener to update derived colors on UIManager Defaults changes
+     */
+    private class DefaultsListener implements PropertyChangeListener {
+        @Override
+        public void propertyChange(PropertyChangeEvent evt) {
+            Object src = evt.getSource();
+            String key = evt.getPropertyName();
+            if (key.equals("lookAndFeel")){
+                // LAF has been installed, this is the first point at which we
+                // can access our defaults table via UIManager so before now
+                // all derived colors will be incorrect.
+                // First we need to update
+                for (DerivedColor color : derivedColorsMap.values()) {
+                    color.rederiveColor();
+                }
+            } else if (src instanceof DerivedColor && key.equals("rgb")) {
+                // derived color that is in UIManager defaults has changed
+                // update all its dependent colors. Don't worry about doing
+                // this recursively since calling rederiveColor will cause
+                // another PCE to be fired, ending up here and essentially
+                // recursing
+                DerivedColor parentColor = (DerivedColor)src;
+                String parentKey = null;
+                Set<Map.Entry<Object,Object>> entries =
+                        UIManager.getDefaults().entrySet();
+                
+                for (Map.Entry entry : entries) {
+                    Object value = entry.getValue();
+                    if (value == parentColor) {
+                        parentKey = entry.getKey().toString();
+                    }
+                }
+                
+                if (parentKey == null) {
+                    //couldn't find the DerivedColor in the UIDefaults map,
+                    //so we just bail.
+                    return;
+                }
+                
+                for (Map.Entry entry : entries) {
+                    Object value = entry.getValue();
+                    if (value instanceof DerivedColor) {
+                        DerivedColor color = (DerivedColor)entry.getValue();
+                        if (parentKey.equals(color.getUiDefaultParentName())) {
+                            color.rederiveColor();
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    private static final class PainterBorder implements Border, UIResource {
+        private Insets insets;
+        private Painter painter;
+        private String painterKey;
+        
+        PainterBorder(String painterKey, Insets insets) {
+            this.insets = insets;
+            this.painterKey = painterKey;
+        }
+        
+        @Override
+        public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) {
+            if (painter == null) {
+                painter = (Painter)UIManager.get(painterKey);
+                if (painter == null) return;
+            }
+            
+            g.translate(x, y);
+            if (g instanceof Graphics2D)
+                painter.paint((Graphics2D)g, c, w, h);
+            else {
+                BufferedImage img = new BufferedImage(w, h, TYPE_INT_ARGB);
+                Graphics2D gfx = img.createGraphics();
+                painter.paint(gfx, c, w, h);
+                gfx.dispose();
+                g.drawImage(img, x, y, null);
+                img = null;
+            }
+            g.translate(-x, -y);
+        }
+
+        @Override
+        public Insets getBorderInsets(Component c) {
+            return (Insets)insets.clone();
+        }
+
+        @Override
+        public boolean isBorderOpaque() {
+            return false;
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/DerivedColor.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,215 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import javax.swing.UIManager;
+import java.awt.Color;
+import java.beans.PropertyChangeSupport;
+import java.beans.PropertyChangeListener;
+
+/**
+ * DerivedColor - A color implementation that is derived from a UIManager
+ * defaults table color and a set of offsets. It can be rederived at any point
+ * by calling rederiveColor(). For example when its parent color changes and it
+ * value will update to reflect the new derived color. Property change events
+ * are fired for the "rgb" property when the derived color changes.
+ *
+ * @author Jasper Potts
+ */
+class DerivedColor extends Color {
+    private final PropertyChangeSupport changeSupport =
+            new PropertyChangeSupport(this);
+    private final String uiDefaultParentName;
+    private final float hOffset, sOffset, bOffset;
+    private final int aOffset;
+    private int argbValue;
+
+    DerivedColor(String uiDefaultParentName, float hOffset, float sOffset, float bOffset, int aOffset) {
+        super(0);
+        this.uiDefaultParentName = uiDefaultParentName;
+        this.hOffset = hOffset;
+        this.sOffset = sOffset;
+        this.bOffset = bOffset;
+        this.aOffset = aOffset;
+    }
+
+    public String getUiDefaultParentName() {
+        return uiDefaultParentName;
+    }
+
+    public float getHueOffset() {
+        return hOffset;
+    }
+
+    public float getSaturationOffset() {
+        return sOffset;
+    }
+
+    public float getBrightnessOffset() {
+        return bOffset;
+    }
+
+    public int getAlphaOffset() {
+        return aOffset;
+    }
+
+    /**
+     * Recalculate the derived color from the UIManager parent color and offsets
+     */
+    public void rederiveColor() {
+        int old = argbValue;
+        Color src = UIManager.getColor(uiDefaultParentName);
+        if (src != null) {
+            float[] tmp = Color.RGBtoHSB(src.getRed(), src.getGreen(), src.getBlue(), null);
+            // apply offsets
+            tmp[0] = clamp(tmp[0] + hOffset);
+            tmp[1] = clamp(tmp[1] + sOffset);
+            tmp[2] = clamp(tmp[2] + bOffset);
+            int alpha = clamp(src.getAlpha() + aOffset);
+            argbValue = (Color.HSBtoRGB(tmp[0], tmp[1], tmp[2]) & 0xFFFFFF) | (alpha << 24);
+        } else {
+            float[] tmp = new float[3];
+            tmp[0] = clamp(hOffset);
+            tmp[1] = clamp(sOffset);
+            tmp[2] = clamp(bOffset);
+            int alpha = clamp(aOffset);
+            argbValue = (Color.HSBtoRGB(tmp[0], tmp[1], tmp[2]) & 0xFFFFFF) | (alpha << 24);
+        }
+        changeSupport.firePropertyChange("rgb", old, argbValue);
+    }
+
+    /**
+     * Returns the RGB value representing the color in the default sRGB {@link java.awt.image.ColorModel}. (Bits 24-31
+     * are alpha, 16-23 are red, 8-15 are green, 0-7 are blue).
+     *
+     * @return the RGB value of the color in the default sRGB <code>ColorModel</code>.
+     * @see java.awt.image.ColorModel#getRGBdefault
+     * @see #getRed
+     * @see #getGreen
+     * @see #getBlue
+     * @since JDK1.0
+     */
+    @Override public int getRGB() {
+        return argbValue;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof DerivedColor)) return false;
+        DerivedColor that = (DerivedColor) o;
+        if (aOffset != that.aOffset) return false;
+        if (Float.compare(that.bOffset, bOffset) != 0) return false;
+        if (Float.compare(that.hOffset, hOffset) != 0) return false;
+        if (Float.compare(that.sOffset, sOffset) != 0) return false;
+        if (!uiDefaultParentName.equals(that.uiDefaultParentName)) return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = uiDefaultParentName.hashCode();
+        result = 31 * result + hOffset != +0.0f ?
+                Float.floatToIntBits(hOffset) : 0;
+        result = 31 * result + sOffset != +0.0f ?
+                Float.floatToIntBits(sOffset) : 0;
+        result = 31 * result + bOffset != +0.0f ?
+                Float.floatToIntBits(bOffset) : 0;
+        result = 31 * result + aOffset;
+        return result;
+    }
+
+     /**
+     * Add a PropertyChangeListener to the listener list.
+     * The listener is registered for all properties.
+     * The same listener object may be added more than once, and will be called
+     * as many times as it is added.
+     * If <code>listener</code> is null, no exception is thrown and no action
+     * is taken.
+     *
+     * @param listener  The PropertyChangeListener to be added
+     */
+    public void addPropertyChangeListener(PropertyChangeListener listener) {
+        changeSupport.addPropertyChangeListener(listener);
+    }
+
+    /**
+     * Remove a PropertyChangeListener from the listener list.
+     * This removes a PropertyChangeListener that was registered
+     * for all properties.
+     * If <code>listener</code> was added more than once to the same event
+     * source, it will be notified one less time after being removed.
+     * If <code>listener</code> is null, or was never added, no exception is
+     * thrown and no action is taken.
+     *
+     * @param listener  The PropertyChangeListener to be removed
+     */
+    public void removePropertyChangeListener(PropertyChangeListener listener) {
+        changeSupport.removePropertyChangeListener(listener);
+    }
+
+    private float clamp(float value) {
+        if (value < 0) {
+            value = 0;
+        } else if (value > 1) {
+            value = 1;
+        }
+        return value;
+    }
+
+    private int clamp(int value) {
+        if (value < 0) {
+            value = 0;
+        } else if (value > 255) {
+            value = 255;
+        }
+        return value;
+    }
+
+    /**
+     * Returns a string representation of this <code>Color</code>. This method
+     * is intended to be used only for debugging purposes. The content and
+     * format of the returned string might vary between implementations. The
+     * returned string might be empty but cannot be <code>null</code>.
+     *
+     * @return a String representation of this <code>Color</code>.
+     */
+    @Override
+    public String toString() {
+        Color src = UIManager.getColor(uiDefaultParentName);
+        String s = "DerivedColor(color=" + getRed() + "," + getGreen() + "," + getBlue() +
+                " parent=" + uiDefaultParentName +
+                " offsets=" + getHueOffset() + "," + getSaturationOffset() + ","
+                + getBrightnessOffset() + "," + getAlphaOffset();
+        return src == null ? s : s + " pColor=" + src.getRed() + "," + src.getGreen() + "," + src.getBlue();
+    }
+
+    static class UIResource extends DerivedColor implements javax.swing.plaf.UIResource {
+        UIResource(String uiDefaultParentName, float hOffset, float sOffset,
+                   float bOffset, int aOffset) {
+            super(uiDefaultParentName, hOffset, sOffset, bOffset, aOffset);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/DropShadowEffect.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,128 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+import java.util.Arrays;
+
+/**
+ * DropShadowEffect - This effect currently only works with ARGB type buffered
+ * images.
+ *
+ * @author Created by Jasper Potts (Jun 18, 2007)
+ */
+class DropShadowEffect extends ShadowEffect {
+
+    // =================================================================================================================
+    // Effect Methods
+
+    /**
+     * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted
+     * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be
+     * painted. OVER means the result of apply effect should be painted over the src image.
+     *
+     * @return The effect type
+     */
+    @Override
+    EffectType getEffectType() {
+        return EffectType.UNDER;
+    }
+
+    /**
+     * Apply the effect to the src image generating the result . The result image may or may not contain the source
+     * image depending on what the effect type is.
+     *
+     * @param src The source image for applying the effect to
+     * @param dst The destination image to paint effect result into. If this is null then a new image will be created
+     * @param w   The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than
+     *            the area the need effect applied to it
+     * @param h   The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than
+     *            the area the need effect applied to it
+     * @return Image with the result of the effect
+     */
+    @Override
+    BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h) {
+        if (src == null || src.getType() != BufferedImage.TYPE_INT_ARGB){
+            throw new IllegalArgumentException("Effect only works with " +
+                    "source images of type BufferedImage.TYPE_INT_ARGB.");
+        }
+        if (dst != null && dst.getType() != BufferedImage.TYPE_INT_ARGB){
+            throw new IllegalArgumentException("Effect only works with " +
+                    "destination images of type BufferedImage.TYPE_INT_ARGB.");
+        }
+        // calculate offset
+        double trangleAngle = Math.toRadians(angle - 90);
+        int offsetX = (int) (Math.sin(trangleAngle) * distance);
+        int offsetY = (int) (Math.cos(trangleAngle) * distance);
+        // clac expanded size
+        int tmpOffX = offsetX + size;
+        int tmpOffY = offsetX + size;
+        int tmpW = w + offsetX + size + size;
+        int tmpH = h + offsetX + size;
+        // create tmp buffers
+        int[] lineBuf = getArrayCache().getTmpIntArray(w);
+        byte[] tmpBuf1 = getArrayCache().getTmpByteArray1(tmpW * tmpH);
+        Arrays.fill(tmpBuf1, (byte) 0x00);
+        byte[] tmpBuf2 = getArrayCache().getTmpByteArray2(tmpW * tmpH);
+        // extract src image alpha channel and inverse and offset
+        Raster srcRaster = src.getRaster();
+        for (int y = 0; y < h; y++) {
+            int dy = (y + tmpOffY);
+            int offset = dy * tmpW;
+            srcRaster.getDataElements(0, y, w, 1, lineBuf);
+            for (int x = 0; x < w; x++) {
+                int dx = x + tmpOffX;
+                tmpBuf1[offset + dx] = (byte) ((lineBuf[x] & 0xFF000000) >>> 24);
+            }
+        }
+        // blur
+        float[] kernel = EffectUtils.createGaussianKernel(size);
+        EffectUtils.blur(tmpBuf1, tmpBuf2, tmpW, tmpH, kernel, size); // horizontal pass
+        EffectUtils.blur(tmpBuf2, tmpBuf1, tmpH, tmpW, kernel, size);// vertical pass
+        //rescale
+        float spread = Math.min(1 / (1 - (0.01f * this.spread)), 255);
+        for (int i = 0; i < tmpBuf1.length; i++) {
+            int val = (int) (((int) tmpBuf1[i] & 0xFF) * spread);
+            tmpBuf1[i] = (val > 255) ? (byte) 0xFF : (byte) val;
+        }
+        // create color image with shadow color and greyscale image as alpha
+        if (dst == null) dst = new BufferedImage(w, h,
+                BufferedImage.TYPE_INT_ARGB);
+        WritableRaster shadowRaster = dst.getRaster();
+        int red = color.getRed(), green = color.getGreen(), blue = color.getBlue();
+        for (int y = 0; y < h; y++) {
+            int srcY = y + tmpOffY;
+            int shadowOffset = (srcY - offsetY) * tmpW;
+            for (int x = 0; x < w; x++) {
+                int srcX = x + tmpOffX;
+                lineBuf[x] = tmpBuf1[shadowOffset + (srcX - offsetX)] << 24 | red << 16 | green << 8 | blue;
+            }
+            shadowRaster.setDataElements(0, y, w, 1, lineBuf);
+        }
+        return dst;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/Effect.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,133 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import sun.awt.AppContext;
+
+import java.awt.image.BufferedImage;
+import java.lang.ref.SoftReference;
+
+/**
+ * Effect
+ *
+ * @author Created by Jasper Potts (Jun 18, 2007)
+ */
+abstract class Effect {
+    enum EffectType {
+        UNDER, BLENDED, OVER
+    }
+
+    // =================================================================================================================
+    // Abstract Methods
+
+    /**
+     * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted
+     * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be
+     * painted. OVER means the result of apply effect should be painted over the src image.
+     *
+     * @return The effect type
+     */
+    abstract EffectType getEffectType();
+
+    /**
+     * Get the opacity to use to paint the result effected image if the EffectType is UNDER or OVER.
+     *
+     * @return The opactity for the effect, 0.0f -> 1.0f
+     */
+    abstract float getOpacity();
+
+    /**
+     * Apply the effect to the src image generating the result . The result image may or may not contain the source
+     * image depending on what the effect type is.
+     *
+     * @param src The source image for applying the effect to
+     * @param dst The dstination image to paint effect result into. If this is null then a new image will be created
+     * @param w   The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than
+     *            the area the need effect applied to it
+     * @param h   The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than
+     *            the area the need effect applied to it
+     * @return The result of appl
+     */
+    abstract BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h);
+
+    // =================================================================================================================
+    // Static data cache
+
+    protected static ArrayCache getArrayCache() {
+        ArrayCache cache = (ArrayCache)AppContext.getAppContext().get(ArrayCache.class);
+        if (cache == null){
+            cache = new ArrayCache();
+            AppContext.getAppContext().put(ArrayCache.class,cache);
+        }
+        return cache;
+    }
+
+    protected static class ArrayCache {
+        private SoftReference<int[]> tmpIntArray = null;
+        private SoftReference<byte[]> tmpByteArray1 = null;
+        private SoftReference<byte[]> tmpByteArray2 = null;
+        private SoftReference<byte[]> tmpByteArray3 = null;
+
+        protected int[] getTmpIntArray(int size) {
+            int[] tmp;
+            if (tmpIntArray == null || (tmp = tmpIntArray.get()) == null || tmp.length < size) {
+                // create new array
+                tmp = new int[size];
+                tmpIntArray = new SoftReference<int[]>(tmp);
+            }
+            return tmp;
+        }
+
+        protected byte[] getTmpByteArray1(int size) {
+            byte[] tmp;
+            if (tmpByteArray1 == null || (tmp = tmpByteArray1.get()) == null || tmp.length < size) {
+                // create new array
+                tmp = new byte[size];
+                tmpByteArray1 = new SoftReference<byte[]>(tmp);
+            }
+            return tmp;
+        }
+
+        protected byte[] getTmpByteArray2(int size) {
+            byte[] tmp;
+            if (tmpByteArray2 == null || (tmp = tmpByteArray2.get()) == null || tmp.length < size) {
+                // create new array
+                tmp = new byte[size];
+                tmpByteArray2 = new SoftReference<byte[]>(tmp);
+            }
+            return tmp;
+        }
+
+        protected byte[] getTmpByteArray3(int size) {
+            byte[] tmp;
+            if (tmpByteArray3 == null || (tmp = tmpByteArray3.get()) == null || tmp.length < size) {
+                // create new array
+                tmp = new byte[size];
+                tmpByteArray3 = new SoftReference<byte[]>(tmp);
+            }
+            return tmp;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/EffectUtils.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,426 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.AlphaComposite;
+import java.awt.Graphics2D;
+import java.awt.Transparency;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.image.BufferedImage;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+import java.awt.image.ColorModel;
+
+/**
+ * EffectUtils
+ *
+ * @author Created by Jasper Potts (Jun 18, 2007)
+ */
+class EffectUtils {
+
+    /**
+     * Clear a transparent image to 100% transparent
+     *
+     * @param img The image to clear
+     */
+    static void clearImage(BufferedImage img) {
+        Graphics2D g2 = img.createGraphics();
+        g2.setComposite(AlphaComposite.Clear);
+        g2.fillRect(0, 0, img.getWidth(), img.getHeight());
+        g2.dispose();
+    }
+
+    // =================================================================================================================
+    // Blur
+
+    /**
+     * Apply Gaussian Blur to Image
+     *
+     * @param src    The image tp
+     * @param dst    The destination image to draw blured src image into, null if you want a new one created
+     * @param radius The blur kernel radius
+     * @return The blured image
+     */
+    static BufferedImage gaussianBlur(BufferedImage src, BufferedImage dst, int radius) {
+        int width = src.getWidth();
+        int height = src.getHeight();
+        if (dst == null || dst.getWidth() != width || dst.getHeight() != height || src.getType() != dst.getType()) {
+            dst = createColorModelCompatibleImage(src);
+        }
+        float[] kernel = createGaussianKernel(radius);
+        if (src.getType() == BufferedImage.TYPE_INT_ARGB) {
+            int[] srcPixels = new int[width * height];
+            int[] dstPixels = new int[width * height];
+            getPixels(src, 0, 0, width, height, srcPixels);
+            // horizontal pass
+            blur(srcPixels, dstPixels, width, height, kernel, radius);
+            // vertical pass
+            //noinspection SuspiciousNameCombination
+            blur(dstPixels, srcPixels, height, width, kernel, radius);
+            // the result is now stored in srcPixels due to the 2nd pass
+            setPixels(dst, 0, 0, width, height, srcPixels);
+        } else if (src.getType() == BufferedImage.TYPE_BYTE_GRAY) {
+            byte[] srcPixels = new byte[width * height];
+            byte[] dstPixels = new byte[width * height];
+            getPixels(src, 0, 0, width, height, srcPixels);
+            // horizontal pass
+            blur(srcPixels, dstPixels, width, height, kernel, radius);
+            // vertical pass
+            //noinspection SuspiciousNameCombination
+            blur(dstPixels, srcPixels, height, width, kernel, radius);
+            // the result is now stored in srcPixels due to the 2nd pass
+            setPixels(dst, 0, 0, width, height, srcPixels);
+        } else {
+            throw new IllegalArgumentException("EffectUtils.gaussianBlur() src image is not a supported type, type=[" +
+                    src.getType() + "]");
+        }
+        return dst;
+    }
+
+    /**
+     * <p>Blurs the source pixels into the destination pixels. The force of the blur is specified by the radius which
+     * must be greater than 0.</p> <p>The source and destination pixels arrays are expected to be in the INT_ARGB
+     * format.</p> <p>After this method is executed, dstPixels contains a transposed and filtered copy of
+     * srcPixels.</p>
+     *
+     * @param srcPixels the source pixels
+     * @param dstPixels the destination pixels
+     * @param width     the width of the source picture
+     * @param height    the height of the source picture
+     * @param kernel    the kernel of the blur effect
+     * @param radius    the radius of the blur effect
+     */
+    private static void blur(int[] srcPixels, int[] dstPixels,
+                             int width, int height,
+                             float[] kernel, int radius) {
+        float a;
+        float r;
+        float g;
+        float b;
+
+        int ca;
+        int cr;
+        int cg;
+        int cb;
+
+        for (int y = 0; y < height; y++) {
+            int index = y;
+            int offset = y * width;
+
+            for (int x = 0; x < width; x++) {
+                a = r = g = b = 0.0f;
+
+                for (int i = -radius; i <= radius; i++) {
+                    int subOffset = x + i;
+                    if (subOffset < 0 || subOffset >= width) {
+                        subOffset = (x + width) % width;
+                    }
+
+                    int pixel = srcPixels[offset + subOffset];
+                    float blurFactor = kernel[radius + i];
+
+                    a += blurFactor * ((pixel >> 24) & 0xFF);
+                    r += blurFactor * ((pixel >> 16) & 0xFF);
+                    g += blurFactor * ((pixel >> 8) & 0xFF);
+                    b += blurFactor * ((pixel) & 0xFF);
+                }
+
+                ca = (int) (a + 0.5f);
+                cr = (int) (r + 0.5f);
+                cg = (int) (g + 0.5f);
+                cb = (int) (b + 0.5f);
+
+                dstPixels[index] = ((ca > 255 ? 255 : ca) << 24) |
+                        ((cr > 255 ? 255 : cr) << 16) |
+                        ((cg > 255 ? 255 : cg) << 8) |
+                        (cb > 255 ? 255 : cb);
+                index += height;
+            }
+        }
+    }
+
+    /**
+     * <p>Blurs the source pixels into the destination pixels. The force of the blur is specified by the radius which
+     * must be greater than 0.</p> <p>The source and destination pixels arrays are expected to be in the BYTE_GREY
+     * format.</p> <p>After this method is executed, dstPixels contains a transposed and filtered copy of
+     * srcPixels.</p>
+     *
+     * @param srcPixels the source pixels
+     * @param dstPixels the destination pixels
+     * @param width     the width of the source picture
+     * @param height    the height of the source picture
+     * @param kernel    the kernel of the blur effect
+     * @param radius    the radius of the blur effect
+     */
+    static void blur(byte[] srcPixels, byte[] dstPixels,
+                            int width, int height,
+                            float[] kernel, int radius) {
+        float p;
+        int cp;
+        for (int y = 0; y < height; y++) {
+            int index = y;
+            int offset = y * width;
+            for (int x = 0; x < width; x++) {
+                p = 0.0f;
+                for (int i = -radius; i <= radius; i++) {
+                    int subOffset = x + i;
+//                    if (subOffset < 0) subOffset = 0;
+//                    if (subOffset >= width) subOffset = width-1;
+                    if (subOffset < 0 || subOffset >= width) {
+                        subOffset = (x + width) % width;
+                    }
+                    int pixel = srcPixels[offset + subOffset] & 0xFF;
+                    float blurFactor = kernel[radius + i];
+                    p += blurFactor * pixel;
+                }
+                cp = (int) (p + 0.5f);
+                dstPixels[index] = (byte) (cp > 255 ? 255 : cp);
+                index += height;
+            }
+        }
+    }
+
+    static float[] createGaussianKernel(int radius) {
+        if (radius < 1) {
+            throw new IllegalArgumentException("Radius must be >= 1");
+        }
+
+        float[] data = new float[radius * 2 + 1];
+
+        float sigma = radius / 3.0f;
+        float twoSigmaSquare = 2.0f * sigma * sigma;
+        float sigmaRoot = (float) Math.sqrt(twoSigmaSquare * Math.PI);
+        float total = 0.0f;
+
+        for (int i = -radius; i <= radius; i++) {
+            float distance = i * i;
+            int index = i + radius;
+            data[index] = (float) Math.exp(-distance / twoSigmaSquare) / sigmaRoot;
+            total += data[index];
+        }
+
+        for (int i = 0; i < data.length; i++) {
+            data[i] /= total;
+        }
+
+        return data;
+    }
+
+    // =================================================================================================================
+    // Get/Set Pixels helper methods
+
+    /**
+     * <p>Returns an array of pixels, stored as integers, from a <code>BufferedImage</code>. The pixels are grabbed from
+     * a rectangular area defined by a location and two dimensions. Calling this method on an image of type different
+     * from <code>BufferedImage.TYPE_INT_ARGB</code> and <code>BufferedImage.TYPE_INT_RGB</code> will unmanage the
+     * image.</p>
+     *
+     * @param img    the source image
+     * @param x      the x location at which to start grabbing pixels
+     * @param y      the y location at which to start grabbing pixels
+     * @param w      the width of the rectangle of pixels to grab
+     * @param h      the height of the rectangle of pixels to grab
+     * @param pixels a pre-allocated array of pixels of size w*h; can be null
+     * @return <code>pixels</code> if non-null, a new array of integers otherwise
+     * @throws IllegalArgumentException is <code>pixels</code> is non-null and of length &lt; w*h
+     */
+    static byte[] getPixels(BufferedImage img,
+                                   int x, int y, int w, int h, byte[] pixels) {
+        if (w == 0 || h == 0) {
+            return new byte[0];
+        }
+
+        if (pixels == null) {
+            pixels = new byte[w * h];
+        } else if (pixels.length < w * h) {
+            throw new IllegalArgumentException("pixels array must have a length >= w*h");
+        }
+
+        int imageType = img.getType();
+        if (imageType == BufferedImage.TYPE_BYTE_GRAY) {
+            Raster raster = img.getRaster();
+            return (byte[]) raster.getDataElements(x, y, w, h, pixels);
+        } else {
+            throw new IllegalArgumentException("Only type BYTE_GRAY is supported");
+        }
+    }
+
+    /**
+     * <p>Writes a rectangular area of pixels in the destination <code>BufferedImage</code>. Calling this method on an
+     * image of type different from <code>BufferedImage.TYPE_INT_ARGB</code> and <code>BufferedImage.TYPE_INT_RGB</code>
+     * will unmanage the image.</p>
+     *
+     * @param img    the destination image
+     * @param x      the x location at which to start storing pixels
+     * @param y      the y location at which to start storing pixels
+     * @param w      the width of the rectangle of pixels to store
+     * @param h      the height of the rectangle of pixels to store
+     * @param pixels an array of pixels, stored as integers
+     * @throws IllegalArgumentException is <code>pixels</code> is non-null and of length &lt; w*h
+     */
+    static void setPixels(BufferedImage img,
+                                 int x, int y, int w, int h, byte[] pixels) {
+        if (pixels == null || w == 0 || h == 0) {
+            return;
+        } else if (pixels.length < w * h) {
+            throw new IllegalArgumentException("pixels array must have a length >= w*h");
+        }
+        int imageType = img.getType();
+        if (imageType == BufferedImage.TYPE_BYTE_GRAY) {
+            WritableRaster raster = img.getRaster();
+            raster.setDataElements(x, y, w, h, pixels);
+        } else {
+            throw new IllegalArgumentException("Only type BYTE_GRAY is supported");
+        }
+    }
+
+    /**
+     * <p>Returns an array of pixels, stored as integers, from a
+     * <code>BufferedImage</code>. The pixels are grabbed from a rectangular
+     * area defined by a location and two dimensions. Calling this method on
+     * an image of type different from <code>BufferedImage.TYPE_INT_ARGB</code>
+     * and <code>BufferedImage.TYPE_INT_RGB</code> will unmanage the image.</p>
+     *
+     * @param img the source image
+     * @param x the x location at which to start grabbing pixels
+     * @param y the y location at which to start grabbing pixels
+     * @param w the width of the rectangle of pixels to grab
+     * @param h the height of the rectangle of pixels to grab
+     * @param pixels a pre-allocated array of pixels of size w*h; can be null
+     * @return <code>pixels</code> if non-null, a new array of integers
+     *   otherwise
+     * @throws IllegalArgumentException is <code>pixels</code> is non-null and
+     *   of length &lt; w*h
+     */
+    public static int[] getPixels(BufferedImage img,
+                                  int x, int y, int w, int h, int[] pixels) {
+        if (w == 0 || h == 0) {
+            return new int[0];
+        }
+
+        if (pixels == null) {
+            pixels = new int[w * h];
+        } else if (pixels.length < w * h) {
+            throw new IllegalArgumentException("pixels array must have a length" +
+                                               " >= w*h");
+        }
+
+        int imageType = img.getType();
+        if (imageType == BufferedImage.TYPE_INT_ARGB ||
+            imageType == BufferedImage.TYPE_INT_RGB) {
+            Raster raster = img.getRaster();
+            return (int[]) raster.getDataElements(x, y, w, h, pixels);
+        }
+
+        // Unmanages the image
+        return img.getRGB(x, y, w, h, pixels, 0, w);
+    }
+
+    /**
+     * <p>Writes a rectangular area of pixels in the destination
+     * <code>BufferedImage</code>. Calling this method on
+     * an image of type different from <code>BufferedImage.TYPE_INT_ARGB</code>
+     * and <code>BufferedImage.TYPE_INT_RGB</code> will unmanage the image.</p>
+     *
+     * @param img the destination image
+     * @param x the x location at which to start storing pixels
+     * @param y the y location at which to start storing pixels
+     * @param w the width of the rectangle of pixels to store
+     * @param h the height of the rectangle of pixels to store
+     * @param pixels an array of pixels, stored as integers
+     * @throws IllegalArgumentException is <code>pixels</code> is non-null and
+     *   of length &lt; w*h
+     */
+    public static void setPixels(BufferedImage img,
+                                 int x, int y, int w, int h, int[] pixels) {
+        if (pixels == null || w == 0 || h == 0) {
+            return;
+        } else if (pixels.length < w * h) {
+            throw new IllegalArgumentException("pixels array must have a length" +
+                                               " >= w*h");
+        }
+
+        int imageType = img.getType();
+        if (imageType == BufferedImage.TYPE_INT_ARGB ||
+            imageType == BufferedImage.TYPE_INT_RGB) {
+            WritableRaster raster = img.getRaster();
+            raster.setDataElements(x, y, w, h, pixels);
+        } else {
+            // Unmanages the image
+            img.setRGB(x, y, w, h, pixels, 0, w);
+        }
+    }
+
+    /**
+     * <p>Returns a new <code>BufferedImage</code> using the same color model
+     * as the image passed as a parameter. The returned image is only compatible
+     * with the image passed as a parameter. This does not mean the returned
+     * image is compatible with the hardware.</p>
+     *
+     * @param image the reference image from which the color model of the new
+     *   image is obtained
+     * @return a new <code>BufferedImage</code>, compatible with the color model
+     *   of <code>image</code>
+     */
+    public static BufferedImage createColorModelCompatibleImage(BufferedImage image) {
+        ColorModel cm = image.getColorModel();
+        return new BufferedImage(cm,
+            cm.createCompatibleWritableRaster(image.getWidth(),
+                                              image.getHeight()),
+            cm.isAlphaPremultiplied(), null);
+    }
+
+    /**
+     * <p>Returns a new translucent compatible image of the specified width and
+     * height. That is, the returned <code>BufferedImage</code> is compatible with
+     * the graphics hardware. If the method is called in a headless
+     * environment, then the returned BufferedImage will be compatible with
+     * the source image.</p>
+     *
+     * @param width the width of the new image
+     * @param height the height of the new image
+     * @return a new translucent compatible <code>BufferedImage</code> of the
+     *   specified width and height
+     */
+    public static BufferedImage createCompatibleTranslucentImage(int width,
+                                                                 int height) {
+        return isHeadless() ?
+                new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB) :
+                getGraphicsConfiguration().createCompatibleImage(width, height,
+                                                   Transparency.TRANSLUCENT);
+    }
+
+    private static boolean isHeadless() {
+        return GraphicsEnvironment.isHeadless();
+    }
+
+    // Returns the graphics configuration for the primary screen
+    private static GraphicsConfiguration getGraphicsConfiguration() {
+        return GraphicsEnvironment.getLocalGraphicsEnvironment().
+                    getDefaultScreenDevice().getDefaultConfiguration();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/ImageCache.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,217 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.GraphicsConfiguration;
+import java.awt.Image;
+import java.lang.ref.ReferenceQueue;
+import java.lang.ref.SoftReference;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+/**
+ * ImageCache - A fixed pixel count sized cache of Images keyed by arbitrary set of arguments. All images are held with
+ * SoftReferences so they will be dropped by the GC if heap memory gets tight. When our size hits max pixel count least
+ * recently requested images are removed first.
+ *
+ * @author Created by Jasper Potts (Aug 7, 2007)
+ */
+class ImageCache {
+    // Ordered Map keyed by args hash, ordered by most recent accessed entry.
+    private final LinkedHashMap<Integer, PixelCountSoftReference> map =
+            new LinkedHashMap<Integer, PixelCountSoftReference>(16, 0.75f, true);
+    // Maximum number of pixels to cache, this is used if maxCount
+    private final int maxPixelCount;
+    // Maximum cached image size in pxiels
+    private final int maxSingleImagePixelSize;
+    // The current number of pixels stored in the cache
+    private int currentPixelCount = 0;
+    // Lock for concurrent access to map
+    private ReadWriteLock lock = new ReentrantReadWriteLock();
+    // Reference queue for tracking lost softreferences to images in the cache
+    private ReferenceQueue<Image> referenceQueue = new ReferenceQueue<Image>();
+    // Singleton Instance
+    private static final ImageCache instance = new ImageCache();
+
+
+    /** Get static singleton instance */
+    static ImageCache getInstance() {
+        return instance;
+    }
+
+    public ImageCache() {
+        this.maxPixelCount = (8 * 1024 * 1024) / 4; // 8Mb of pixels
+        this.maxSingleImagePixelSize = 300 * 300;
+    }
+
+    public ImageCache(int maxPixelCount, int maxSingleImagePixelSize) {
+        this.maxPixelCount = maxPixelCount;
+        this.maxSingleImagePixelSize = maxSingleImagePixelSize;
+    }
+
+    /** Clear the cache */
+    public void flush() {
+        lock.readLock().lock();
+        try {
+            map.clear();
+        } finally {
+            lock.readLock().unlock();
+        }
+    }
+
+    /**
+     * Check if the image size is to big to be stored in the cache
+     *
+     * @param w The image width
+     * @param h The image height
+     * @return True if the image size is less than max
+     */
+    public boolean isImageCachable(int w, int h) {
+        return (w * h) < maxSingleImagePixelSize;
+    }
+
+    /**
+     * Get the cached image for given keys
+     *
+     * @param config The graphics configuration, needed if cached image is a Volatile Image. Used as part of cache key
+     * @param w      The image width, used as part of cache key
+     * @param h      The image height, used as part of cache key
+     * @param args   Other arguments to use as part of the cache key
+     * @return Returns the cached Image, or null there is no cached image for key
+     */
+    public Image getImage(GraphicsConfiguration config, int w, int h, Object... args) {
+        lock.readLock().lock();
+        try {
+            PixelCountSoftReference ref = map.get(hash(config, w, h, args));
+            // check reference has not been lost and the key truly matches, in case of false positive hash match
+            if (ref != null && ref.equals(config,w, h, args)) {
+                return ref.get();
+            } else {
+                return null;
+            }
+        } finally {
+            lock.readLock().unlock();
+        }
+    }
+
+    /**
+     * Sets the cached image for the specified constraints.
+     *
+     * @param image  The image to store in cache
+     * @param config The graphics configuration, needed if cached image is a Volatile Image. Used as part of cache key
+     * @param w      The image width, used as part of cache key
+     * @param h      The image height, used as part of cache key
+     * @param args   Other arguments to use as part of the cache key
+     * @return true if the image could be cached or false if the image is too big
+     */
+    public boolean setImage(Image image, GraphicsConfiguration config, int w, int h, Object... args) {
+        if (!isImageCachable(w, h)) return false;
+        int hash = hash(config, w, h, args);
+        lock.writeLock().lock();
+        try {
+            PixelCountSoftReference ref = map.get(hash);
+            // check if currently in map
+            if (ref != null && ref.get() == image) {
+                return true;
+            }
+            // clear out old
+            if (ref != null) {
+                currentPixelCount -= ref.pixelCount;
+                map.remove(hash);
+            }
+            // add new image to pixel count
+            int newPixelCount = image.getWidth(null) * image.getHeight(null);
+            currentPixelCount += newPixelCount;
+            // clean out lost references if not enough space
+            if (currentPixelCount > maxPixelCount) {
+                while ((ref = (PixelCountSoftReference)referenceQueue.poll()) != null){
+                    //reference lost
+                    map.remove(ref.hash);
+                    currentPixelCount -= ref.pixelCount;
+                }
+            }
+            // remove old items till there is enough free space
+            if (currentPixelCount > maxPixelCount) {
+                Iterator<Map.Entry<Integer, PixelCountSoftReference>> mapIter = map.entrySet().iterator();
+                while ((currentPixelCount > maxPixelCount) && mapIter.hasNext()) {
+                    Map.Entry<Integer, PixelCountSoftReference> entry = mapIter.next();
+                    mapIter.remove();
+                    Image img = entry.getValue().get();
+                    if (img != null) img.flush();
+                    currentPixelCount -= entry.getValue().pixelCount;
+                }
+            }
+            // finaly put new in map
+            map.put(hash, new PixelCountSoftReference(image, referenceQueue, newPixelCount,hash, config, w, h, args));
+            return true;
+        } finally {
+            lock.writeLock().unlock();
+        }
+    }
+
+    /** Create a unique hash from all the input */
+    private int hash(GraphicsConfiguration config, int w, int h, Object ... args) {
+        int hash;
+        hash = (config != null ? config.hashCode() : 0);
+        hash = 31 * hash + w;
+        hash = 31 * hash + h;
+        hash = 31 * hash + Arrays.deepHashCode(args);
+        return hash;
+    }
+
+
+    /** Extended SoftReference that stores the pixel count even after the image is lost */
+    private static class PixelCountSoftReference extends SoftReference<Image> {
+        private final int pixelCount;
+        private final int hash;
+        // key parts
+        private final GraphicsConfiguration config;
+        private final int w;
+        private final int h;
+        private final Object[] args;
+
+        public PixelCountSoftReference(Image referent, ReferenceQueue<? super Image> q, int pixelCount, int hash,
+                                       GraphicsConfiguration config, int w, int h, Object[] args) {
+            super(referent, q);
+            this.pixelCount = pixelCount;
+            this.hash = hash;
+            this.config = config;
+            this.w = w;
+            this.h = h;
+            this.args = args;
+        }
+
+        public boolean equals (GraphicsConfiguration config, int w, int h, Object[] args){
+            return config == this.config &&
+                            w == this.w &&
+                            h == this.h &&
+                            Arrays.equals(args, this.args);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/ImageScalingHelper.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,280 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+
+/**
+ * ImageScalingHelper
+ *
+ * @author Created by Jasper Potts (Aug 8, 2007)
+ */
+class ImageScalingHelper {
+
+    /** Enumeration for the types of painting this class can handle. */
+    enum PaintType {
+        /**
+         * Painting type indicating the image should be centered in the space provided.  When used the <code>mask</code>
+         * is ignored.
+         */
+        CENTER,
+
+        /**
+         * Painting type indicating the image should be tiled across the specified width and height.  When used the
+         * <code>mask</code> is ignored.
+         */
+        TILE,
+
+        /**
+         * Painting type indicating the image should be split into nine regions with the top, left, bottom and right
+         * areas stretched.
+         */
+        PAINT9_STRETCH,
+
+        /**
+         * Painting type indicating the image should be split into nine regions with the top, left, bottom and right
+         * areas tiled.
+         */
+        PAINT9_TILE
+    }
+
+    ;
+
+    private static final Insets EMPTY_INSETS = new Insets(0, 0, 0, 0);
+
+    static final int PAINT_TOP_LEFT = 1;
+    static final int PAINT_TOP = 2;
+    static final int PAINT_TOP_RIGHT = 4;
+    static final int PAINT_LEFT = 8;
+    static final int PAINT_CENTER = 16;
+    static final int PAINT_RIGHT = 32;
+    static final int PAINT_BOTTOM_RIGHT = 64;
+    static final int PAINT_BOTTOM = 128;
+    static final int PAINT_BOTTOM_LEFT = 256;
+    /**
+     * Specifies that all regions should be painted.  If this is set any other regions specified will not be painted.
+     * For example PAINT_ALL | PAINT_CENTER will paint all but the center.
+     */
+    static final int PAINT_ALL = 512;
+
+    /**
+     * Paints using the algorightm specified by <code>paintType</code>.
+     *
+     * @param g         Graphics to render to
+     * @param x         X-coordinate
+     * @param y         Y-coordinate
+     * @param w         Width to render to
+     * @param h         Height to render to
+     * @param image     Image to render from, if <code>null</code> this method will do nothing
+     * @param sInsets   Insets specifying the portion of the image that will be stretched or tiled, if <code>null</code>
+     *                  empty <code>Insets</code> will be used.
+     * @param dInsets   Destination insets specifying the portion of the image will be stretched or tiled, if
+     *                  <code>null</code> empty <code>Insets</code> will be used.
+     * @param paintType Specifies what type of algorithm to use in painting
+     * @param mask      Specifies portion of image to render, if <code>PAINT_ALL</code> is specified, any other regions
+     *                  specified will not be painted, for example PAINT_ALL | PAINT_CENTER paints everything but the
+     *                  center.
+     */
+    public static void paint(Graphics g, int x, int y, int w, int h,
+                      Image image, Insets sInsets,
+                      Insets dInsets, PaintType paintType, int mask) {
+        if (image == null || image.getWidth(null) <= 0 || image.getHeight(null) <= 0) {
+            return;
+        }
+        if (sInsets == null) {
+            sInsets = EMPTY_INSETS;
+        }
+        if (dInsets == null) {
+            dInsets = EMPTY_INSETS;
+        }
+        int iw = image.getWidth(null);
+        int ih = image.getHeight(null);
+
+        if (paintType == PaintType.CENTER) {
+            // Center the image
+            g.drawImage(image, x + (w - iw) / 2,
+                    y + (h - ih) / 2, null);
+        } else if (paintType == PaintType.TILE) {
+            // Tile the image
+            int lastIY = 0;
+            for (int yCounter = y, maxY = y + h; yCounter < maxY;
+                 yCounter += (ih - lastIY), lastIY = 0) {
+                int lastIX = 0;
+                for (int xCounter = x, maxX = x + w; xCounter < maxX;
+                     xCounter += (iw - lastIX), lastIX = 0) {
+                    int dx2 = Math.min(maxX, xCounter + iw - lastIX);
+                    int dy2 = Math.min(maxY, yCounter + ih - lastIY);
+                    g.drawImage(image, xCounter, yCounter, dx2, dy2,
+                            lastIX, lastIY, lastIX + dx2 - xCounter,
+                            lastIY + dy2 - yCounter, null);
+                }
+            }
+        } else {
+            int st = sInsets.top;
+            int sl = sInsets.left;
+            int sb = sInsets.bottom;
+            int sr = sInsets.right;
+
+            int dt = dInsets.top;
+            int dl = dInsets.left;
+            int db = dInsets.bottom;
+            int dr = dInsets.right;
+
+            // Constrain the insets to the size of the image
+            if (st + sb > ih) {
+                db = dt = sb = st = Math.max(0, ih / 2);
+            }
+            if (sl + sr > iw) {
+                dl = dr = sl = sr = Math.max(0, iw / 2);
+            }
+
+            // Constrain the insets to the size of the region we're painting
+            // in.
+            if (dt + db > h) {
+                dt = db = Math.max(0, h / 2 - 1);
+            }
+            if (dl + dr > w) {
+                dl = dr = Math.max(0, w / 2 - 1);
+            }
+
+            boolean stretch = (paintType == PaintType.PAINT9_STRETCH);
+            if ((mask & PAINT_ALL) != 0) {
+                mask = (PAINT_ALL - 1) & ~mask;
+            }
+
+            if ((mask & PAINT_LEFT) != 0) {
+                drawChunk(image, g, stretch, x, y + dt, x + dl, y + h - db,
+                        0, st, sl, ih - sb, false);
+            }
+            if ((mask & PAINT_TOP_LEFT) != 0) {
+                drawImage(image, g, x, y, x + dl, y + dt,
+                        0, 0, sl, st);
+            }
+            if ((mask & PAINT_TOP) != 0) {
+                drawChunk(image, g, stretch, x + dl, y, x + w - dr, y + dt,
+                        sl, 0, iw - sr, st, true);
+            }
+            if ((mask & PAINT_TOP_RIGHT) != 0) {
+                drawImage(image, g, x + w - dr, y, x + w, y + dt,
+                        iw - sr, 0, iw, st);
+            }
+            if ((mask & PAINT_RIGHT) != 0) {
+                drawChunk(image, g, stretch,
+                        x + w - dr, y + dt, x + w, y + h - db,
+                        iw - sr, st, iw, ih - sb, false);
+            }
+            if ((mask & PAINT_BOTTOM_RIGHT) != 0) {
+                drawImage(image, g, x + w - dr, y + h - db, x + w, y + h,
+                        iw - sr, ih - sb, iw, ih);
+            }
+            if ((mask & PAINT_BOTTOM) != 0) {
+                drawChunk(image, g, stretch,
+                        x + dl, y + h - db, x + w - dr, y + h,
+                        sl, ih - sb, iw - sr, ih, true);
+            }
+            if ((mask & PAINT_BOTTOM_LEFT) != 0) {
+                drawImage(image, g, x, y + h - db, x + dl, y + h,
+                        0, ih - sb, sl, ih);
+            }
+            if ((mask & PAINT_CENTER) != 0) {
+                drawImage(image, g, x + dl, y + dt, x + w - dr, y + h - db,
+                        sl, st, iw - sr, ih - sb);
+            }
+        }
+    }
+
+    /**
+     * Draws a portion of an image, stretched or tiled.
+     *
+     * @param image Image to render.
+     * @param g Graphics to render to
+     * @param stretch Whether the image should be stretched or timed in the
+     *                provided space.
+     * @param dx1 X origin to draw to
+     * @param dy1 Y origin to draw to
+     * @param dx2 End x location to draw to
+     * @param dy2 End y location to draw to
+     * @param sx1 X origin to draw from
+     * @param sy1 Y origin to draw from
+     * @param sx2 Max x location to draw from
+     * @param sy2 Max y location to draw from
+     * @param xDirection Used if the image is not stretched. If true it
+     *        indicates the image should be tiled along the x axis.
+     */
+    private static void drawChunk(Image image, Graphics g, boolean stretch,
+                           int dx1, int dy1, int dx2, int dy2, int sx1,
+                           int sy1, int sx2, int sy2,
+                           boolean xDirection) {
+        if (dx2 - dx1 <= 0 || dy2 - dy1 <= 0 || sx2 - sx1 <= 0 ||
+                              sy2 - sy1 <= 0) {
+            // Bogus location, nothing to paint
+            return;
+        }
+        if (stretch) {
+            g.drawImage(image, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, null);
+        }
+        else {
+            int xSize = sx2 - sx1;
+            int ySize = sy2 - sy1;
+            int deltaX;
+            int deltaY;
+
+            if (xDirection) {
+                deltaX = xSize;
+                deltaY = 0;
+            }
+            else {
+                deltaX = 0;
+                deltaY = ySize;
+            }
+            while (dx1 < dx2 && dy1 < dy2) {
+                int newDX2 = Math.min(dx2, dx1 + xSize);
+                int newDY2 = Math.min(dy2, dy1 + ySize);
+
+                g.drawImage(image, dx1, dy1, newDX2, newDY2,
+                            sx1, sy1, sx1 + newDX2 - dx1,
+                            sy1 + newDY2 - dy1, null);
+                dx1 += deltaX;
+                dy1 += deltaY;
+            }
+        }
+    }
+
+    private static void drawImage(Image image, Graphics g,
+                           int dx1, int dy1, int dx2, int dy2, int sx1,
+                           int sy1, int sx2, int sy2) {
+        // PENDING: is this necessary, will G2D do it for me?
+        if (dx2 - dx1 <= 0 || dy2 - dy1 <= 0 || sx2 - sx1 <= 0 ||
+                sy2 - sy1 <= 0) {
+            // Bogus location, nothing to paint
+            return;
+        }
+        g.drawImage(image, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, null);
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/InnerGlowEffect.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.Color;
+
+/**
+ * InnerGlowEffect
+ *
+ * @author Created by Jasper Potts (Jun 21, 2007)
+ */
+class InnerGlowEffect extends InnerShadowEffect {
+    InnerGlowEffect() {
+        distance = 0;
+        color = new Color(255, 255, 211);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/InnerShadowEffect.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+import java.util.Arrays;
+
+/**
+ * InnerShadowEffect - This effect currently only works with ARGB type buffered
+ * images.
+ *
+ * @author Created by Jasper Potts (Jun 18, 2007)
+ */
+class InnerShadowEffect extends ShadowEffect {
+
+    // =================================================================================================================
+    // Effect Methods
+
+    /**
+     * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted
+     * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be
+     * painted. OVER means the result of apply effect should be painted over the src image.
+     *
+     * @return The effect type
+     */
+    Effect.EffectType getEffectType() {
+        return Effect.EffectType.OVER;
+    }
+
+    /**
+     * Apply the effect to the src image generating the result . The result image may or may not contain the source
+     * image depending on what the effect type is.
+     *
+     * @param src The source image for applying the effect to
+     * @param dst The dstination image to paint effect result into. If this is null then a new image will be created
+     * @param w   The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than
+     *            the area the need effect applied to it
+     * @param h   The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than
+     *            the area the need effect applied to it
+     * @return Image with the result of the effect
+     */
+    BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h) {
+        if (src == null || src.getType() != BufferedImage.TYPE_INT_ARGB){
+            throw new IllegalArgumentException("Effect only works with " +
+                    "source images of type BufferedImage.TYPE_INT_ARGB.");
+        }
+        if (dst != null && dst.getType() != BufferedImage.TYPE_INT_ARGB){
+            throw new IllegalArgumentException("Effect only works with " +
+                    "destination images of type BufferedImage.TYPE_INT_ARGB.");
+        }
+        // calculate offset
+        double trangleAngle = Math.toRadians(angle - 90);
+        int offsetX = (int) (Math.sin(trangleAngle) * distance);
+        int offsetY = (int) (Math.cos(trangleAngle) * distance);
+        // clac expanded size
+        int tmpOffX = offsetX + size;
+        int tmpOffY = offsetX + size;
+        int tmpW = w + offsetX + size + size;
+        int tmpH = h + offsetX + size;
+        // create tmp buffers
+        int[] lineBuf = getArrayCache().getTmpIntArray(w);
+        byte[] srcAlphaBuf = getArrayCache().getTmpByteArray1(tmpW * tmpH);
+        Arrays.fill(srcAlphaBuf, (byte) 0xFF);
+        byte[] tmpBuf1 = getArrayCache().getTmpByteArray2(tmpW * tmpH);
+        byte[] tmpBuf2 = getArrayCache().getTmpByteArray3(tmpW * tmpH);
+        // extract src image alpha channel and inverse and offset
+        Raster srcRaster = src.getRaster();
+        for (int y = 0; y < h; y++) {
+            int dy = (y + tmpOffY);
+            int offset = dy * tmpW;
+            srcRaster.getDataElements(0, y, w, 1, lineBuf);
+            for (int x = 0; x < w; x++) {
+                int dx = x + tmpOffX;
+                srcAlphaBuf[offset + dx] = (byte) ((255 - ((lineBuf[x] & 0xFF000000) >>> 24)) & 0xFF);
+            }
+        }
+        // blur
+        float[] kernel = EffectUtils.createGaussianKernel(size * 2);
+        EffectUtils.blur(srcAlphaBuf, tmpBuf2, tmpW, tmpH, kernel, size * 2); // horizontal pass
+        EffectUtils.blur(tmpBuf2, tmpBuf1, tmpH, tmpW, kernel, size * 2);// vertical pass
+        //rescale
+        float spread = Math.min(1 / (1 - (0.01f * this.spread)), 255);
+        for (int i = 0; i < tmpBuf1.length; i++) {
+            int val = (int) (((int) tmpBuf1[i] & 0xFF) * spread);
+            tmpBuf1[i] = (val > 255) ? (byte) 0xFF : (byte) val;
+        }
+        // create color image with shadow color and greyscale image as alpha
+        if (dst == null) dst = new BufferedImage(w, h,
+                BufferedImage.TYPE_INT_ARGB);
+        WritableRaster shadowRaster = dst.getRaster();
+        int red = color.getRed(), green = color.getGreen(), blue = color.getBlue();
+        for (int y = 0; y < h; y++) {
+            int srcY = y + tmpOffY;
+            int offset = srcY * tmpW;
+            int shadowOffset = (srcY - offsetY) * tmpW;
+            for (int x = 0; x < w; x++) {
+                int srcX = x + tmpOffX;
+                int origianlAlphaVal = 255 - ((int) srcAlphaBuf[offset + srcX] & 0xFF);
+                int shadowVal = (int) tmpBuf1[shadowOffset + (srcX - offsetX)] & 0xFF;
+                int alphaVal = Math.min(origianlAlphaVal, shadowVal);
+                lineBuf[x] = ((byte) alphaVal & 0xFF) << 24 | red << 16 | green << 8 | blue;
+            }
+            shadowRaster.setDataElements(0, y, w, 1, lineBuf);
+        }
+        return dst;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/LoweredBorder.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,201 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import javax.swing.border.Border;
+import javax.swing.JComponent;
+import javax.swing.plaf.UIResource;
+import java.awt.Insets;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Color;
+import java.awt.Transparency;
+import java.awt.RenderingHints;
+import java.awt.Dimension;
+import java.awt.image.BufferedImage;
+
+/**
+ * LoweredBorder - A recessed rounded inner shadowed border. Used as the
+ * standard Nimbus TitledBorder. This class is both a painter and a swing
+ * border.
+ *
+ * @author Jasper Potts
+ */
+class LoweredBorder extends AbstractRegionPainter implements Border {
+    private static final int IMG_SIZE = 30;
+    private static final int RADIUS = 13;
+    private static final Insets INSETS = new Insets(10,10,10,10);
+    private static final PaintContext PAINT_CONTEXT = new PaintContext(INSETS,
+            new Dimension(IMG_SIZE,IMG_SIZE),false,
+            PaintContext.CacheMode.NINE_SQUARE_SCALE,
+            Integer.MAX_VALUE, Integer.MAX_VALUE);
+
+    // =========================================================================
+    // Painter Methods
+
+    @Override
+    protected Object[] getExtendedCacheKeys(JComponent c) {
+        return new Object[] {c.getBackground()};
+    }
+
+    /**
+     * Actually performs the painting operation. Subclasses must implement this
+     * method. The graphics object passed may represent the actual surface being
+     * rendererd to, or it may be an intermediate buffer. It has also been
+     * pre-translated. Simply render the component as if it were located at 0, 0
+     * and had a width of <code>width</code> and a height of
+     * <code>height</code>. For performance reasons, you may want to read the
+     * clip from the Graphics2D object and only render within that space.
+     *
+     * @param g      The Graphics2D surface to paint to
+     * @param c      The JComponent related to the drawing event. For example,
+     *               if the region being rendered is Button, then <code>c</code>
+     *               will be a JButton. If the region being drawn is
+     *               ScrollBarSlider, then the component will be JScrollBar.
+     *               This value may be null.
+     * @param width  The width of the region to paint. Note that in the case of
+     *               painting the foreground, this value may differ from
+     *               c.getWidth().
+     * @param height The height of the region to paint. Note that in the case of
+     *               painting the foreground, this value may differ from
+     *               c.getHeight().
+     */
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height,
+            Object[] extendedCacheKeys) {
+        BufferedImage img1 = new BufferedImage(IMG_SIZE,IMG_SIZE,
+                    BufferedImage.TYPE_INT_ARGB);
+        BufferedImage img2 = new BufferedImage(IMG_SIZE,IMG_SIZE,
+                    BufferedImage.TYPE_INT_ARGB);
+        // draw shadow shape
+        Graphics2D g2 = (Graphics2D)img1.getGraphics();
+        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+                RenderingHints.VALUE_ANTIALIAS_ON);
+        g2.setColor(c.getBackground());
+        g2.fillRoundRect(2,0,26,26,RADIUS,RADIUS);
+        g2.dispose();
+        // draw shadow
+        InnerShadowEffect effect = new InnerShadowEffect();
+        effect.setDistance(1);
+        effect.setSize(3);
+        effect.setColor(getLighter(c.getBackground(),2.1f));
+        effect.setAngle(90);
+        effect.applyEffect(img1,img2,IMG_SIZE,IMG_SIZE);
+        // draw outline to img2
+        g2 = (Graphics2D)img2.getGraphics();
+        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+                RenderingHints.VALUE_ANTIALIAS_ON);
+        g2.setClip(0,28,IMG_SIZE,1);
+        g2.setColor(getLighter(c.getBackground(),0.90f));
+        g2.drawRoundRect(2,1,25,25,RADIUS,RADIUS);
+        g2.dispose();
+        // draw final image
+        if (width != IMG_SIZE || height != IMG_SIZE){
+            ImageScalingHelper.paint(g,0,0,width,height,img2, INSETS, INSETS,
+                    ImageScalingHelper.PaintType.PAINT9_STRETCH,
+                    ImageScalingHelper.PAINT_ALL);
+        } else {
+            g.drawImage(img2,0,0,c);
+        }
+        img1 = null;
+        img2 = null;
+    }
+
+    /**
+     * <p>Gets the PaintContext for this painting operation. This method is
+     * called on every paint, and so should be fast and produce no garbage. The
+     * PaintContext contains information such as cache hints. It also contains
+     * data necessary for decoding points at runtime, such as the stretching
+     * insets, the canvas size at which the encoded points were defined, and
+     * whether the stretching insets are inverted.</p>
+     * <p/>
+     * <p> This method allows for subclasses to package the painting of
+     * different states with possibly different canvas sizes, etc, into one
+     * AbstractRegionPainter implementation.</p>
+     *
+     * @return a PaintContext associated with this paint operation.
+     */
+    protected PaintContext getPaintContext() {
+        return PAINT_CONTEXT;
+    }
+
+    // =========================================================================
+    // Border Methods
+
+    /**
+     * Returns the insets of the border.
+     *
+     * @param c the component for which this border insets value applies
+     */
+    public Insets getBorderInsets(Component c) {
+        return INSETS;
+    }
+
+    /**
+     * Returns whether or not the border is opaque.  If the border is opaque, it
+     * is responsible for filling in it's own background when painting.
+     */
+    public boolean isBorderOpaque() {
+        return false;
+    }
+
+    /**
+     * Paints the border for the specified component with the specified position
+     * and size.
+     *
+     * @param c      the component for which this border is being painted
+     * @param g      the paint graphics
+     * @param x      the x position of the painted border
+     * @param y      the y position of the painted border
+     * @param width  the width of the painted border
+     * @param height the height of the painted border
+     */
+    public void paintBorder(Component c, Graphics g, int x, int y, int width,
+                            int height) {
+        JComponent comp = (c instanceof JComponent)?(JComponent)c:null;
+        if (g instanceof Graphics2D){
+            Graphics2D g2 = (Graphics2D)g;
+            g2.translate(x,y);
+            paint(g2,comp, width, height);
+            g2.translate(-x,-y);
+        } else {
+            BufferedImage img =  new BufferedImage(IMG_SIZE,IMG_SIZE,
+                    BufferedImage.TYPE_INT_ARGB);
+            Graphics2D g2 = (Graphics2D)img.getGraphics();
+            paint(g2,comp, width, height);
+            g2.dispose();
+            ImageScalingHelper.paint(g,x,y,width,height,img,INSETS, INSETS,
+                    ImageScalingHelper.PaintType.PAINT9_STRETCH,
+                    ImageScalingHelper.PAINT_ALL);
+        }
+    }
+
+    private Color getLighter(Color c, float factor){
+        return new Color(Math.min((int)(c.getRed()/factor), 255),
+                         Math.min((int)(c.getGreen()/factor), 255),
+                         Math.min((int)(c.getBlue()/factor), 255));
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusIcon.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,223 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import javax.swing.Painter;
+import sun.swing.plaf.synth.SynthIcon;
+
+import javax.swing.plaf.synth.SynthContext;
+import javax.swing.*;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import javax.swing.plaf.UIResource;
+
+/**
+ * An icon that delegates to a painter.
+ * @author rbair
+ */
+class NimbusIcon extends SynthIcon {
+    private int width;
+    private int height;
+    private String prefix;
+    private String key;
+
+    NimbusIcon(String prefix, String key, int w, int h) {
+        this.width = w;
+        this.height = h;
+        this.prefix = prefix;
+        this.key = key;
+    }
+
+    @Override
+    public void paintIcon(SynthContext context, Graphics g, int x, int y,
+                          int w, int h) {
+        Painter painter = null;
+        if (context != null) {
+            painter = (Painter)context.getStyle().get(context, key);
+        }
+        if (painter == null){
+            painter = (Painter) UIManager.get(prefix + "[Enabled]." + key);
+        }
+
+        if (painter != null && context != null) {
+            JComponent c = context.getComponent();
+            boolean rotate = false;
+            boolean flip = false;
+            //translatex and translatey are additional translations that
+            //must occur on the graphics context when rendering a toolbar
+            //icon
+            int translatex = 0;
+            int translatey = 0;
+            if (c instanceof JToolBar) {
+                JToolBar toolbar = (JToolBar)c;
+                rotate = toolbar.getOrientation() == JToolBar.VERTICAL;
+                flip = !toolbar.getComponentOrientation().isLeftToRight();
+                Object o = NimbusLookAndFeel.resolveToolbarConstraint(toolbar);
+                //we only do the +1 hack for UIResource borders, assuming
+                //that the border is probably going to be our border
+                if (toolbar.getBorder() instanceof UIResource) {
+                    if (o == BorderLayout.SOUTH) {
+                        translatey = 1;
+                    } else if (o == BorderLayout.EAST) {
+                        translatex = 1;
+                    }
+                }
+            }
+            if (g instanceof Graphics2D){
+                Graphics2D gfx = (Graphics2D)g;
+                gfx.translate(x, y);
+                gfx.translate(translatex, translatey);
+                if (rotate) {
+                    gfx.rotate(Math.toRadians(90));
+                    gfx.translate(0, -w);
+                    painter.paint(gfx, context.getComponent(), h, w);
+                    gfx.translate(0, w);
+                    gfx.rotate(Math.toRadians(-90));
+                } else if (flip){
+                    gfx.scale(-1, 1);
+                    gfx.translate(-w,0);
+                    painter.paint(gfx, context.getComponent(), w, h);
+                    gfx.translate(w,0);
+                    gfx.scale(-1, 1);
+                } else {
+                    painter.paint(gfx, context.getComponent(), w, h);
+                }
+                gfx.translate(-translatex, -translatey);
+                gfx.translate(-x, -y);
+            } else {
+                // use image if we are printing to a Java 1.1 PrintGraphics as
+                // it is not a instance of Graphics2D
+                BufferedImage img = new BufferedImage(w,h,
+                        BufferedImage.TYPE_INT_ARGB);
+                Graphics2D gfx = img.createGraphics();
+                if (rotate) {
+                    gfx.rotate(Math.toRadians(90));
+                    gfx.translate(0, -w);
+                    painter.paint(gfx, context.getComponent(), h, w);
+                } else if (flip){
+                    gfx.scale(-1, 1);
+                    gfx.translate(-w,0);
+                    painter.paint(gfx, context.getComponent(), w, h);
+                } else {
+                    painter.paint(gfx, context.getComponent(), w, h);
+                }
+                gfx.dispose();
+                g.drawImage(img,x,y,null);
+                img = null;
+            }
+        }
+    }
+
+    /**
+     * Implements the standard Icon interface's paintIcon method as the standard
+     * synth stub passes null for the context and this will cause us to not
+     * paint any thing, so we override here so that we can paint the enabled
+     * state if no synth context is available
+     */
+    @Override
+    public void paintIcon(Component c, Graphics g, int x, int y) {
+        Painter painter = (Painter)UIManager.get(prefix + "[Enabled]." + key);
+        if (painter != null){
+            JComponent jc = (c instanceof JComponent) ? (JComponent)c : null;
+            Graphics2D gfx = (Graphics2D)g;
+            gfx.translate(x, y);
+            painter.paint(gfx, jc , width, height);
+            gfx.translate(-x, -y);
+        }
+    }
+
+    @Override
+    public int getIconWidth(SynthContext context) {
+        if (context == null) {
+            return width;
+        }
+        JComponent c = context.getComponent();
+        if (c instanceof JToolBar && ((JToolBar)c).getOrientation() == JToolBar.VERTICAL) {
+            //we only do the -1 hack for UIResource borders, assuming
+            //that the border is probably going to be our border
+            if (c.getBorder() instanceof UIResource) {
+                return c.getWidth() - 1;
+            } else {
+                return c.getWidth();
+            }
+        } else {
+            return scale(context, width);
+        }
+    }
+
+    @Override
+    public int getIconHeight(SynthContext context) {
+        if (context == null) {
+            return height;
+        }
+        JComponent c = context.getComponent();
+        if (c instanceof JToolBar){
+            JToolBar toolbar = (JToolBar)c;
+            if (toolbar.getOrientation() == JToolBar.HORIZONTAL) {
+                //we only do the -1 hack for UIResource borders, assuming
+                //that the border is probably going to be our border
+                if (toolbar.getBorder() instanceof UIResource) {
+                    return c.getHeight() - 1;
+                } else {
+                    return c.getHeight();
+                }
+            } else {
+                return scale(context, width);
+            }
+        } else {
+            return scale(context, height);
+        }
+    }
+
+    /**
+     * Scale a size based on the "JComponent.sizeVariant" client property of the
+     * component that is using this icon
+     *
+     * @param context The synthContext to get the component from
+     * @param size The size to scale
+     * @return The scaled size or original if "JComponent.sizeVariant" is not
+     *          set
+     */
+    private int scale(SynthContext context, int size) {
+        if (context == null || context.getComponent() == null){
+            return size;
+        }
+        // The key "JComponent.sizeVariant" is used to match Apple's LAF
+        String scaleKey = (String) context.getComponent().getClientProperty(
+                "JComponent.sizeVariant");
+        if (scaleKey != null) {
+            if (NimbusStyle.LARGE_KEY.equals(scaleKey)) {
+                size *= NimbusStyle.LARGE_SCALE;
+            } else if (NimbusStyle.SMALL_KEY.equals(scaleKey)) {
+                size *= NimbusStyle.SMALL_SCALE;
+            } else if (NimbusStyle.MINI_KEY.equals(scaleKey)) {
+                // mini is not quite as small for icons as full mini is
+                // just too tiny
+                size *= NimbusStyle.MINI_SCALE + 0.07;
+            }
+        }
+        return size;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,520 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.BorderLayout;
+import static java.awt.BorderLayout.*;
+import javax.swing.JComponent;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import javax.swing.plaf.synth.Region;
+import javax.swing.plaf.synth.SynthLookAndFeel;
+import javax.swing.plaf.synth.SynthStyle;
+import javax.swing.plaf.synth.SynthStyleFactory;
+import javax.swing.plaf.UIResource;
+import java.security.AccessController;
+import java.awt.Color;
+import java.awt.Container;
+import java.awt.Graphics2D;
+import java.awt.LayoutManager;
+import java.awt.image.BufferedImage;
+import javax.swing.GrayFilter;
+import javax.swing.Icon;
+import javax.swing.JToolBar;
+import javax.swing.border.TitledBorder;
+import javax.swing.plaf.BorderUIResource;
+import javax.swing.plaf.ColorUIResource;
+import sun.swing.ImageIconUIResource;
+import sun.swing.plaf.synth.SynthIcon;
+import sun.swing.plaf.GTKKeybindings;
+import sun.swing.plaf.WindowsKeybindings;
+import sun.security.action.GetPropertyAction;
+
+/**
+ * <p>The NimbusLookAndFeel class.</p>
+ *
+ * @author Jasper Potts
+ * @author Richard Bair
+ */
+public class NimbusLookAndFeel extends SynthLookAndFeel {
+
+    /** Set of standard region names for UIDefaults Keys */
+    private static final String[] COMPONENT_KEYS = new String[]{"ArrowButton", "Button",
+                    "CheckBox", "CheckBoxMenuItem", "ColorChooser", "ComboBox",
+                    "DesktopPane", "DesktopIcon", "EditorPane", "FileChooser",
+                    "FormattedTextField", "InternalFrame",
+                    "InternalFrameTitlePane", "Label", "List", "Menu",
+                    "MenuBar", "MenuItem", "OptionPane", "Panel",
+                    "PasswordField", "PopupMenu", "PopupMenuSeparator",
+                    "ProgressBar", "RadioButton", "RadioButtonMenuItem",
+                    "RootPane", "ScrollBar", "ScrollBarTrack", "ScrollBarThumb",
+                    "ScrollPane", "Separator", "Slider", "SliderTrack",
+                    "SliderThumb", "Spinner", "SplitPane", "TabbedPane",
+                    "Table", "TableHeader", "TextArea", "TextField", "TextPane",
+                    "ToggleButton", "ToolBar", "ToolTip", "Tree", "Viewport"};
+
+    /**
+     * A reference to the auto-generated file NimbusDefaults. This file contains
+     * the default mappings and values for the look and feel as specified in the
+     * visual designer.
+     */
+    private NimbusDefaults defaults;
+
+    /**
+     * Reference to populated LAD uidefaults
+     */
+    private UIDefaults uiDefaults;
+
+    /**
+     * Create a new NimbusLookAndFeel.
+     */
+    public NimbusLookAndFeel() {
+        super();
+        defaults = new NimbusDefaults();
+    }
+
+    /** Called by UIManager when this look and feel is installed. */
+    @Override public void initialize() {
+        super.initialize();
+        defaults.initialize();
+        // create synth style factory
+        setStyleFactory(new SynthStyleFactory() {
+            @Override
+            public SynthStyle getStyle(JComponent c, Region r) {
+                return defaults.getStyle(c, r);
+            }
+        });
+    }
+
+
+    /** Called by UIManager when this look and feel is uninstalled. */
+    @Override public void uninitialize() {
+        super.uninitialize();
+        defaults.uninitialize();
+        // clear all cached images to free memory
+        ImageCache.getInstance().flush();
+        // remove the listeners and things installed by NimbusStyle
+        NimbusStyle.uninitialize();
+    }
+
+    /**
+     * @inheritDoc
+     */
+    @Override public UIDefaults getDefaults() {
+        if (uiDefaults == null){
+            // Detect platform
+            String osName = getSystemProperty("os.name");
+            boolean isWindows = osName != null && osName.contains("Windows");
+
+            // We need to call super for basic's properties file.
+            uiDefaults = super.getDefaults();
+            defaults.initializeDefaults(uiDefaults);
+
+            // Install Keybindings
+            if (isWindows) {
+                WindowsKeybindings.installKeybindings(uiDefaults);
+            } else {
+                GTKKeybindings.installKeybindings(uiDefaults);
+            }
+
+            // Add Titled Border
+            uiDefaults.put("TitledBorder.titlePosition",
+                    TitledBorder.ABOVE_TOP);
+            uiDefaults.put("TitledBorder.border", new BorderUIResource(
+                    new LoweredBorder()));
+            uiDefaults.put("TitledBorder.titleColor",
+                    getDerivedColor("text",0.0f,0.0f,0.23f,0,true));
+            uiDefaults.put("TitledBorder.font",
+                    new NimbusDefaults.DerivedFont("defaultFont",
+                            1f, true, null));
+
+            // Choose Dialog button positions
+            uiDefaults.put("OptionPane.isYesLast", !isWindows);
+
+            // Store Table ScrollPane Corner Component
+            uiDefaults.put("Table.scrollPaneCornerComponent",
+                    TableScrollPaneCorner.class);
+
+            // Setup the settings for ToolBarSeparator which is custom
+            // installed for Nimbus
+            uiDefaults.put("ToolBarSeparator[Enabled].backgroundPainter",
+                    new ToolBarSeparatorPainter());
+
+            // Populate UIDefaults with a standard set of properties
+            for (String componentKey : COMPONENT_KEYS) {
+                String key = componentKey+".foreground";
+                if (!uiDefaults.containsKey(key)){
+                    uiDefaults.put(key,
+                            new NimbusProperty(componentKey,"textForeground"));
+                }
+                key = componentKey+".background";
+                if (!uiDefaults.containsKey(key)){
+                    uiDefaults.put(key,
+                            new NimbusProperty(componentKey,"background"));
+                }
+                key = componentKey+".font";
+                if (!uiDefaults.containsKey(key)){
+                    uiDefaults.put(key,
+                            new NimbusProperty(componentKey,"font"));
+                }
+                key = componentKey+".disabledText";
+                if (!uiDefaults.containsKey(key)){
+                    uiDefaults.put(key,
+                            new NimbusProperty(componentKey,"Disabled",
+                                   "textForeground"));
+                }
+                key = componentKey+".disabled";
+                if (!uiDefaults.containsKey(key)){
+                    uiDefaults.put(key,
+                            new NimbusProperty(componentKey,"Disabled",
+                                    "background"));
+                }
+            }
+
+            // FileView icon keys are used by some applications, we don't have
+            // a computer icon at the moment so using home icon for now
+            uiDefaults.put("FileView.computerIcon",
+                    new LinkProperty("FileChooser.homeFolderIcon"));
+            uiDefaults.put("FileView.directoryIcon",
+                    new LinkProperty("FileChooser.directoryIcon"));
+            uiDefaults.put("FileView.fileIcon",
+                    new LinkProperty("FileChooser.fileIcon"));
+            uiDefaults.put("FileView.floppyDriveIcon",
+                    new LinkProperty("FileChooser.floppyDriveIcon"));
+            uiDefaults.put("FileView.hardDriveIcon",
+                    new LinkProperty("FileChooser.hardDriveIcon"));
+        }
+        return uiDefaults;
+    }
+
+    /**
+     * Gets the style associated with the given component and region. This
+     * will never return null. If an appropriate component and region cannot
+     * be determined, then a default style is returned.
+     *
+     * @param c a non-null reference to a JComponent
+     * @param r a non-null reference to the region of the component c
+     * @return a non-null reference to a NimbusStyle.
+     */
+    public static NimbusStyle getStyle(JComponent c, Region r) {
+        return (NimbusStyle)SynthLookAndFeel.getStyle(c, r);
+    }
+
+    /**
+     * Return a short string that identifies this look and feel. This
+     * String will be the unquoted String "Nimbus".
+     *
+     * @return a short string identifying this look and feel.
+     */
+    @Override public String getName() {
+        return "Nimbus";
+    }
+
+    /**
+     * Return a string that identifies this look and feel. This String will
+     * be the unquoted String "Nimbus".
+     *
+     * @return a short string identifying this look and feel.
+     */
+    @Override public String getID() {
+        return "Nimbus";
+    }
+
+    /**
+     * Returns a textual description of this look and feel.
+     *
+     * @return textual description of this look and feel.
+     */
+    @Override public String getDescription() {
+        return "Nimbus Look and Feel";
+    }
+
+    /**
+     * @inheritDoc
+     * @return true
+     */
+    @Override public boolean shouldUpdateStyleOnAncestorChanged() {
+        return true;
+    }
+
+    /**
+     * <p>Registers a third party component with the NimbusLookAndFeel.</p>
+     *
+     * <p>Regions represent Components and areas within Components that act as
+     * independent painting areas. Once registered with the NimbusLookAndFeel,
+     * NimbusStyles for these Regions can be retrieved via the
+     * <code>getStyle</code> method.</p>
+     *
+     * <p>The NimbusLookAndFeel uses a standard naming scheme for entries in the
+     * UIDefaults table. The key for each property, state, painter, and other
+     * default registered in UIDefaults for a specific Region will begin with
+     * the specified <code>prefix</code></p>
+     *
+     * <p>For example, suppose I had a component named JFoo. Suppose I then registered
+     * this component with the NimbusLookAndFeel in this manner:</p>
+     *
+     * <pre><code>
+     *     laf.register(NimbusFooUI.FOO_REGION, "Foo");
+     * </code></pre>
+     *
+     * <p>In this case, I could then register properties for this component with
+     * UIDefaults in the following manner:</p>
+     *
+     * <pre><code>
+     *     UIManager.put("Foo.background", new ColorUIResource(Color.BLACK));
+     *     UIManager.put("Foo.Enabled.backgroundPainter", new FooBackgroundPainter());
+     * </code></pre>
+     *
+     * <p>It is also possible to register a named component with Nimbus.
+     * For example, suppose you wanted to style the background of a JPanel
+     * named "MyPanel" differently from other JPanels. You could accomplish this
+     * by doing the following:</p>
+     *
+     * <pre><code>
+     *     laf.register(Region.PANEL, "\"MyPanel\"");
+     *     UIManager.put("\"MyPanel\".background", new ColorUIResource(Color.RED));
+     * </code></pre>
+     *
+     * @param region The Synth Region that is being registered. Such as Button, or
+     *        ScrollBarThumb, or NimbusFooUI.FOO_REGION.
+     * @param prefix The UIDefault prefix. For example, could be ComboBox, or if
+     *        a named components, "MyComboBox", or even something like
+     *        ToolBar."MyComboBox"."ComboBox.arrowButton"
+     */
+    public void register(Region region, String prefix) {
+        defaults.register(region, prefix);
+    }
+
+    /**
+     * Simple utility method that reads system keys.
+     */
+    private String getSystemProperty(String key) {
+        return AccessController.doPrivileged(new GetPropertyAction(key));
+    }
+
+    @Override
+    public Icon getDisabledIcon(JComponent component, Icon icon) {
+        if (icon instanceof SynthIcon) {
+            SynthIcon si = (SynthIcon)icon;
+            BufferedImage img = EffectUtils.createCompatibleTranslucentImage(
+                    si.getIconWidth(), si.getIconHeight());
+            Graphics2D gfx = img.createGraphics();
+            si.paintIcon(component, gfx, 0, 0);
+            gfx.dispose();
+            return new ImageIconUIResource(GrayFilter.createDisabledImage(img));
+        } else {
+            return super.getDisabledIcon(component, icon);
+        }
+    }
+
+    /**
+     * Get a derived color, derived colors are shared instances and is color
+     * value will change when its parent UIDefault color changes.
+     *
+     * @param uiDefaultParentName The parent UIDefault key
+     * @param hOffset             The hue offset
+     * @param sOffset             The saturation offset
+     * @param bOffset             The brightness offset
+     * @param aOffset             The alpha offset
+     * @param uiResource          True if the derived color should be a
+     *                            UIResource, false if it should not be
+     * @return The stored derived color
+     */
+    public Color getDerivedColor(String uiDefaultParentName,
+                                 float hOffset, float sOffset,
+                                 float bOffset, int aOffset,
+                                 boolean uiResource) {
+        return defaults.getDerivedColor(uiDefaultParentName, hOffset, sOffset,
+                bOffset, aOffset, uiResource);
+    }
+
+    /**
+     * Decodes and returns a color, which is derived from an offset between two
+     * other colors.
+     *
+     * @param color1   The first color
+     * @param color2   The second color
+     * @param midPoint The offset between color 1 and color 2, a value of 0.0 is
+     *                 color 1 and 1.0 is color 2;
+     * @param uiResource True if the derived color should be a UIResource
+     * @return The derived color
+     */
+    protected final Color getDerivedColor(Color color1, Color color2,
+                                      float midPoint, boolean uiResource) {
+        int argb = deriveARGB(color1, color2, midPoint);
+        if (uiResource) {
+            return new ColorUIResource(argb);
+        } else {
+            return new Color(argb);
+        }
+    }
+
+    /**
+     * Decodes and returns a color, which is derived from a offset between two
+     * other colors.
+     *
+     * @param color1   The first color
+     * @param color2   The second color
+     * @param midPoint The offset between color 1 and color 2, a value of 0.0 is
+     *                 color 1 and 1.0 is color 2;
+     * @return The derived color, which will be a UIResource
+     */
+    protected final Color getDerivedColor(Color color1, Color color2,
+                                      float midPoint) {
+        return getDerivedColor(color1, color2, midPoint, true);
+    }
+
+    /**
+     * Package private method which returns either BorderLayout.NORTH,
+     * BorderLayout.SOUTH, BorderLayout.EAST, or BorderLayout.WEST depending
+     * on the location of the toolbar in its parent. The toolbar might be
+     * in PAGE_START, PAGE_END, CENTER, or some other position, but will be
+     * resolved to either NORTH,SOUTH,EAST, or WEST based on where the toolbar
+     * actually IS, with CENTER being NORTH.
+     *
+     * This code is used to determine where the border line should be drawn
+     * by the custom toolbar states, and also used by NimbusIcon to determine
+     * whether the handle icon needs to be shifted to look correct.
+     *
+     * Toollbars are unfortunately odd in the way these things are handled,
+     * and so this code exists to unify the logic related to toolbars so it can
+     * be shared among the static files such as NimbusIcon and generated files
+     * such as the ToolBar state classes.
+     */
+    static Object resolveToolbarConstraint(JToolBar toolbar) {
+        //NOTE: we don't worry about component orientation or PAGE_END etc
+        //because the BasicToolBarUI always uses an absolute position of
+        //NORTH/SOUTH/EAST/WEST.
+        if (toolbar != null) {
+            Container parent = toolbar.getParent();
+            if (parent != null) {
+                LayoutManager m = parent.getLayout();
+                if (m instanceof BorderLayout) {
+                    BorderLayout b = (BorderLayout)m;
+                    Object con = b.getConstraints(toolbar);
+                    if (con == SOUTH || con == EAST || con == WEST) {
+                        return con;
+                    }
+                    return NORTH;
+                }
+            }
+        }
+        return NORTH;
+    }
+
+    /**
+     * Derives the ARGB value for a color based on an offset between two
+     * other colors.
+     *
+     * @param color1   The first color
+     * @param color2   The second color
+     * @param midPoint The offset between color 1 and color 2, a value of 0.0 is
+     *                 color 1 and 1.0 is color 2;
+     * @return the ARGB value for a new color based on this derivation
+     */
+    static int deriveARGB(Color color1, Color color2, float midPoint) {
+        int r = color1.getRed() +
+                (int) ((color2.getRed() - color1.getRed()) * midPoint + 0.5f);
+        int g = color1.getGreen() +
+                (int) ((color2.getGreen() - color1.getGreen()) * midPoint +
+                        0.5f);
+        int b = color1.getBlue() +
+                (int) ((color2.getBlue() - color1.getBlue()) * midPoint + 0.5f);
+        int a = color1.getAlpha() +
+                (int) ((color2.getAlpha() - color1.getAlpha()) * midPoint +
+                        0.5f);
+        return ((a & 0xFF) << 24) |
+                ((r & 0xFF) << 16) |
+                ((g & 0xFF) << 8) |
+                (b & 0xFF);
+    }
+
+    /**
+     * Simple Symbolic Link style UIDefalts Property
+     */
+    private class LinkProperty implements UIDefaults.ActiveValue, UIResource{
+        private String dstPropName;
+
+        private LinkProperty(String dstPropName) {
+            this.dstPropName = dstPropName;
+        }
+
+        @Override
+        public Object createValue(UIDefaults table) {
+            return UIManager.get(dstPropName);
+        }
+    }
+
+    /**
+     * Nimbus Property that looks up Nimbus keys for standard key names. For
+     * example "Button.background" --> "Button[Enabled].backgound"
+     */
+    private class NimbusProperty implements UIDefaults.ActiveValue, UIResource {
+        private String prefix;
+        private String state = null;
+        private String suffix;
+        private boolean isFont;
+
+        private NimbusProperty(String prefix, String suffix) {
+            this.prefix = prefix;
+            this.suffix = suffix;
+            isFont = "font".equals(suffix);
+        }
+
+        private NimbusProperty(String prefix, String state, String suffix) {
+            this(prefix,suffix);
+            this.state = state;
+        }
+
+        /**
+         * Creates the value retrieved from the <code>UIDefaults</code> table.
+         * The object is created each time it is accessed.
+         *
+         * @param table a <code>UIDefaults</code> table
+         * @return the created <code>Object</code>
+         */
+        @Override
+        public Object createValue(UIDefaults table) {
+            Object obj = null;
+            // check specified state
+            if (state!=null){
+                obj = uiDefaults.get(prefix+"["+state+"]."+suffix);
+            }
+            // check enabled state
+            if (obj==null){
+                obj = uiDefaults.get(prefix+"[Enabled]."+suffix);
+            }
+            // check for defaults
+            if (obj==null){
+                if (isFont) {
+                    obj = uiDefaults.get("defaultFont");
+                } else {
+                    obj = uiDefaults.get(suffix);
+                }
+            }
+            return obj;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,1259 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import javax.swing.Painter;
+
+import java.beans.PropertyChangeEvent;
+import javax.swing.JComponent;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.synth.ColorType;
+import static javax.swing.plaf.synth.SynthConstants.*;
+import javax.swing.plaf.synth.SynthContext;
+import javax.swing.plaf.synth.SynthPainter;
+import javax.swing.plaf.synth.SynthStyle;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Insets;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+import sun.awt.AppContext;
+
+/**
+ * <p>A SynthStyle implementation used by Nimbus. Each Region that has been
+ * registered with the NimbusLookAndFeel will have an associated NimbusStyle.
+ * Third party components that are registered with the NimbusLookAndFeel will
+ * therefore be handed a NimbusStyle from the look and feel from the
+ * #getStyle(JComponent, Region) method.</p>
+ *
+ * <p>This class properly reads and retrieves values placed in the UIDefaults
+ * according to the standard Nimbus naming conventions. It will create and
+ * retrieve painters, fonts, colors, and other data stored there.</p>
+ *
+ * <p>NimbusStyle also supports the ability to override settings on a per
+ * component basis. NimbusStyle checks the component's client property map for
+ * "Nimbus.Overrides". If the value associated with this key is an instance of
+ * UIDefaults, then the values in that defaults table will override the standard
+ * Nimbus defaults in UIManager, but for that component instance only.</p>
+ *
+ * <p>Optionally, you may specify the client property
+ * "Nimbus.Overrides.InheritDefaults". If true, this client property indicates
+ * that the defaults located in UIManager should first be read, and then
+ * replaced with defaults located in the component client properties. If false,
+ * then only the defaults located in the component client property map will
+ * be used. If not specified, it is assumed to be true.</p>
+ *
+ * <p>You must specify "Nimbus.Overrides" for "Nimbus.Overrides.InheritDefaults"
+ * to have any effect. "Nimbus.Overrides" indicates whether there are any
+ * overrides, while "Nimbus.Overrides.InheritDefaults" indicates whether those
+ * overrides should first be initialized with the defaults from UIManager.</p>
+ *
+ * <p>The NimbusStyle is reloaded whenever a property change event is fired
+ * for a component for "Nimbus.Overrides" or "Nimbus.Overrides.InheritDefaults".
+ * So for example, setting a new UIDefaults on a component would cause the
+ * style to be reloaded.</p>
+ *
+ * <p>The values are only read out of UIManager once, and then cached. If
+ * you need to read the values again (for example, if the UI is being reloaded),
+ * then discard this NimbusStyle and read a new one from NimbusLookAndFeel
+ * using NimbusLookAndFeel.getStyle.</p>
+ *
+ * <p>The primary API of interest in this class for 3rd party component authors
+ * are the three methods which retrieve painters: #getBackgroundPainter,
+ * #getForegroundPainter, and #getBorderPainter.</p>
+ *
+ * <p>NimbusStyle allows you to specify custom states, or modify the order of
+ * states. Synth (and thus Nimbus) has the concept of a "state". For example,
+ * a JButton might be in the "MOUSE_OVER" state, or the "ENABLED" state, or the
+ * "DISABLED" state. These are all "standard" states which are defined in synth,
+ * and which apply to all synth Regions.</p>
+ *
+ * <p>Sometimes, however, you need to have a custom state. For example, you
+ * want JButton to render differently if it's parent is a JToolbar. In Nimbus,
+ * you specify these custom states by including a special key in UIDefaults.
+ * The following UIDefaults entries define three states for this button:</p>
+ *
+ * <pre><code>
+ *     JButton.States = Enabled, Disabled, Toolbar
+ *     JButton[Enabled].backgroundPainter = somePainter
+ *     JButton[Disabled].background = BLUE
+ *     JButton[Toolbar].backgroundPainter = someOtherPaint
+ * </code></pre>
+ *
+ * <p>As you can see, the <code>JButton.States</code> entry lists the states
+ * that the JButton style will support. You then specify the settings for
+ * each state. If you do not specify the <code>JButton.States</code> entry,
+ * then the standard Synth states will be assumed. If you specify the entry
+ * but the list of states is empty or null, then the standard synth states
+ * will be assumed.</p>
+ *
+ * @author Richard Bair
+ * @author Jasper Potts
+ */
+public final class NimbusStyle extends SynthStyle {
+    /* Keys and scales for large/small/mini components, based on Apples sizes */
+    public static final String LARGE_KEY = "large";
+    public static final String SMALL_KEY = "small";
+    public static final String MINI_KEY = "mini";
+    public static final double LARGE_SCALE = 1.15;
+    public static final double SMALL_SCALE = 0.857;
+    public static final double MINI_SCALE = 0.714;
+
+    /**
+     * Special constant used for performance reasons during the get() method.
+     * If get() runs through all of the search locations and determines that
+     * there is no value, then NULL will be placed into the values map. This way
+     * on subsequent lookups it will simply extract NULL, see it, and return
+     * null rather than continuing the lookup procedure.
+     */
+    private static final Object NULL = '\0';
+    /**
+     * <p>The Color to return from getColorForState if it would otherwise have
+     * returned null.</p>
+     *
+     * <p>Returning null from getColorForState is a very bad thing, as it causes
+     * the AWT peer for the component to install a SystemColor, which is not a
+     * UIResource. As a result, if <code>null</code> is returned from
+     * getColorForState, then thereafter the color is not updated for other
+     * states or on LAF changes or updates. This DEFAULT_COLOR is used to
+     * ensure that a ColorUIResource is always returned from
+     * getColorForState.</p>
+     */
+    private static final Color DEFAULT_COLOR = new ColorUIResource(Color.BLACK);
+    /**
+     * Simple Comparator for ordering the RuntimeStates according to their
+     * rank.
+     */
+    private static final Comparator<RuntimeState> STATE_COMPARATOR =
+        new Comparator<RuntimeState>() {
+            @Override
+            public int compare(RuntimeState a, RuntimeState b) {
+                return a.state - b.state;
+            }
+        };
+    /**
+     * The prefix for the component or region that this NimbusStyle
+     * represents. This prefix is used to lookup state in the UIManager.
+     * It should be something like Button or Slider.Thumb or "MyButton" or
+     * ComboBox."ComboBox.arrowButton" or "MyComboBox"."ComboBox.arrowButton"
+     */
+    private String prefix;
+    /**
+     * The SynthPainter that will be returned from this NimbusStyle. The
+     * SynthPainter returned will be a SynthPainterImpl, which will in turn
+     * delegate back to this NimbusStyle for the proper Painter (not
+     * SynthPainter) to use for painting the foreground, background, or border.
+     */
+    private SynthPainter painter;
+    /**
+     * Data structure containing all of the defaults, insets, states, and other
+     * values associated with this style. This instance refers to default
+     * values, and are used when no overrides are discovered in the client
+     * properties of a component. These values are lazily created on first
+     * access.
+     */
+    private Values values;
+
+    /**
+     * A temporary CacheKey used to perform lookups. This pattern avoids
+     * creating useless garbage keys, or concatenating strings, etc.
+     */
+    private CacheKey tmpKey = new CacheKey("", 0);
+
+    /**
+     * Some NimbusStyles are created for a specific component only. In Nimbus,
+     * this happens whenever the component has as a client property a
+     * UIDefaults which overrides (or supplements) those defaults found in
+     * UIManager.
+     */
+    private JComponent component;
+
+    /**
+     * Create a new NimbusStyle. Only the prefix must be supplied. At the
+     * appropriate time, installDefaults will be called. At that point, all of
+     * the state information will be pulled from UIManager and stored locally
+     * within this style.
+     *
+     * @param prefix Something like Button or Slider.Thumb or
+     *        org.jdesktop.swingx.JXStatusBar or ComboBox."ComboBox.arrowButton"
+     * @param c an optional reference to a component that this NimbusStyle
+     *        should be associated with. This is only used when the component
+     *        has Nimbus overrides registered in its client properties and
+     *        should be null otherwise.
+     */
+    NimbusStyle(String prefix, JComponent c) {
+        this.component = c;
+        this.prefix = prefix;
+        this.painter = new SynthPainterImpl(this);
+    }
+
+    /**
+     * @inheritDoc
+     *
+     * Overridden to cause this style to populate itself with data from
+     * UIDefaults, if necessary.
+     */
+    @Override public void installDefaults(SynthContext ctx) {
+        validate();
+
+        //delegate to the superclass to install defaults such as background,
+        //foreground, font, and opaque onto the swing component.
+        super.installDefaults(ctx);
+    }
+
+    static String parsePrefix(String key) {
+       if (key == null) return null;
+       boolean inquotes = false;
+       for (int i=0; i<key.length(); i++) {
+           char c = key.charAt(i);
+           if (c == '"') {
+               inquotes = !inquotes;
+           } else if ((c == '[' || c == '.') && !inquotes) {
+               return key.substring(0, i);
+           }
+       }
+       return null;
+    }
+
+    /**
+     * Called by NimbusLookAndFeel when the look and feel is being uninstalled.
+     * Performs general cleanup of any app-context specific data.
+     */
+    static void uninitialize() {
+        // get the appcontext that we've stored data in
+        AppContext ctx = AppContext.getAppContext();
+
+        // get the pcl stored in app context
+        PropertyChangeListener pcl = (PropertyChangeListener)
+                ctx.get("NimbusStyle.defaults.pcl");
+
+        // if the pcl exists, uninstall it from the UIDefaults tables
+        if (pcl != null) {
+            UIManager.getDefaults().removePropertyChangeListener(pcl);
+            UIManager.getLookAndFeelDefaults().removePropertyChangeListener(pcl);
+        }
+
+        // clear out the compiled defaults
+        ctx.put("NimbusStyle.defaults", null);
+    }
+
+    /**
+     * Pulls data out of UIDefaults, if it has not done so already, and sets
+     * up the internal state.
+     */
+    private void validate() {
+        // a non-null values object is the flag we use to determine whether
+        // to reparse from UIManager.
+        if (values != null) return;
+
+        // reconstruct this NimbusStyle based on the entries in the UIManager
+        // and possibly based on any overrides within the component's
+        // client properties (assuming such a component exists and contains
+        // any Nimbus.Overrides)
+        values = new Values();
+
+        // the profiler revealed that a great deal of CPU time and useless
+        // garbage was being produced by this method and the init method. One
+        // culprit was the creation and reparsing of the entire UIDefaults
+        // map on each call to this method where "values" was null. It turns
+        // out this was happening a lot.
+        // To remove this bottleneck, we store the compiled TreeMaps of defaults
+        // in the appContext for reuse. It is nulled whenever the UIDefaults
+        // changes and recomputed when necessary.
+        final AppContext ctx = AppContext.getAppContext();
+
+        // fetch the defaults from the app context. If null, then create and
+        // store the compiled defaults
+        Map<String, TreeMap<String, Object>> compiledDefaults =
+                (Map<String, TreeMap<String, Object>>)
+                    ctx.get("NimbusStyle.defaults");
+
+        if (compiledDefaults == null) {
+            // the entire UIDefaults tables are parsed and compiled into
+            // this map of maps. The key of the compiledDefaults is the
+            // prefix for each style, while the value is a map of
+            // keys->values for that prefix.
+            compiledDefaults = new HashMap<String, TreeMap<String, Object>>();
+
+            // get all the defaults from UIManager.getDefaults() and put them
+            // into the compiledDefaults
+            compileDefaults(compiledDefaults, UIManager.getDefaults());
+
+            // This second statement pulls defaults from the laf defaults
+            UIDefaults lafDefaults = UIManager.getLookAndFeelDefaults();
+            compileDefaults(compiledDefaults, lafDefaults);
+
+            // if it has not already been done, add a listener to both
+            // UIManager.getDefaults() and UIManager.getLookAndFeelDefaults().
+            PropertyChangeListener pcl = (PropertyChangeListener)
+                    ctx.get("NimbusStyle.defaults.pcl");
+
+            // if pcl is null, then it has not yet been registered with
+            // the UIManager defaults for this app context
+            if (pcl == null) {
+                // create a PCL which will simply clear out the compiled
+                // defaults from the app context, causing it to be recomputed
+                // on subsequent passes
+                pcl = new DefaultsListener();
+                // add the PCL to both defaults tables that we pay attention
+                // to, so that if the UIDefaults are updated, then the
+                // precompiled defaults will be cleared from the app context
+                // and recomputed on subsequent passes
+                UIManager.getDefaults().addPropertyChangeListener(pcl);
+                UIManager.getLookAndFeelDefaults().addPropertyChangeListener(pcl);
+                // save the PCL to the app context as a marker indicating
+                // that the PCL has been registered so we don't end up adding
+                // more than one listener to the UIDefaults tables.
+                ctx.put("NimbusStyle.defaults.pcl", pcl);
+            }
+
+            // store the defaults for reuse
+            ctx.put("NimbusStyle.defaults", compiledDefaults);
+        }
+
+        TreeMap<String, Object> defaults = compiledDefaults.get(prefix);
+
+        // inspect the client properties for the key "Nimbus.Overrides". If the
+        // value is an instance of UIDefaults, then these defaults are used
+        // in place of, or in addition to, the defaults in UIManager.
+        if (component != null) {
+            Object o = component.getClientProperty("Nimbus.Overrides");
+            if (o instanceof UIDefaults) {
+                Object i = component.getClientProperty(
+                        "Nimbus.Overrides.InheritDefaults");
+                boolean inherit = i instanceof Boolean ? (Boolean)i : true;
+                UIDefaults d = (UIDefaults)o;
+                TreeMap<String, Object> map = new TreeMap<String, Object>();
+                for (Object obj : d.keySet()) {
+                    if (obj instanceof String) {
+                        String key = (String)obj;
+                        if (key.startsWith(prefix)) {
+                            map.put(key, d.get(key));
+                        }
+                    }
+                }
+                if (inherit) {
+                    defaults.putAll(map);
+                } else {
+                    defaults = map;
+                }
+            }
+        }
+
+        // Now that I've accumulated all the defaults pertaining to this
+        // style, call init which will read these defaults and configure
+        // the default "values".
+        init(values, defaults);
+    }
+
+    /**
+     * Iterates over all the keys in the specified UIDefaults and compiles
+     * those keys into the comiledDefaults data structure. It relies on
+     * parsing the "prefix" out of the key. If the key is not a String or is
+     * null then it is ignored. In all other cases a prefix is parsed out
+     * (even if that prefix is the empty String or is a "fake" prefix. That
+     * is, suppose you had a key Foo~~MySpecial.KeyThing~~. In this case this
+     * is not a Nimbus formatted key, but we don't care, we treat it as if it
+     * is. This doesn't pose any harm, it will simply never be used).
+     *
+     * @param compiledDefaults
+     * @param d
+     */
+    private void compileDefaults(
+            Map<String, TreeMap<String,Object>> compiledDefaults,
+            UIDefaults d) {
+        for (Object obj : new HashSet(d.keySet())) {
+            if (obj instanceof String) {
+                String key = (String)obj;
+                String kp = parsePrefix(key);
+                if (kp == null) continue;
+                TreeMap<String,Object> map = compiledDefaults.get(kp);
+                if (map == null) {
+                    map = new TreeMap<String,Object>();
+                    compiledDefaults.put(kp, map);
+                }
+                map.put(key, d.get(key));
+            }
+        }
+    }
+
+    /**
+     * Initializes the given <code>Values</code> object with the defaults
+     * contained in the given TreeMap.
+     *
+     * @param v The Values object to be initialized
+     * @param myDefaults a map of UIDefaults to use in initializing the Values.
+     *        This map must contain only keys associated with this Style.
+     */
+    private void init(Values v, TreeMap<String, Object> myDefaults) {
+        //a list of the different types of states used by this style. This
+        //list may contain only "standard" states (those defined by Synth),
+        //or it may contain custom states, or it may contain only "standard"
+        //states but list them in a non-standard order.
+        List<State> states = new ArrayList<State>();
+        //a map of state name to code
+        Map<String,Integer> stateCodes = new HashMap<String,Integer>();
+        //This is a list of runtime "state" context objects. These contain
+        //the values associated with each state.
+        List<RuntimeState> runtimeStates = new ArrayList<RuntimeState>();
+
+        //determine whether there are any custom states, or custom state
+        //order. If so, then read all those custom states and define the
+        //"values" stateTypes to be a non-null array.
+        //Otherwise, let the "values" stateTypes be null to indicate that
+        //there are no custom states or custom state ordering
+        String statesString = (String)myDefaults.get(prefix + ".States");
+        if (statesString != null) {
+            String s[] = statesString.split(",");
+            for (int i=0; i<s.length; i++) {
+                s[i] = s[i].trim();
+                if (!State.isStandardStateName(s[i])) {
+                    //this is a non-standard state name, so look for the
+                    //custom state associated with it
+                    String stateName = prefix + "." + s[i];
+                    State customState = (State)myDefaults.get(stateName);
+                    if (customState != null) {
+                        states.add(customState);
+                    }
+                } else {
+                    states.add(State.getStandardState(s[i]));
+                }
+            }
+
+            //if there were any states defined, then set the stateTypes array
+            //to be non-null. Otherwise, leave it null (meaning, use the
+            //standard synth states).
+            if (states.size() > 0) {
+                v.stateTypes = states.toArray(new State[states.size()]);
+            }
+
+            //assign codes for each of the state types
+            int code = 1;
+            for (State state : states) {
+                stateCodes.put(state.getName(), code);
+                code <<= 1;
+            }
+        } else {
+            //since there were no custom states defined, setup the list of
+            //standard synth states. Note that the "v.stateTypes" is not
+            //being set here, indicating that at runtime the state selection
+            //routines should use standard synth states instead of custom
+            //states. I do need to popuplate this temp list now though, so that
+            //the remainder of this method will function as expected.
+            states.add(State.Enabled);
+            states.add(State.MouseOver);
+            states.add(State.Pressed);
+            states.add(State.Disabled);
+            states.add(State.Focused);
+            states.add(State.Selected);
+            states.add(State.Default);
+
+            //assign codes for the states
+            stateCodes.put("Enabled", ENABLED);
+            stateCodes.put("MouseOver", MOUSE_OVER);
+            stateCodes.put("Pressed", PRESSED);
+            stateCodes.put("Disabled", DISABLED);
+            stateCodes.put("Focused", FOCUSED);
+            stateCodes.put("Selected", SELECTED);
+            stateCodes.put("Default", DEFAULT);
+        }
+
+        //Now iterate over all the keys in the defaults table
+        for (String key : myDefaults.keySet()) {
+            //The key is something like JButton.Enabled.backgroundPainter,
+            //or JButton.States, or JButton.background.
+            //Remove the "JButton." portion of the key
+            String temp = key.substring(prefix.length());
+            //if there is a " or : then we skip it because it is a subregion
+            //of some kind
+            if (temp.indexOf('"') != -1 || temp.indexOf(':') != -1) continue;
+            //remove the separator
+            temp = temp.substring(1);
+            //At this point, temp may be any of the following:
+            //background
+            //[Enabled].background
+            //[Enabled+MouseOver].background
+            //property.foo
+
+            //parse out the states and the property
+            String stateString = null;
+            String property = null;
+            int bracketIndex = temp.indexOf(']');
+            if (bracketIndex < 0) {
+                //there is not a state string, so property = temp
+                property = temp;
+            } else {
+                stateString = temp.substring(0, bracketIndex);
+                property = temp.substring(bracketIndex + 2);
+            }
+
+            //now that I have the state (if any) and the property, get the
+            //value for this property and install it where it belongs
+            if (stateString == null) {
+                //there was no state, just a property. Check for the custom
+                //"contentMargins" property (which is handled specially by
+                //Synth/Nimbus). Also check for the property being "States",
+                //in which case it is not a real property and should be ignored.
+                //otherwise, assume it is a property and install it on the
+                //values object
+                if ("contentMargins".equals(property)) {
+                    v.contentMargins = (Insets)myDefaults.get(key);
+                } else if ("States".equals(property)) {
+                    //ignore
+                } else {
+                    v.defaults.put(property, myDefaults.get(key));
+                }
+            } else {
+                //it is possible that the developer has a malformed UIDefaults
+                //entry, such that something was specified in the place of
+                //the State portion of the key but it wasn't a state. In this
+                //case, skip will be set to true
+                boolean skip = false;
+                //this variable keeps track of the int value associated with
+                //the state. See SynthState for details.
+                int componentState = 0;
+                //Multiple states may be specified in the string, such as
+                //Enabled+MouseOver
+                String[] stateParts = stateString.split("\\+");
+                //For each state, we need to find the State object associated
+                //with it, or skip it if it cannot be found.
+                for (String s : stateParts) {
+                    if (stateCodes.containsKey(s)) {
+                        componentState |= stateCodes.get(s);
+                    } else {
+                        //Was not a state. Maybe it was a subregion or something
+                        //skip it.
+                        skip = true;
+                        break;
+                    }
+                }
+
+                if (skip) continue;
+
+                //find the RuntimeState for this State
+                RuntimeState rs = null;
+                for (RuntimeState s : runtimeStates) {
+                    if (s.state == componentState) {
+                        rs = s;
+                        break;
+                    }
+                }
+
+                //couldn't find the runtime state, so create a new one
+                if (rs == null) {
+                    rs = new RuntimeState(componentState, stateString);
+                    runtimeStates.add(rs);
+                }
+
+                //check for a couple special properties, such as for the
+                //painters. If these are found, then set the specially on
+                //the runtime state. Else, it is just a normal property,
+                //so put it in the UIDefaults associated with that runtime
+                //state
+                if ("backgroundPainter".equals(property)) {
+                    rs.backgroundPainter = (Painter)myDefaults.get(key);
+                } else if ("foregroundPainter".equals(property)) {
+                    rs.foregroundPainter = (Painter) myDefaults.get(key);
+                } else if ("borderPainter".equals(property)) {
+                    rs.borderPainter = (Painter) myDefaults.get(key);
+                } else {
+                    rs.defaults.put(property, myDefaults.get(key));
+                }
+            }
+        }
+
+        //now that I've collected all the runtime states, I'll sort them based
+        //on their integer "state" (see SynthState for how this works).
+        Collections.sort(runtimeStates, STATE_COMPARATOR);
+
+        //finally, set the array of runtime states on the values object
+        v.states = runtimeStates.toArray(new RuntimeState[runtimeStates.size()]);
+    }
+
+    /**
+     * @inheritDoc
+     *
+     * Overridden to cause this style to populate itself with data from
+     * UIDefaults, if necessary.
+     */
+    @Override public Insets getInsets(SynthContext ctx, Insets in) {
+        if (in == null) {
+            in = new Insets(0, 0, 0, 0);
+        }
+
+        Values v = getValues(ctx);
+
+        if (v.contentMargins == null) {
+            in.bottom = in.top = in.left = in.right = 0;
+            return in;
+        } else {
+            in.bottom = v.contentMargins.bottom;
+            in.top = v.contentMargins.top;
+            in.left = v.contentMargins.left;
+            in.right = v.contentMargins.right;
+            // Account for scale
+            // The key "JComponent.sizeVariant" is used to match Apple's LAF
+            String scaleKey = (String)ctx.getComponent().getClientProperty(
+                    "JComponent.sizeVariant");
+            if (scaleKey != null){
+                if (LARGE_KEY.equals(scaleKey)){
+                    in.bottom *= LARGE_SCALE;
+                    in.top *= LARGE_SCALE;
+                    in.left *= LARGE_SCALE;
+                    in.right *= LARGE_SCALE;
+                } else if (SMALL_KEY.equals(scaleKey)){
+                    in.bottom *= SMALL_SCALE;
+                    in.top *= SMALL_SCALE;
+                    in.left *= SMALL_SCALE;
+                    in.right *= SMALL_SCALE;
+                } else if (MINI_KEY.equals(scaleKey)){
+                    in.bottom *= MINI_SCALE;
+                    in.top *= MINI_SCALE;
+                    in.left *= MINI_SCALE;
+                    in.right *= MINI_SCALE;
+                }
+            }
+            return in;
+        }
+    }
+
+    /**
+     * @inheritDoc
+     *
+     * <p>Overridden to cause this style to populate itself with data from
+     * UIDefaults, if necessary.</p>
+     *
+     * <p>In addition, NimbusStyle handles ColorTypes slightly differently from
+     * Synth.</p>
+     * <ul>
+     *  <li>ColorType.BACKGROUND will equate to the color stored in UIDefaults
+     *      named "background".</li>
+     *  <li>ColorType.TEXT_BACKGROUND will equate to the color stored in
+     *      UIDefaults named "textBackground".</li>
+     *  <li>ColorType.FOREGROUND will equate to the color stored in UIDefaults
+     *      named "textForeground".</li>
+     *  <li>ColorType.TEXT_FOREGROUND will equate to the color stored in
+     *      UIDefaults named "textForeground".</li>
+     * </ul>
+     */
+    @Override protected Color getColorForState(SynthContext ctx, ColorType type) {
+        String key = null;
+        if (type == ColorType.BACKGROUND) {
+            key = "background";
+        } else if (type == ColorType.FOREGROUND) {
+            //map FOREGROUND as TEXT_FOREGROUND
+            key = "textForeground";
+        } else if (type == ColorType.TEXT_BACKGROUND) {
+            key = "textBackground";
+        } else if (type == ColorType.TEXT_FOREGROUND) {
+            key = "textForeground";
+        } else if (type == ColorType.FOCUS) {
+            key = "focus";
+        } else if (type != null) {
+            key = type.toString();
+        } else {
+            return DEFAULT_COLOR;
+        }
+        Color c = (Color) get(ctx, key);
+        //if all else fails, return a default color (which is a ColorUIResource)
+        if (c == null) c = DEFAULT_COLOR;
+        return c;
+    }
+
+    /**
+     * @inheritDoc
+     *
+     * Overridden to cause this style to populate itself with data from
+     * UIDefaults, if necessary. If a value named "font" is not found in
+     * UIDefaults, then the "defaultFont" font in UIDefaults will be returned
+     * instead.
+     */
+    @Override protected Font getFontForState(SynthContext ctx) {
+        Font f = (Font)get(ctx, "font");
+        if (f == null) f = UIManager.getFont("defaultFont");
+
+        // Account for scale
+        // The key "JComponent.sizeVariant" is used to match Apple's LAF
+        String scaleKey = (String)ctx.getComponent().getClientProperty(
+                "JComponent.sizeVariant");
+        if (scaleKey != null){
+            if (LARGE_KEY.equals(scaleKey)){
+                f = f.deriveFont(Math.round(f.getSize2D()*LARGE_SCALE));
+            } else if (SMALL_KEY.equals(scaleKey)){
+                f = f.deriveFont(Math.round(f.getSize2D()*SMALL_SCALE));
+            } else if (MINI_KEY.equals(scaleKey)){
+                f = f.deriveFont(Math.round(f.getSize2D()*MINI_SCALE));
+            }
+        }
+        return f;
+    }
+
+    /**
+     * @inheritDoc
+     *
+     * Returns the SynthPainter for this style, which ends up delegating to
+     * the Painters installed in this style.
+     */
+    @Override public SynthPainter getPainter(SynthContext ctx) {
+        return painter;
+    }
+
+    /**
+     * @inheritDoc
+     *
+     * Overridden to cause this style to populate itself with data from
+     * UIDefaults, if necessary. If opacity is not specified in UI defaults,
+     * then it defaults to being non-opaque.
+     */
+    @Override public boolean isOpaque(SynthContext ctx) {
+        // Force Table CellRenderers to be opaque
+        if ("Table.cellRenderer".equals(ctx.getComponent().getName())) {
+            return true;
+        }
+        Boolean opaque = (Boolean)get(ctx, "opaque");
+        return opaque == null ? false : opaque;
+    }
+
+    /**
+     * @inheritDoc
+     *
+     * <p>Overridden to cause this style to populate itself with data from
+     * UIDefaults, if necessary.</p>
+     *
+     * <p>Properties in UIDefaults may be specified in a chained manner. For
+     * example:
+     * <pre>
+     * background
+     * Button.opacity
+     * Button.Enabled.foreground
+     * Button.Enabled+Selected.background
+     * </pre></p>
+     *
+     * <p>In this example, suppose you were in the Enabled+Selected state and
+     * searched for "foreground". In this case, we first check for
+     * Button.Enabled+Selected.foreground, but no such color exists. We then
+     * fall back to the next valid state, in this case,
+     * Button.Enabled.foreground, and have a match. So we return it.</p>
+     *
+     * <p>Again, if we were in the state Enabled and looked for "background", we
+     * wouldn't find it in Button.Enabled, or in Button, but would at the top
+     * level in UIManager. So we return that value.</p>
+     *
+     * <p>One special note: the "key" passed to this method could be of the form
+     * "background" or "Button.background" where "Button" equals the prefix
+     * passed to the NimbusStyle constructor. In either case, it looks for
+     * "background".</p>
+     *
+     * @param ctx
+     * @param key must not be null
+     */
+    @Override public Object get(SynthContext ctx, Object key) {
+        Values v = getValues(ctx);
+
+        // strip off the prefix, if there is one.
+        String fullKey = key.toString();
+        String partialKey = fullKey.substring(fullKey.indexOf(".") + 1);
+
+        Object obj = null;
+        int xstate = getExtendedState(ctx, v);
+
+        // check the cache
+        tmpKey.init(partialKey, xstate);
+        obj = v.cache.get(tmpKey);
+        boolean wasInCache = obj != null;
+        if (!wasInCache){
+            // Search exact matching states and then lesser matching states
+            RuntimeState s = null;
+            int[] lastIndex = new int[] {-1};
+            while (obj == null &&
+                    (s = getNextState(v.states, lastIndex, xstate)) != null) {
+                obj = s.defaults.get(partialKey);
+            }
+            // Search Region Defaults
+            if (obj == null && v.defaults != null) {
+                obj = v.defaults.get(partialKey);
+            }
+            // return found object
+            // Search UIManager Defaults
+            if (obj == null) obj = UIManager.get(fullKey);
+            // Search Synth Defaults for InputMaps
+            if (obj == null && partialKey.equals("focusInputMap")) {
+                obj = super.get(ctx, fullKey);
+            }
+            // if all we got was a null, store this fact for later use
+            v.cache.put(new CacheKey(partialKey, xstate),
+                    obj == null ? NULL : obj);
+        }
+        // return found object
+        return obj == NULL ? null : obj;
+    }
+
+    /**
+     * Gets the appropriate background Painter, if there is one, for the state
+     * specified in the given SynthContext. This method does appropriate
+     * fallback searching, as described in #get.
+     *
+     * @param ctx The SynthContext. Must not be null.
+     * @return The background painter associated for the given state, or null if
+     * none could be found.
+     */
+    public Painter getBackgroundPainter(SynthContext ctx) {
+        Values v = getValues(ctx);
+        int xstate = getExtendedState(ctx, v);
+        Painter p = null;
+
+        // check the cache
+        tmpKey.init("backgroundPainter$$instance", xstate);
+        p = (Painter)v.cache.get(tmpKey);
+        if (p != null) return p;
+
+        // not in cache, so lookup and store in cache
+        RuntimeState s = null;
+        int[] lastIndex = new int[] {-1};
+        while ((s = getNextState(v.states, lastIndex, xstate)) != null) {
+            if (s.backgroundPainter != null) {
+                p = s.backgroundPainter;
+                break;
+            }
+        }
+        if (p == null) p = (Painter)get(ctx, "backgroundPainter");
+        if (p != null) {
+            v.cache.put(new CacheKey("backgroundPainter$$instance", xstate), p);
+        }
+        return p;
+    }
+
+    /**
+     * Gets the appropriate foreground Painter, if there is one, for the state
+     * specified in the given SynthContext. This method does appropriate
+     * fallback searching, as described in #get.
+     *
+     * @param ctx The SynthContext. Must not be null.
+     * @return The foreground painter associated for the given state, or null if
+     * none could be found.
+     */
+    public Painter getForegroundPainter(SynthContext ctx) {
+        Values v = getValues(ctx);
+        int xstate = getExtendedState(ctx, v);
+        Painter p = null;
+
+        // check the cache
+        tmpKey.init("foregroundPainter$$instance", xstate);
+        p = (Painter)v.cache.get(tmpKey);
+        if (p != null) return p;
+
+        // not in cache, so lookup and store in cache
+        RuntimeState s = null;
+        int[] lastIndex = new int[] {-1};
+        while ((s = getNextState(v.states, lastIndex, xstate)) != null) {
+            if (s.foregroundPainter != null) {
+                p = s.foregroundPainter;
+                break;
+            }
+        }
+        if (p == null) p = (Painter)get(ctx, "foregroundPainter");
+        if (p != null) {
+            v.cache.put(new CacheKey("foregroundPainter$$instance", xstate), p);
+        }
+        return p;
+    }
+
+    /**
+     * Gets the appropriate border Painter, if there is one, for the state
+     * specified in the given SynthContext. This method does appropriate
+     * fallback searching, as described in #get.
+     *
+     * @param ctx The SynthContext. Must not be null.
+     * @return The border painter associated for the given state, or null if
+     * none could be found.
+     */
+    public Painter getBorderPainter(SynthContext ctx) {
+        Values v = getValues(ctx);
+        int xstate = getExtendedState(ctx, v);
+        Painter p = null;
+
+        // check the cache
+        tmpKey.init("borderPainter$$instance", xstate);
+        p = (Painter)v.cache.get(tmpKey);
+        if (p != null) return p;
+
+        // not in cache, so lookup and store in cache
+        RuntimeState s = null;
+        int[] lastIndex = new int[] {-1};
+        while ((s = getNextState(v.states, lastIndex, xstate)) != null) {
+            if (s.borderPainter != null) {
+                p = s.borderPainter;
+                break;
+            }
+        }
+        if (p == null) p = (Painter)get(ctx, "borderPainter");
+        if (p != null) {
+            v.cache.put(new CacheKey("borderPainter$$instance", xstate), p);
+        }
+        return p;
+    }
+
+    /**
+     * Utility method which returns the proper Values based on the given
+     * SynthContext. Ensures that parsing of the values has occurred, or
+     * reoccurs as necessary.
+     *
+     * @param ctx The SynthContext
+     * @return a non-null values reference
+     */
+    private Values getValues(SynthContext ctx) {
+        validate();
+        return values;
+    }
+
+    /**
+     * Simple utility method that searchs the given array of Strings for the
+     * given string. This method is only called from getExtendedState if
+     * the developer has specified a specific state for the component to be
+     * in (ie, has "wedged" the component in that state) by specifying
+     * they client property "Nimbus.State".
+     *
+     * @param names a non-null array of strings
+     * @param name the name to look for in the array
+     * @return true or false based on whether the given name is in the array
+     */
+    private boolean contains(String[] names, String name) {
+        assert name != null;
+        for (int i=0; i<names.length; i++) {
+            if (name.equals(names[i])) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * <p>Gets the extended state for a given synth context. Nimbus supports the
+     * ability to define custom states. The algorithm used for choosing what
+     * style information to use for a given state requires a single integer
+     * bit string where each bit in the integer represents a different state
+     * that the component is in. This method uses the componentState as
+     * reported in the SynthContext, in addition to custom states, to determine
+     * what this extended state is.</p>
+     *
+     * <p>In addition, this method checks the component in the given context
+     * for a client property called "Nimbus.State". If one exists, then it will
+     * decompose the String associated with that property to determine what
+     * state to return. In this way, the developer can force a component to be
+     * in a specific state, regardless of what the "real" state of the component
+     * is.</p>
+     *
+     * <p>The string associated with "Nimbus.State" would be of the form:
+     * <pre>Enabled+CustomState+MouseOver</pre></p>
+     *
+     * @param ctx
+     * @param v
+     * @return
+     */
+    private int getExtendedState(SynthContext ctx, Values v) {
+        JComponent c = ctx.getComponent();
+        int xstate = 0;
+        int mask = 1;
+        //check for the Nimbus.State client property
+        //Performance NOTE: getClientProperty ends up inside a synchronized
+        //block, so there is some potential for performance issues here, however
+        //I'm not certain that there is one on a modern VM.
+        Object property = c.getClientProperty("Nimbus.State");
+        if (property != null) {
+            String stateNames = property.toString();
+            String[] states = stateNames.split("\\+");
+            if (v.stateTypes == null){
+                // standard states only
+                for (String stateStr : states) {
+                    State.StandardState s = State.getStandardState(stateStr);
+                    if (s != null) xstate |= s.getState();
+                }
+            } else {
+                // custom states
+                for (State s : v.stateTypes) {
+                    if (contains(states, s.getName())) {
+                        xstate |= mask;
+                    }
+                    mask <<= 1;
+                }
+            }
+        } else {
+            //if there are no custom states defined, then simply return the
+            //state that Synth reported
+            if (v.stateTypes == null) return ctx.getComponentState();
+
+            //there are custom states on this values, so I'll have to iterate
+            //over them all and return a custom extended state
+            int state = ctx.getComponentState();
+            for (State s : v.stateTypes) {
+                if (s.isInState(c, state)) {
+                    xstate |= mask;
+                }
+                mask <<= 1;
+            }
+        }
+        return xstate;
+    }
+
+    /**
+     * <p>Gets the RuntimeState that most closely matches the state in the given
+     * context, but is less specific than the given "lastState". Essentially,
+     * this allows you to search for the next best state.</p>
+     *
+     * <p>For example, if you had the following three states:
+     * <pre>
+     * Enabled
+     * Enabled+Pressed
+     * Disabled
+     * </pre>
+     * And you wanted to find the state that best represented
+     * ENABLED+PRESSED+FOCUSED and <code>lastState</code> was null (or an
+     * empty array, or an array with a single int with index == -1), then
+     * Enabled+Pressed would be returned. If you then call this method again but
+     * pass the index of Enabled+Pressed as the "lastState", then
+     * Enabled would be returned. If you call this method a third time and pass
+     * the index of Enabled in as the <code>lastState</code>, then null would be
+     * returned.</p>
+     *
+     * <p>The actual code path for determining the proper state is the same as
+     * in Synth.</p>
+     *
+     * @param ctx
+     * @param lastState a 1 element array, allowing me to do pass-by-reference.
+     * @return
+     */
+    private RuntimeState getNextState(RuntimeState[] states,
+                                      int[] lastState,
+                                      int xstate) {
+        // Use the StateInfo with the most bits that matches that of state.
+        // If there are none, then fallback to
+        // the StateInfo with a state of 0, indicating it'll match anything.
+
+        // Consider if we have 3 StateInfos a, b and c with states:
+        // SELECTED, SELECTED | ENABLED, 0
+        //
+        // Input                          Return Value
+        // -----                          ------------
+        // SELECTED                       a
+        // SELECTED | ENABLED             b
+        // MOUSE_OVER                     c
+        // SELECTED | ENABLED | FOCUSED   b
+        // ENABLED                        c
+
+        if (states != null && states.length > 0) {
+            int bestCount = 0;
+            int bestIndex = -1;
+            int wildIndex = -1;
+
+            //if xstate is 0, then search for the runtime state with component
+            //state of 0. That is, find the exact match and return it.
+            if (xstate == 0) {
+                for (int counter = states.length - 1; counter >= 0; counter--) {
+                    if (states[counter].state == 0) {
+                        lastState[0] = counter;
+                        return states[counter];
+                    }
+                }
+                //an exact match couldn't be found, so there was no match.
+                lastState[0] = -1;
+                return null;
+            }
+
+            //xstate is some value != 0
+
+            //determine from which index to start looking. If lastState[0] is -1
+            //then we know to start from the end of the state array. Otherwise,
+            //we start at the lastIndex - 1.
+            int lastStateIndex = lastState == null || lastState[0] == -1 ?
+                states.length : lastState[0];
+
+            for (int counter = lastStateIndex - 1; counter >= 0; counter--) {
+                int oState = states[counter].state;
+
+                if (oState == 0) {
+                    if (wildIndex == -1) {
+                        wildIndex = counter;
+                    }
+                } else if ((xstate & oState) == oState) {
+                    // This is key, we need to make sure all bits of the
+                    // StateInfo match, otherwise a StateInfo with
+                    // SELECTED | ENABLED would match ENABLED, which we
+                    // don't want.
+
+                    // This comes from BigInteger.bitCnt
+                    int bitCount = oState;
+                    bitCount -= (0xaaaaaaaa & bitCount) >>> 1;
+                    bitCount = (bitCount & 0x33333333) + ((bitCount >>> 2) &
+                            0x33333333);
+                    bitCount = bitCount + (bitCount >>> 4) & 0x0f0f0f0f;
+                    bitCount += bitCount >>> 8;
+                    bitCount += bitCount >>> 16;
+                    bitCount = bitCount & 0xff;
+                    if (bitCount > bestCount) {
+                        bestIndex = counter;
+                        bestCount = bitCount;
+                    }
+                }
+            }
+            if (bestIndex != -1) {
+                lastState[0] = bestIndex;
+                return states[bestIndex];
+            }
+            if (wildIndex != -1) {
+                lastState[0] = wildIndex;
+                return states[wildIndex];
+            }
+        }
+        lastState[0] = -1;
+        return null;
+    }
+
+    /**
+     * Contains values such as the UIDefaults and painters asssociated with
+     * a state. Whereas <code>State</code> represents a distinct state that a
+     * component can be in (such as Enabled), this class represents the colors,
+     * fonts, painters, etc associated with some state for this
+     * style.
+     */
+    private final class RuntimeState implements Cloneable {
+        int state;
+        Painter backgroundPainter;
+        Painter foregroundPainter;
+        Painter borderPainter;
+        String stateName;
+        UIDefaults defaults = new UIDefaults(10, .7f);
+
+        private RuntimeState(int state, String stateName) {
+            this.state = state;
+            this.stateName = stateName;
+        }
+
+        @Override
+        public String toString() {
+            return stateName;
+        }
+
+        @Override
+        public RuntimeState clone() {
+            RuntimeState clone = new RuntimeState(state, stateName);
+            clone.backgroundPainter = backgroundPainter;
+            clone.foregroundPainter = foregroundPainter;
+            clone.borderPainter = borderPainter;
+            clone.defaults.putAll(defaults);
+            return clone;
+        }
+    }
+
+    /**
+     * Essentially a struct of data for a style. A default instance of this
+     * class is used by NimbusStyle. Additional instances exist for each
+     * component that has overrides.
+     */
+    private static final class Values {
+        /**
+         * The list of State types. A State represents a type of state, such
+         * as Enabled, Default, WindowFocused, etc. These can be custom states.
+         */
+        State[] stateTypes = null;
+        /**
+         * The list of actual runtime state representations. These can represent things such
+         * as Enabled + Focused. Thus, they differ from States in that they contain
+         * several states together, and have associated properties, data, etc.
+         */
+        RuntimeState[] states = null;
+        /**
+         * The content margins for this region.
+         */
+        Insets contentMargins;
+        /**
+         * Defaults on the region/component level.
+         */
+        UIDefaults defaults = new UIDefaults(10, .7f);
+        /**
+         * Simple cache. After a value has been looked up, it is stored
+         * in this cache for later retrieval. The key is a concatenation of
+         * the property being looked up, two dollar signs, and the extended
+         * state. So for example:
+         *
+         * foo.bar$$2353
+         */
+        Map<CacheKey,Object> cache = new HashMap<CacheKey,Object>();
+    }
+
+    /**
+     * This implementation presupposes that key is never null and that
+     * the two keys being checked for equality are never null
+     */
+    private static final class CacheKey {
+        private String key;
+        private int xstate;
+
+        CacheKey(Object key, int xstate) {
+            init(key, xstate);
+        }
+
+        void init(Object key, int xstate) {
+            this.key = key.toString();
+            this.xstate = xstate;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            final CacheKey other = (CacheKey) obj;
+            if (obj == null) return false;
+            if (this.xstate != other.xstate) return false;
+            if (!this.key.equals(other.key)) return false;
+            return true;
+        }
+
+        @Override
+        public int hashCode() {
+            int hash = 3;
+            hash = 29 * hash + this.key.hashCode();
+            hash = 29 * hash + this.xstate;
+            return hash;
+        }
+    }
+
+    /**
+     * This listener is used to listen to the UIDefaults tables and clear out
+     * the cached-precompiled map of defaults in that case.
+     */
+    private static final class DefaultsListener implements PropertyChangeListener {
+        @Override
+        public void propertyChange(PropertyChangeEvent evt) {
+            AppContext.getAppContext().put("NimbusStyle.defaults", null);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/OuterGlowEffect.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.Color;
+
+/**
+ * InnerGlowEffect
+ *
+ * @author Created by Jasper Potts (Jun 21, 2007)
+ */
+class OuterGlowEffect extends DropShadowEffect {
+    OuterGlowEffect() {
+        distance = 0;
+        color = new Color(255, 255, 211);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/PainterImpl.template	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package ${PACKAGE};
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ${PAINTER_NAME} extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ${PAINTER_NAME} to determine which region/state is being painted
+    //by that instance.
+${STATIC_DECL}
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ${PAINTER_NAME} would be created. For the moment at least,
+    //however, all are created for each instance.
+${COLORS_DECL}
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ${PAINTER_NAME}(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+${DO_PAINT_SWITCH_BODY}
+        }
+    }
+        
+${GET_EXTENDED_CACHE_KEYS}
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+${PAINTING_DECL}
+
+${SHAPES_DECL}
+
+${GRADIENTS_DECL}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/ShadowEffect.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.Color;
+
+/**
+ * ShadowEffect - base class with all the standard properties for shadow effects
+ *
+ * @author Created by Jasper Potts (Jun 18, 2007)
+ */
+abstract class ShadowEffect extends Effect {
+    protected Color color = Color.BLACK;
+    /** Opacity a float 0-1 for percentage */
+    protected float opacity = 0.75f;
+    /** Angle in degrees between 0-360 */
+    protected int angle = 135;
+    /** Distance in pixels */
+    protected int distance = 5;
+    /** The shadow spread between 0-100 % */
+    protected int spread = 0;
+    /** Size in pixels */
+    protected int size = 5;
+
+    // =================================================================================================================
+    // Bean methods
+
+    Color getColor() {
+        return color;
+    }
+
+    void setColor(Color color) {
+        Color old = getColor();
+        this.color = color;
+    }
+
+    float getOpacity() {
+        return opacity;
+    }
+
+    void setOpacity(float opacity) {
+        float old = getOpacity();
+        this.opacity = opacity;
+    }
+
+    int getAngle() {
+        return angle;
+    }
+
+    void setAngle(int angle) {
+        int old = getAngle();
+        this.angle = angle;
+    }
+
+    int getDistance() {
+        return distance;
+    }
+
+    void setDistance(int distance) {
+        int old = getDistance();
+        this.distance = distance;
+    }
+
+    int getSpread() {
+        return spread;
+    }
+
+    void setSpread(int spread) {
+        int old = getSpread();
+        this.spread = spread;
+    }
+
+    int getSize() {
+        return size;
+    }
+
+    void setSize(int size) {
+        int old = getSize();
+        this.size = size;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/State.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,213 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.swing.JComponent;
+import javax.swing.plaf.synth.SynthConstants;
+
+/**
+ * <p>Represents a built in, or custom, state in Nimbus.</p>
+ *
+ * <p>Synth provides several built in states, which are:
+ * <ul>
+ *  <li>Enabled</li>
+ *  <li>Mouse Over</li>
+ *  <li>Pressed</li>
+ *  <li>Disabled</li>
+ *  <li>Focused</li>
+ *  <li>Selected</li>
+ *  <li>Default</li>
+ * </ul>
+ *
+ * <p>However, there are many more states that could be described in a LookAndFeel, and it
+ * would be nice to style components differently based on these different states.
+ * For example, a progress bar could be "indeterminate". It would be very convenient
+ * to allow this to be defined as a "state".</p>
+ *
+ * <p>This class, State, is intended to be used for such situations.
+ * Simply implement the abstract #isInState method. It returns true if the given
+ * JComponent is "in this state", false otherwise. This method will be called
+ * <em>many</em> times in <em>performance sensitive loops</em>. It must execute
+ * very quickly.</p>
+ *
+ * <p>For example, the following might be an implementation of a custom
+ * "Indeterminate" state for JProgressBars:</p>
+ *
+ * <pre><code>
+ *     public final class IndeterminateState extends State&lt;JProgressBar&gt; {
+ *         public IndeterminateState() {
+ *             super("Indeterminate");
+ *         }
+ *
+ *         &#64;Override
+ *         protected boolean isInState(JProgressBar c) {
+ *             return c.isIndeterminate();
+ *         }
+ *     }
+ * </code></pre>
+ */
+public abstract class State<T extends JComponent>{
+    static final Map<String, StandardState> standardStates = new HashMap<String, StandardState>(7);
+    static final State Enabled = new StandardState(SynthConstants.ENABLED);
+    static final State MouseOver = new StandardState(SynthConstants.MOUSE_OVER);
+    static final State Pressed = new StandardState(SynthConstants.PRESSED);
+    static final State Disabled = new StandardState(SynthConstants.DISABLED);
+    static final State Focused = new StandardState(SynthConstants.FOCUSED);
+    static final State Selected = new StandardState(SynthConstants.SELECTED);
+    static final State Default = new StandardState(SynthConstants.DEFAULT);
+
+    private String name;
+
+    /**
+     * <p>Create a new custom State. Specify the name for the state. The name should
+     * be unique within the states set for any one particular component.
+     * The name of the state should coincide with the name used in UIDefaults.</p>
+     *
+     * <p>For example, the following would be correct:</p>
+     * <pre><code>
+     *     defaults.put("Button.States", "Enabled, Foo, Disabled");
+     *     defaults.put("Button.Foo", new FooState("Foo"));
+     * </code></pre>
+     *
+     * @param name a simple user friendly name for the state, such as "Indeterminate"
+     *        or "EmbeddedPanel" or "Blurred". It is customary to use camel case,
+     *        with the first letter capitalized.
+     */
+    protected State(String name) {
+        this.name = name;
+    }
+
+    @Override public String toString() { return name; }
+
+    /**
+     * <p>This is the main entry point, called by NimbusStyle.</p>
+     *
+     * <p>There are both custom states and standard states. Standard states
+     * correlate to the states defined in SynthConstants. When a UI delegate
+     * constructs a SynthContext, it specifies the state that the component is
+     * in according to the states defined in SynthConstants. Our NimbusStyle
+     * will then take this state, and query each State instance in the style
+     * asking whether isInState(c, s).</p>
+     *
+     * <p>Now, only the standard states care about the "s" param. So we have
+     * this odd arrangement:</p>
+     * <ul>
+     *     <li>NimbusStyle calls State.isInState(c, s)</li>
+     *     <li>State.isInState(c, s) simply delegates to State.isInState(c)</li>
+     *     <li><em>EXCEPT</em>, StandardState overrides State.isInState(c, s) and
+     *         returns directly from that method after checking its state, and
+     *         does not call isInState(c) (since it is not needed for standard states).</li>
+     * </ul>
+     */
+    boolean isInState(T c, int s) {
+        return isInState(c);
+    }
+
+    /**
+     * <p>Gets whether the specified JComponent is in the custom state represented
+     * by this class. <em>This is an extremely performance sensitive loop.</em>
+     * Please take proper precautions to ensure that it executes quickly.</p>
+     *
+     * <p>Nimbus uses this method to help determine what state a JComponent is
+     * in. For example, a custom State could exist for JProgressBar such that
+     * it would return <code>true</code> when the progress bar is indeterminate.
+     * Such an implementation of this method would simply be:</p>
+     *
+     * <pre><code> return c.isIndeterminate();</code></pre>
+     *
+     * @param c the JComponent to test. This will never be null.
+     * @return true if <code>c</code> is in the custom state represented by
+     *         this <code>State</code> instance
+     */
+    protected abstract boolean isInState(T c);
+
+    String getName() { return name; }
+
+    static boolean isStandardStateName(String name) {
+        return standardStates.containsKey(name);
+    }
+
+    static StandardState getStandardState(String name) {
+        return standardStates.get(name);
+    }
+
+    static final class StandardState extends State<JComponent> {
+        private int state;
+
+        private StandardState(int state) {
+            super(toString(state));
+            this.state = state;
+            standardStates.put(getName(), this);
+        }
+
+        public int getState() {
+            return state;
+        }
+
+        @Override
+        boolean isInState(JComponent c, int s) {
+            return (s & state) == state;
+        }
+
+        @Override
+        protected boolean isInState(JComponent c) {
+            throw new AssertionError("This method should never be called");
+        }
+
+        private static String toString(int state) {
+            StringBuffer buffer = new StringBuffer();
+            if ((state & SynthConstants.DEFAULT) == SynthConstants.DEFAULT) {
+                buffer.append("Default");
+            }
+            if ((state & SynthConstants.DISABLED) == SynthConstants.DISABLED) {
+                if (buffer.length() > 0) buffer.append("+");
+                buffer.append("Disabled");
+            }
+            if ((state & SynthConstants.ENABLED) == SynthConstants.ENABLED) {
+                if (buffer.length() > 0) buffer.append("+");
+                buffer.append("Enabled");
+            }
+            if ((state & SynthConstants.FOCUSED) == SynthConstants.FOCUSED) {
+                if (buffer.length() > 0) buffer.append("+");
+                buffer.append("Focused");
+            }
+            if ((state & SynthConstants.MOUSE_OVER) == SynthConstants.MOUSE_OVER) {
+                if (buffer.length() > 0) buffer.append("+");
+                buffer.append("MouseOver");
+            }
+            if ((state & SynthConstants.PRESSED) == SynthConstants.PRESSED) {
+                if (buffer.length() > 0) buffer.append("+");
+                buffer.append("Pressed");
+            }
+            if ((state & SynthConstants.SELECTED) == SynthConstants.SELECTED) {
+                if (buffer.length() > 0) buffer.append("+");
+                buffer.append("Selected");
+            }
+            return buffer.toString();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/StateImpl.template	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package ${PACKAGE};
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class ${STATE_NAME} extends State {
+    ${STATE_NAME}() {
+        super("${STATE_KEY}");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+${BODY}
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/SynthPainterImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,2802 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.NoninvertibleTransformException;
+import java.awt.image.BufferedImage;
+import java.util.*;
+import javax.swing.*;
+import javax.swing.plaf.synth.SynthContext;
+import javax.swing.plaf.synth.SynthPainter;
+import javax.swing.plaf.synth.SynthConstants;
+
+import javax.swing.Painter;
+
+
+class SynthPainterImpl extends SynthPainter {
+    private NimbusStyle style;
+
+    SynthPainterImpl(NimbusStyle style) {
+        this.style = style;
+    }
+
+    /**
+     * Paint the provided painter using the provided transform at the specified
+     * position and size. Handles if g is a non 2D Graphics by painting via a
+     * BufferedImage.
+     */
+    private void paint(Painter p, SynthContext ctx, Graphics g, int x, int y,
+                       int w, int h, AffineTransform transform) {
+        if (p != null) {
+            if (g instanceof Graphics2D){
+                Graphics2D gfx = (Graphics2D)g;
+                if (transform!=null){
+                    gfx.transform(transform);
+                }
+                gfx.translate(x, y);
+                p.paint(gfx, ctx.getComponent(), w, h);
+                gfx.translate(-x, -y);
+                if (transform!=null){
+                    try {
+                        gfx.transform(transform.createInverse());
+                    } catch (NoninvertibleTransformException e) {
+                        // this should never happen as we are in control of all
+                        // calls into this method and only ever pass in simple
+                        // transforms of rotate, flip and translates
+                        e.printStackTrace();
+                    }
+                }
+            } else {
+                // use image if we are printing to a Java 1.1 PrintGraphics as
+                // it is not a instance of Graphics2D
+                BufferedImage img = new BufferedImage(w,h,
+                        BufferedImage.TYPE_INT_ARGB);
+                Graphics2D gfx = img.createGraphics();
+                if (transform!=null){
+                    gfx.transform(transform);
+                }
+                p.paint(gfx, ctx.getComponent(), w, h);
+                gfx.dispose();
+                g.drawImage(img,x,y,null);
+                img = null;
+            }
+        }
+    }
+
+    private void paintBackground(SynthContext ctx, Graphics g, int x, int y,
+                                 int w, int h, AffineTransform transform) {
+        // if the background color of the component is 100% transparent
+        // then we should not paint any background graphics. This is a solution
+        // for there being no way of turning off Nimbus background painting as
+        // basic components are all non-opaque by default.
+        Component c = ctx.getComponent();
+        Color bg = (c != null) ? c.getBackground() : null;
+        if (bg == null || bg.getAlpha() > 0){
+            Painter backgroundPainter = style.getBackgroundPainter(ctx);
+            if (backgroundPainter != null) {
+                paint(backgroundPainter, ctx, g, x, y, w, h,transform);
+            }
+        }
+    }
+
+    private void paintForeground(SynthContext ctx, Graphics g, int x, int y,
+                                 int w, int h, AffineTransform transform) {
+        Painter foregroundPainter = style.getForegroundPainter(ctx);
+        if (foregroundPainter != null) {
+            paint(foregroundPainter, ctx, g, x, y, w, h,transform);
+        }
+    }
+
+    private void paintBorder(SynthContext ctx, Graphics g, int x, int y, int w,
+                             int h, AffineTransform transform) {
+        Painter borderPainter = style.getBorderPainter(ctx);
+        if (borderPainter != null) {
+            paint(borderPainter, ctx, g, x, y, w, h,transform);
+        }
+    }
+
+    private void paintBackground(SynthContext ctx, Graphics g, int x, int y, int w, int h, int orientation) {
+        Component c = ctx.getComponent();
+        boolean ltr = c.getComponentOrientation().isLeftToRight();
+        // Don't RTL flip JSpliders as they handle it internaly
+        if (ctx.getComponent() instanceof JSlider) ltr = true;
+
+        if (orientation == SwingConstants.VERTICAL && ltr) {
+            AffineTransform transform = new AffineTransform();
+            transform.scale(-1, 1);
+            transform.rotate(Math.toRadians(90));
+            paintBackground(ctx, g, y, x, h, w, transform);
+        } else if (orientation == SwingConstants.VERTICAL) {
+            AffineTransform transform = new AffineTransform();
+            transform.rotate(Math.toRadians(90));
+            transform.translate(0,-(x+w));
+            paintBackground(ctx, g, y, x, h, w, transform);
+        } else if (orientation == SwingConstants.HORIZONTAL && ltr) {
+            paintBackground(ctx, g, x, y, w, h, null);
+        } else {
+            //horizontal and right-to-left orientation
+            AffineTransform transform = new AffineTransform();
+            transform.translate(x,y);
+            transform.scale(-1, 1);
+            transform.translate(-w,0);
+            paintBackground(ctx, g, 0, 0, w, h, transform);
+        }
+    }
+
+    private void paintBorder(SynthContext ctx, Graphics g, int x, int y, int w, int h, int orientation) {
+        Component c = ctx.getComponent();
+        boolean ltr = c.getComponentOrientation().isLeftToRight();
+        if (orientation == SwingConstants.VERTICAL && ltr) {
+            AffineTransform transform = new AffineTransform();
+            transform.scale(-1, 1);
+            transform.rotate(Math.toRadians(90));
+            paintBorder(ctx, g, y, x, h, w, transform);
+        } else if (orientation == SwingConstants.VERTICAL) {
+            AffineTransform transform = new AffineTransform();
+            transform.rotate(Math.toRadians(90));
+            transform.translate(0, -(x + w));
+            paintBorder(ctx, g, y, 0, h, w, transform);
+        } else if (orientation == SwingConstants.HORIZONTAL && ltr) {
+            paintBorder(ctx, g, x, y, w, h, null);
+        } else {
+            //horizontal and right-to-left orientation
+            paintBorder(ctx, g, x, y, w, h, null);
+        }
+    }
+
+    private void paintForeground(SynthContext ctx, Graphics g, int x, int y, int w, int h, int orientation) {
+        Component c = ctx.getComponent();
+        boolean ltr = c.getComponentOrientation().isLeftToRight();
+        if (orientation == SwingConstants.VERTICAL && ltr) {
+            AffineTransform transform = new AffineTransform();
+            transform.scale(-1, 1);
+            transform.rotate(Math.toRadians(90));
+            paintForeground(ctx, g, y, x, h, w, transform);
+        } else if (orientation == SwingConstants.VERTICAL) {
+            AffineTransform transform = new AffineTransform();
+            transform.rotate(Math.toRadians(90));
+            transform.translate(0, -(x + w));
+            paintForeground(ctx, g, y, 0, h, w, transform);
+        } else if (orientation == SwingConstants.HORIZONTAL && ltr) {
+            paintForeground(ctx, g, x, y, w, h, null);
+        } else {
+            //horizontal and right-to-left orientation
+            paintForeground(ctx, g, x, y, w, h, null);
+        }
+    }
+
+    /**
+     * Paints the background of an arrow button. Arrow buttons are created by
+     * some components, such as <code>JScrollBar</code>.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintArrowButtonBackground(SynthContext context,
+                                           Graphics g, int x, int y,
+                                           int w, int h) {
+        if (context.getComponent().getComponentOrientation().isLeftToRight()){
+            paintBackground(context, g, x, y, w, h, null);
+        } else {
+            AffineTransform transform = new AffineTransform();
+            transform.translate(x,y);
+            transform.scale(-1, 1);
+            transform.translate(-w,0);
+            paintBackground(context, g, 0, 0, w, h, transform);
+        }
+    }
+
+    /**
+     * Paints the border of an arrow button. Arrow buttons are created by
+     * some components, such as <code>JScrollBar</code>.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintArrowButtonBorder(SynthContext context,
+                                       Graphics g, int x, int y,
+                                       int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the foreground of an arrow button. This method is responsible
+     * for drawing a graphical representation of a direction, typically
+     * an arrow. Arrow buttons are created by
+     * some components, such as <code>JScrollBar</code>
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param direction One of SwingConstants.NORTH, SwingConstants.SOUTH
+     *                  SwingConstants.EAST or SwingConstants.WEST
+     */
+    public void paintArrowButtonForeground(SynthContext context,
+                                           Graphics g, int x, int y,
+                                           int w, int h,
+                                           int direction) {
+        //assume that the painter is arranged with the arrow pointing... LEFT?
+        String compName = context.getComponent().getName();
+        boolean ltr = context.getComponent().
+                getComponentOrientation().isLeftToRight();
+        // The hard coding for spinners here needs to be replaced by a more
+        // general method for disabling rotation
+        if ("Spinner.nextButton".equals(compName) ||
+                "Spinner.previousButton".equals(compName)) {
+            if (ltr){
+                paintForeground(context, g, x, y, w, h, null);
+            } else {
+                AffineTransform transform = new AffineTransform();
+                transform.translate(w, 0);
+                transform.scale(-1, 1);
+                paintForeground(context, g, x, y, w, h, transform);
+            }
+        } else if (direction == SwingConstants.WEST) {
+            paintForeground(context, g, x, y, w, h, null);
+        } else if (direction == SwingConstants.NORTH) {
+            if (ltr){
+                AffineTransform transform = new AffineTransform();
+                transform.scale(-1, 1);
+                transform.rotate(Math.toRadians(90));
+                paintForeground(context, g, y, 0, h, w, transform);
+            } else {
+                AffineTransform transform = new AffineTransform();
+                transform.rotate(Math.toRadians(90));
+                transform.translate(0, -(x + w));
+                paintForeground(context, g, y, 0, h, w, transform);
+            }
+        } else if (direction == SwingConstants.EAST) {
+            AffineTransform transform = new AffineTransform();
+            transform.translate(w, 0);
+            transform.scale(-1, 1);
+            paintForeground(context, g, x, y, w, h, transform);
+        } else if (direction == SwingConstants.SOUTH) {
+            if (ltr){
+                AffineTransform transform = new AffineTransform();
+                transform.rotate(Math.toRadians(-90));
+                transform.translate(-h, 0);
+                paintForeground(context, g, y, x, h, w, transform);
+            } else {
+                AffineTransform transform = new AffineTransform();
+                transform.scale(-1, 1);
+                transform.rotate(Math.toRadians(-90));
+                transform.translate(-(h+y), -(w+x));
+                paintForeground(context, g, y, x, h, w, transform);
+            }
+        }
+    }
+
+    /**
+     * Paints the background of a button.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintButtonBackground(SynthContext context,
+                                      Graphics g, int x, int y,
+                                      int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a button.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintButtonBorder(SynthContext context,
+                                  Graphics g, int x, int y,
+                                  int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a check box menu item.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintCheckBoxMenuItemBackground(SynthContext context,
+                                                Graphics g, int x, int y,
+                                                int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a check box menu item.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintCheckBoxMenuItemBorder(SynthContext context,
+                                            Graphics g, int x, int y,
+                                            int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a check box.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintCheckBoxBackground(SynthContext context,
+                                        Graphics g, int x, int y,
+                                        int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a check box.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintCheckBoxBorder(SynthContext context,
+                                    Graphics g, int x, int y,
+                                    int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a color chooser.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintColorChooserBackground(SynthContext context,
+                                            Graphics g, int x, int y,
+                                            int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a color chooser.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintColorChooserBorder(SynthContext context,
+                                        Graphics g, int x, int y,
+                                        int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a combo box.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintComboBoxBackground(SynthContext context,
+                                        Graphics g, int x, int y,
+                                        int w, int h) {
+        if (context.getComponent().getComponentOrientation().isLeftToRight()){
+            paintBackground(context, g, x, y, w, h, null);
+        } else {
+            AffineTransform transform = new AffineTransform();
+            transform.translate(x,y);
+            transform.scale(-1, 1);
+            transform.translate(-w,0);
+            paintBackground(context, g, 0, 0, w, h, transform);
+        }
+    }
+
+    /**
+     * Paints the border of a combo box.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintComboBoxBorder(SynthContext context,
+                                        Graphics g, int x, int y,
+                                        int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a desktop icon.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintDesktopIconBackground(SynthContext context,
+                                        Graphics g, int x, int y,
+                                        int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a desktop icon.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintDesktopIconBorder(SynthContext context,
+                                           Graphics g, int x, int y,
+                                           int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a desktop pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintDesktopPaneBackground(SynthContext context,
+                                           Graphics g, int x, int y,
+                                           int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a desktop pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintDesktopPaneBorder(SynthContext context,
+                                       Graphics g, int x, int y,
+                                       int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of an editor pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintEditorPaneBackground(SynthContext context,
+                                          Graphics g, int x, int y,
+                                          int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of an editor pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintEditorPaneBorder(SynthContext context,
+                                      Graphics g, int x, int y,
+                                      int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a file chooser.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintFileChooserBackground(SynthContext context,
+                                          Graphics g, int x, int y,
+                                          int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a file chooser.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintFileChooserBorder(SynthContext context,
+                                      Graphics g, int x, int y,
+                                      int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a formatted text field.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintFormattedTextFieldBackground(SynthContext context,
+                                          Graphics g, int x, int y,
+                                          int w, int h) {
+        if (context.getComponent().getComponentOrientation().isLeftToRight()){
+            paintBackground(context, g, x, y, w, h, null);
+        } else {
+            AffineTransform transform = new AffineTransform();
+            transform.translate(x,y);
+            transform.scale(-1, 1);
+            transform.translate(-w,0);
+            paintBackground(context, g, 0, 0, w, h, transform);
+        }
+    }
+
+    /**
+     * Paints the border of a formatted text field.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintFormattedTextFieldBorder(SynthContext context,
+                                      Graphics g, int x, int y,
+                                      int w, int h) {
+        if (context.getComponent().getComponentOrientation().isLeftToRight()){
+            paintBorder(context, g, x, y, w, h, null);
+        } else {
+            AffineTransform transform = new AffineTransform();
+            transform.translate(x,y);
+            transform.scale(-1, 1);
+            transform.translate(-w,0);
+            paintBorder(context, g, 0, 0, w, h, transform);
+        }
+    }
+
+    /**
+     * Paints the background of an internal frame title pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintInternalFrameTitlePaneBackground(SynthContext context,
+                                          Graphics g, int x, int y,
+                                          int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of an internal frame title pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintInternalFrameTitlePaneBorder(SynthContext context,
+                                      Graphics g, int x, int y,
+                                      int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of an internal frame.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintInternalFrameBackground(SynthContext context,
+                                          Graphics g, int x, int y,
+                                          int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of an internal frame.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintInternalFrameBorder(SynthContext context,
+                                      Graphics g, int x, int y,
+                                      int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a label.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintLabelBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a label.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintLabelBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a list.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintListBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a list.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintListBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a menu bar.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintMenuBarBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a menu bar.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintMenuBarBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a menu item.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintMenuItemBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a menu item.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintMenuItemBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a menu.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintMenuBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a menu.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintMenuBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of an option pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintOptionPaneBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of an option pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintOptionPaneBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a panel.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintPanelBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a panel.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintPanelBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a password field.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintPasswordFieldBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a password field.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintPasswordFieldBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a popup menu.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintPopupMenuBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a popup menu.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintPopupMenuBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a progress bar.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintProgressBarBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a progress bar. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation one of <code>JProgressBar.HORIZONTAL</code> or
+     *                    <code>JProgressBar.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintProgressBarBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        paintBackground(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the border of a progress bar.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintProgressBarBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a progress bar. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation one of <code>JProgressBar.HORIZONTAL</code> or
+     *                    <code>JProgressBar.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintProgressBarBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintBorder(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the foreground of a progress bar. is responsible for
+     * providing an indication of the progress of the progress bar.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation one of <code>JProgressBar.HORIZONTAL</code> or
+     *                    <code>JProgressBar.VERTICAL</code>
+     */
+    public void paintProgressBarForeground(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintForeground(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the background of a radio button menu item.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintRadioButtonMenuItemBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a radio button menu item.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintRadioButtonMenuItemBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a radio button.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintRadioButtonBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a radio button.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintRadioButtonBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a root pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintRootPaneBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a root pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintRootPaneBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a scrollbar.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintScrollBarBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a scrollbar. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation Orientation of the JScrollBar, one of
+     *                    <code>JScrollBar.HORIZONTAL</code> or
+     *                    <code>JScrollBar.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintScrollBarBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        paintBackground(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the border of a scrollbar.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintScrollBarBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a scrollbar. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation Orientation of the JScrollBar, one of
+     *                    <code>JScrollBar.HORIZONTAL</code> or
+     *                    <code>JScrollBar.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintScrollBarBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintBorder(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the background of the thumb of a scrollbar. The thumb provides
+     * a graphical indication as to how much of the Component is visible in a
+     * <code>JScrollPane</code>.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation Orientation of the JScrollBar, one of
+     *                    <code>JScrollBar.HORIZONTAL</code> or
+     *                    <code>JScrollBar.VERTICAL</code>
+     */
+    public void paintScrollBarThumbBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        paintBackground(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the border of the thumb of a scrollbar. The thumb provides
+     * a graphical indication as to how much of the Component is visible in a
+     * <code>JScrollPane</code>.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation Orientation of the JScrollBar, one of
+     *                    <code>JScrollBar.HORIZONTAL</code> or
+     *                    <code>JScrollBar.VERTICAL</code>
+     */
+    public void paintScrollBarThumbBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintBorder(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the background of the track of a scrollbar. The track contains
+     * the thumb.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintScrollBarTrackBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of the track of a scrollbar. The track contains
+     * the thumb. This implementation invokes the method of the same name without
+     * the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation Orientation of the JScrollBar, one of
+     *                    <code>JScrollBar.HORIZONTAL</code> or
+     *                    <code>JScrollBar.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintScrollBarTrackBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        paintBackground(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the border of the track of a scrollbar. The track contains
+     * the thumb.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintScrollBarTrackBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of the track of a scrollbar. The track contains
+     * the thumb. This implementation invokes the method of the same name without
+     * the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation Orientation of the JScrollBar, one of
+     *                    <code>JScrollBar.HORIZONTAL</code> or
+     *                    <code>JScrollBar.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintScrollBarTrackBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintBorder(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the background of a scroll pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintScrollPaneBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a scroll pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintScrollPaneBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a separator.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintSeparatorBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a separator. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JSeparator.HORIZONTAL</code> or
+     *                           <code>JSeparator.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintSeparatorBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        paintBackground(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the border of a separator.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintSeparatorBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a separator. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JSeparator.HORIZONTAL</code> or
+     *                           <code>JSeparator.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintSeparatorBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintBorder(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the foreground of a separator.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JSeparator.HORIZONTAL</code> or
+     *                           <code>JSeparator.VERTICAL</code>
+     */
+    public void paintSeparatorForeground(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintForeground(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the background of a slider.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintSliderBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a slider. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JSlider.HORIZONTAL</code> or
+     *                           <code>JSlider.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintSliderBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        paintBackground(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the border of a slider.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintSliderBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a slider. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JSlider.HORIZONTAL</code> or
+     *                           <code>JSlider.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintSliderBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintBorder(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the background of the thumb of a slider.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JSlider.HORIZONTAL</code> or
+     *                           <code>JSlider.VERTICAL</code>
+     */
+    public void paintSliderThumbBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        if (context.getComponent().getClientProperty(
+                "Slider.paintThumbArrowShape") == Boolean.TRUE){
+            if (orientation == JSlider.HORIZONTAL){
+                orientation = JSlider.VERTICAL;
+            } else {
+                orientation = JSlider.HORIZONTAL;
+            }
+            paintBackground(context, g, x, y, w, h, orientation);
+        } else {
+            paintBackground(context, g, x, y, w, h, orientation);
+        }
+    }
+
+    /**
+     * Paints the border of the thumb of a slider.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JSlider.HORIZONTAL</code> or
+     *                           <code>JSlider.VERTICAL</code>
+     */
+    public void paintSliderThumbBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintBorder(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the background of the track of a slider.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintSliderTrackBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of the track of a slider. This implementation invokes
+     * the method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JSlider.HORIZONTAL</code> or
+     *                           <code>JSlider.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintSliderTrackBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        paintBackground(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the border of the track of a slider.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintSliderTrackBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of the track of a slider. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JSlider.HORIZONTAL</code> or
+     *                           <code>JSlider.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintSliderTrackBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintBorder(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the background of a spinner.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintSpinnerBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a spinner.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintSpinnerBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of the divider of a split pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintSplitPaneDividerBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of the divider of a split pane. This implementation
+     * invokes the method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JSplitPane.HORIZONTAL_SPLIT</code> or
+     *                           <code>JSplitPane.VERTICAL_SPLIT</code>
+     * @since 1.6
+     */
+    public void paintSplitPaneDividerBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+       if (orientation == JSplitPane.HORIZONTAL_SPLIT) {
+            AffineTransform transform = new AffineTransform();
+            transform.scale(-1, 1);
+            transform.rotate(Math.toRadians(90));
+            paintBackground(context, g, y, x, h, w, transform);
+       } else {
+            paintBackground(context, g, x, y, w, h, null);
+        }
+    }
+
+    /**
+     * Paints the foreground of the divider of a split pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JSplitPane.HORIZONTAL_SPLIT</code> or
+     *                           <code>JSplitPane.VERTICAL_SPLIT</code>
+     */
+    public void paintSplitPaneDividerForeground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        paintForeground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the divider, when the user is dragging the divider, of a
+     * split pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JSplitPane.HORIZONTAL_SPLIT</code> or
+     *                           <code>JSplitPane.VERTICAL_SPLIT</code>
+     */
+    public void paintSplitPaneDragDivider(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a split pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintSplitPaneBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a split pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintSplitPaneBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a tabbed pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTabbedPaneBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a tabbed pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTabbedPaneBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of the area behind the tabs of a tabbed pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTabbedPaneTabAreaBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of the area behind the tabs of a tabbed pane.
+     * This implementation invokes the method of the same name without the
+     * orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JTabbedPane.TOP</code>,
+     *                    <code>JTabbedPane.LEFT</code>,
+     *                    <code>JTabbedPane.BOTTOM</code>, or
+     *                    <code>JTabbedPane.RIGHT</code>
+     * @since 1.6
+     */
+    public void paintTabbedPaneTabAreaBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        if (orientation == JTabbedPane.LEFT) {
+            AffineTransform transform = new AffineTransform();
+            transform.scale(-1, 1);
+            transform.rotate(Math.toRadians(90));
+            paintBackground(context, g, y, x, h, w, transform);
+        } else if (orientation == JTabbedPane.RIGHT) {
+            AffineTransform transform = new AffineTransform();
+            transform.rotate(Math.toRadians(90));
+            transform.translate(0, -(x + w));
+            paintBackground(context, g, y, 0, h, w, transform);
+        } else if (orientation == JTabbedPane.BOTTOM) {
+            AffineTransform transform = new AffineTransform();
+            transform.translate(x,y);
+            transform.scale(1, -1);
+            transform.translate(0,-h);
+            paintBackground(context, g, 0, 0, w, h, transform);
+        } else {
+            paintBackground(context, g, x, y, w, h, null);
+        }
+    }
+
+    /**
+     * Paints the border of the area behind the tabs of a tabbed pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTabbedPaneTabAreaBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of the area behind the tabs of a tabbed pane. This
+     * implementation invokes the method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JTabbedPane.TOP</code>,
+     *                    <code>JTabbedPane.LEFT</code>,
+     *                    <code>JTabbedPane.BOTTOM</code>, or
+     *                    <code>JTabbedPane.RIGHT</code>
+     * @since 1.6
+     */
+    public void paintTabbedPaneTabAreaBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a tab of a tabbed pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param tabIndex Index of tab being painted.
+     */
+    public void paintTabbedPaneTabBackground(SynthContext context, Graphics g,
+                                         int x, int y, int w, int h,
+                                         int tabIndex) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a tab of a tabbed pane. This implementation
+     * invokes the method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param tabIndex Index of tab being painted.
+     * @param orientation One of <code>JTabbedPane.TOP</code>,
+     *                    <code>JTabbedPane.LEFT</code>,
+     *                    <code>JTabbedPane.BOTTOM</code>, or
+     *                    <code>JTabbedPane.RIGHT</code>
+     * @since 1.6
+     */
+    public void paintTabbedPaneTabBackground(SynthContext context, Graphics g,
+                                         int x, int y, int w, int h,
+                                         int tabIndex, int orientation) {
+        if (orientation == JTabbedPane.LEFT) {
+            AffineTransform transform = new AffineTransform();
+            transform.scale(-1, 1);
+            transform.rotate(Math.toRadians(90));
+            paintBackground(context, g, y, x, h, w, transform);
+        } else if (orientation == JTabbedPane.RIGHT) {
+            AffineTransform transform = new AffineTransform();
+            transform.rotate(Math.toRadians(90));
+            transform.translate(0, -(x + w));
+            paintBackground(context, g, y, 0, h, w, transform);
+        } else if (orientation == JTabbedPane.BOTTOM) {
+            AffineTransform transform = new AffineTransform();
+            transform.translate(x,y);
+            transform.scale(1, -1);
+            transform.translate(0,-h);
+            paintBackground(context, g, 0, 0, w, h, transform);
+        } else {
+            paintBackground(context, g, x, y, w, h, null);
+        }
+    }
+
+    /**
+     * Paints the border of a tab of a tabbed pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param tabIndex Index of tab being painted.
+     */
+    public void paintTabbedPaneTabBorder(SynthContext context, Graphics g,
+                                         int x, int y, int w, int h,
+                                         int tabIndex) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a tab of a tabbed pane. This implementation invokes
+     * the method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param tabIndex Index of tab being painted.
+     * @param orientation One of <code>JTabbedPane.TOP</code>,
+     *                    <code>JTabbedPane.LEFT</code>,
+     *                    <code>JTabbedPane.BOTTOM</code>, or
+     *                    <code>JTabbedPane.RIGHT</code>
+     * @since 1.6
+     */
+    public void paintTabbedPaneTabBorder(SynthContext context, Graphics g,
+                                         int x, int y, int w, int h,
+                                         int tabIndex, int orientation) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of the area that contains the content of the
+     * selected tab of a tabbed pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTabbedPaneContentBackground(SynthContext context,
+                                         Graphics g, int x, int y, int w,
+                                         int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of the area that contains the content of the
+     * selected tab of a tabbed pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTabbedPaneContentBorder(SynthContext context, Graphics g,
+                                         int x, int y, int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of the header of a table.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTableHeaderBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of the header of a table.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTableHeaderBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a table.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTableBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a table.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTableBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a text area.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTextAreaBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a text area.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTextAreaBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a text pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTextPaneBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a text pane.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTextPaneBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a text field.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTextFieldBackground(SynthContext context,
+                                          Graphics g, int x, int y,
+                                          int w, int h) {
+        if (context.getComponent().getComponentOrientation().isLeftToRight()){
+            paintBackground(context, g, x, y, w, h, null);
+        } else {
+            AffineTransform transform = new AffineTransform();
+            transform.translate(x,y);
+            transform.scale(-1, 1);
+            transform.translate(-w,0);
+            paintBackground(context, g, 0, 0, w, h, transform);
+        }
+    }
+
+    /**
+     * Paints the border of a text field.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTextFieldBorder(SynthContext context,
+                                      Graphics g, int x, int y,
+                                      int w, int h) {
+        if (context.getComponent().getComponentOrientation().isLeftToRight()){
+            paintBorder(context, g, x, y, w, h, null);
+        } else {
+            AffineTransform transform = new AffineTransform();
+            transform.translate(x,y);
+            transform.scale(-1, 1);
+            transform.translate(-w,0);
+            paintBorder(context, g, 0, 0, w, h, transform);
+        }
+    }
+
+    /**
+     * Paints the background of a toggle button.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintToggleButtonBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a toggle button.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintToggleButtonBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a tool bar.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintToolBarBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a tool bar. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JToolBar.HORIZONTAL</code> or
+     *                           <code>JToolBar.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintToolBarBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        paintBackground(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the border of a tool bar.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintToolBarBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a tool bar. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JToolBar.HORIZONTAL</code> or
+     *                           <code>JToolBar.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintToolBarBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintBorder(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the background of the tool bar's content area.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintToolBarContentBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of the tool bar's content area. This implementation
+     * invokes the method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JToolBar.HORIZONTAL</code> or
+     *                           <code>JToolBar.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintToolBarContentBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        paintBackground(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the border of the content area of a tool bar.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintToolBarContentBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of the content area of a tool bar. This implementation
+     * invokes the method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JToolBar.HORIZONTAL</code> or
+     *                           <code>JToolBar.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintToolBarContentBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintBorder(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the background of the window containing the tool bar when it
+     * has been detached from its primary frame.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintToolBarDragWindowBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of the window containing the tool bar when it
+     * has been detached from its primary frame. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JToolBar.HORIZONTAL</code> or
+     *                           <code>JToolBar.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintToolBarDragWindowBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h, int orientation) {
+        paintBackground(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the border of the window containing the tool bar when it
+     * has been detached from it's primary frame.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintToolBarDragWindowBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of the window containing the tool bar when it
+     * has been detached from it's primary frame. This implementation invokes the
+     * method of the same name without the orientation.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     * @param orientation One of <code>JToolBar.HORIZONTAL</code> or
+     *                           <code>JToolBar.VERTICAL</code>
+     * @since 1.6
+     */
+    public void paintToolBarDragWindowBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h, int orientation) {
+        paintBorder(context, g, x, y, w, h, orientation);
+    }
+
+    /**
+     * Paints the background of a tool tip.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintToolTipBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a tool tip.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintToolTipBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of a tree.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTreeBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a tree.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTreeBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the background of the row containing a cell in a tree.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTreeCellBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of the row containing a cell in a tree.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTreeCellBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the focus indicator for a cell in a tree when it has focus.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintTreeCellFocus(SynthContext context,
+                                   Graphics g, int x, int y,
+                                   int w, int h) {
+        //TODO
+    }
+
+    /**
+     * Paints the background of the viewport.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintViewportBackground(SynthContext context,
+                                     Graphics g, int x, int y,
+                                     int w, int h) {
+        paintBackground(context, g, x, y, w, h, null);
+    }
+
+    /**
+     * Paints the border of a viewport.
+     *
+     * @param context SynthContext identifying the <code>JComponent</code> and
+     *        <code>Region</code> to paint to
+     * @param g <code>Graphics</code> to paint to
+     * @param x X coordinate of the area to paint to
+     * @param y Y coordinate of the area to paint to
+     * @param w Width of the area to paint to
+     * @param h Height of the area to paint to
+     */
+    public void paintViewportBorder(SynthContext context,
+                                 Graphics g, int x, int y,
+                                 int w, int h) {
+        paintBorder(context, g, x, y, w, h, null);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/TableScrollPaneCorner.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import javax.swing.Painter;
+
+import javax.swing.JComponent;
+import javax.swing.UIManager;
+import javax.swing.plaf.UIResource;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Color;
+import java.awt.image.BufferedImage;
+
+/**
+ * TableScrollPaneCorner - A simple component that paints itself using the table
+ * header background painter. It is used to fill the top right corner of
+ * scrollpane.
+ *
+ * @author Created by Jasper Potts (Jan 28, 2008)
+ */
+class TableScrollPaneCorner extends JComponent implements UIResource{
+
+    /**
+     * Paint the component using the Nimbus Table Header Background Painter
+     */
+    @Override protected void paintComponent(Graphics g) {
+        Painter painter = (Painter) UIManager.get(
+            "TableHeader:\"TableHeader.renderer\"[Enabled].backgroundPainter");
+        if (painter != null){
+            if (g instanceof Graphics2D){
+                painter.paint((Graphics2D)g,this,getWidth()+1,getHeight());
+            } else {
+                // paint using image to not Graphics2D to support
+                // Java 1.1 printing API
+                BufferedImage img =  new BufferedImage(getWidth(),getHeight(),
+                        BufferedImage.TYPE_INT_ARGB);
+                Graphics2D g2 = (Graphics2D)img.getGraphics();
+                painter.paint(g2,this,getWidth()+1,getHeight());
+                g2.dispose();
+                g.drawImage(img,0,0,null);
+                img = null;
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/ToolBarSeparatorPainter.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package javax.swing.plaf.nimbus;
+
+import javax.swing.plaf.nimbus.AbstractRegionPainter.PaintContext.CacheMode;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.Insets;
+import javax.swing.JComponent;
+
+/**
+ * A special painter implementation for tool bar separators in Nimbus.
+ * The designer tool doesn't have support for painters which render
+ * repeated patterns, but that's exactly what the toolbar separator design
+ * is for Nimbus. This custom painter is designed to handle this situation.
+ * When support is added to the design tool / code generator to deal with
+ * repeated patterns, then we can remove this class.
+ * <p>
+ */
+final class ToolBarSeparatorPainter extends AbstractRegionPainter {
+    private static final int SPACE = 3;
+    private static final int INSET = 2;
+
+    @Override
+    protected PaintContext getPaintContext() {
+        //the paint context returned will have a few dummy values. The
+        //implementation of doPaint doesn't bother with the "decode" methods
+        //but calculates where to paint the circles manually. As such, we
+        //only need to indicate in our PaintContext that we don't want this
+        //to ever be cached
+        return new PaintContext(
+                new Insets(1, 0, 1, 0),
+                new Dimension(38, 7),
+                false, CacheMode.NO_CACHING, 1, 1);
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //it is assumed that in the normal orientation the separator renders
+        //horizontally. Other code rotates it as necessary for a vertical
+        //separator.
+        g.setColor(c.getForeground());
+        int y = height / 2;
+        for (int i=INSET; i<=width-INSET; i+=SPACE) {
+            g.fillRect(i, y, 1, 1);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/doc-files/properties.html	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,207 @@
+<html>
+<head>
+<link href="style.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<h1 id="primaryColors">Primary Colors</h1>
+<table>
+<tr><th>Key</th><th>Value</th><th>Preview</th></tr>
+<tr>
+<td width="250"><code>control</code></td>
+<td><pre>#d6d9df (214,217,223)</pre></td>
+
+<td width="100" bgcolor="#d6d9df">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>info</code></td>
+<td><pre>#f2f2bd (242,242,189)</pre></td>
+<td width="100" bgcolor="#f2f2bd">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>nimbusAlertYellow</code></td>
+<td><pre>#ffdc23 (255,220,35)</pre></td>
+<td width="100" bgcolor="#ffdc23">&nbsp;</td>
+</tr>
+<tr>
+
+<td width="250"><code>nimbusBase</code></td>
+<td><pre>#33628c (51,98,140)</pre></td>
+<td width="100" bgcolor="#33628c">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>nimbusDisabledText</code></td>
+<td><pre>#8e8f91 (142,143,145)</pre></td>
+<td width="100" bgcolor="#8e8f91">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>nimbusFocus</code></td>
+<td><pre>#73a4d1 (115,164,209)</pre></td>
+
+<td width="100" bgcolor="#73a4d1">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>nimbusGreen</code></td>
+<td><pre>#b0b332 (176,179,50)</pre></td>
+<td width="100" bgcolor="#b0b332">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>nimbusInfoBlue</code></td>
+<td><pre>#2f5cb4 (47,92,180)</pre></td>
+<td width="100" bgcolor="#2f5cb4">&nbsp;</td>
+</tr>
+<tr>
+
+<td width="250"><code>nimbusLightBackground</code></td>
+<td><pre>#ffffff (255,255,255)</pre></td>
+<td width="100" bgcolor="#ffffff">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>nimbusOrange</code></td>
+<td><pre>#bf6204 (191,98,4)</pre></td>
+<td width="100" bgcolor="#bf6204">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>nimbusRed</code></td>
+<td><pre>#a92e22 (169,46,34)</pre></td>
+
+<td width="100" bgcolor="#a92e22">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>nimbusSelectedText</code></td>
+<td><pre>#ffffff (255,255,255)</pre></td>
+<td width="100" bgcolor="#ffffff">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>nimbusSelectionBackground</code></td>
+<td><pre>#39698a (57,105,138)</pre></td>
+<td width="100" bgcolor="#39698a">&nbsp;</td>
+</tr>
+<tr>
+
+<td width="250"><code>text</code></td>
+<td><pre>#000000 (0,0,0)</pre></td>
+<td width="100" bgcolor="#000000">&nbsp;</td>
+</tr>
+</table>
+
+<h1 id="secondaryColors">Secondary Colors</h1>
+<table>
+<tr><th>Key</th><th>Value</th><th>Preview</th></tr>
+<tr>
+<td width="250"><code>activeCaption</code></td>
+
+<td><pre>#babec6 (186,190,198)</pre></td>
+<td width="100" bgcolor="#babec6">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>background</code></td>
+<td><pre>#d6d9df (214,217,223)</pre></td>
+<td width="100" bgcolor="#d6d9df">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>controlDkShadow</code></td>
+<td><pre>#a4abb8 (164,171,184)</pre></td>
+<td width="100" bgcolor="#a4abb8">&nbsp;</td>
+
+</tr>
+<tr>
+<td width="250"><code>controlHighlight</code></td>
+<td><pre>#e9ecf2 (233,236,242)</pre></td>
+<td width="100" bgcolor="#e9ecf2">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>controlLHighlight</code></td>
+<td><pre>#f7f8fa (247,248,250)</pre></td>
+<td width="100" bgcolor="#f7f8fa">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>controlShadow</code></td>
+
+<td><pre>#ccd3e0 (204,211,224)</pre></td>
+<td width="100" bgcolor="#ccd3e0">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>controlText</code></td>
+<td><pre>#000000 (0,0,0)</pre></td>
+<td width="100" bgcolor="#000000">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>desktop</code></td>
+<td><pre>#3d6079 (61,96,121)</pre></td>
+<td width="100" bgcolor="#3d6079">&nbsp;</td>
+
+</tr>
+<tr>
+<td width="250"><code>inactiveCaption</code></td>
+<td><pre>#bdc1c8 (189,193,200)</pre></td>
+<td width="100" bgcolor="#bdc1c8">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>infoText</code></td>
+<td><pre>#000000 (0,0,0)</pre></td>
+<td width="100" bgcolor="#000000">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>menu</code></td>
+
+<td><pre>#edeff2 (237,239,242)</pre></td>
+<td width="100" bgcolor="#edeff2">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>menuText</code></td>
+<td><pre>#000000 (0,0,0)</pre></td>
+<td width="100" bgcolor="#000000">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>nimbusBlueGrey</code></td>
+<td><pre>#a9b0be (169,176,190)</pre></td>
+<td width="100" bgcolor="#a9b0be">&nbsp;</td>
+
+</tr>
+<tr>
+<td width="250"><code>nimbusBorder</code></td>
+<td><pre>#9297a1 (146,151,161)</pre></td>
+<td width="100" bgcolor="#9297a1">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>nimbusSelection</code></td>
+<td><pre>#39698a (57,105,138)</pre></td>
+<td width="100" bgcolor="#39698a">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>scrollbar</code></td>
+
+<td><pre>#cdd0d5 (205,208,213)</pre></td>
+<td width="100" bgcolor="#cdd0d5">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>textBackground</code></td>
+<td><pre>#39698a (57,105,138)</pre></td>
+<td width="100" bgcolor="#39698a">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>textForeground</code></td>
+<td><pre>#000000 (0,0,0)</pre></td>
+<td width="100" bgcolor="#000000">&nbsp;</td>
+
+</tr>
+<tr>
+<td width="250"><code>textHighlight</code></td>
+<td><pre>#39698a (57,105,138)</pre></td>
+<td width="100" bgcolor="#39698a">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>textHighlightText</code></td>
+<td><pre>#ffffff (255,255,255)</pre></td>
+<td width="100" bgcolor="#ffffff">&nbsp;</td>
+</tr>
+<tr>
+<td width="250"><code>textInactiveText</code></td>
+
+<td><pre>#8e8f91 (142,143,145)</pre></td>
+<td width="100" bgcolor="#8e8f91">&nbsp;</td>
+</tr>
+</table>
+
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/package.html	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,102 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+Copyright 1998-2001 Sun Microsystems, Inc.  All Rights Reserved.
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+This code is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 2 only, as
+published by the Free Software Foundation.  Sun designates this
+particular file as subject to the "Classpath" exception as provided
+by Sun in the LICENSE file that accompanied this code.
+
+This code 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
+version 2 for more details (a copy is included in the LICENSE file that
+accompanied this code).
+
+You should have received a copy of the GNU General Public License version
+2 along with this work; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+CA 95054 USA or visit www.sun.com if you need additional information or
+have any questions.
+-->
+
+</head>
+<body bgcolor="white">
+
+Provides user interface objects built according to the cross-platform
+Nimbus look and feel.
+
+<p>Nimbus uses instances of the {@link javax.swing.Painter} interface to paint
+components. With each Swing component it associates a foreground and a
+background {@code Painter}, and there may be several painters for different
+component states.
+
+<p>Nimbus allows customizing many of its properties, including painters, by
+altering the {@link UIDefaults} table. Here's an example:
+<code><pre>
+    UIManager.put("ProgressBar.tileWidth", myTileWidth);
+    UIManager.put("ProgressBar[Enabled].backgroundPainter", myBgPainter);
+    UIManager.put("ProgressBar[Enabled].foregroundPainter", myFgPainter);
+</pre></code>
+
+<p>Per-component customization is also possible. When rendering a component,
+Nimbus checks its client property named "Nimbus.Overrides". The value of this
+property should be an instance of {@code UIDefaults}. Settings from that table
+override the UIManager settings, but for that particular component instance
+only. An optional client property, "Nimbus.Overrides.InheritDefaults" of type
+Boolean, specifies whether the overriding settings should be merged with
+default ones ({@code true}), or replace them ({@code false}). By default they
+are merged:
+<code><pre>
+    JProgressBar bar = new JProgressBar();
+    UIDefaults overrides = new UIDefaults();
+    overrides.put("ProgressBar.cycleTime", 330);
+    ...
+    bar.putClientProperty("Nimbus.Overrides", overrides);
+    bar.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
+</pre></code>
+
+<p>Colors in Nimbus are derived from a core set of
+<a href="doc-files/properties.html#primaryColors">primary colors</a>. There are also
+<a href="doc-files/properties.html#secondaryColors">secondary colors</a>, which are
+derived from primary ones, but serve themselves as base colors for other
+derived colors. The derivation mechanism allows for runtime customization,
+i.e. if a primary or secondary color is changed, all colors that are derived
+from it are automatically updated. The method
+{@link javax.swing.plaf.nimbus.NimbusLookAndFeel#getDerivedColor(java.lang.String, float, float, float, int, boolean)}
+may be used to create a derived color.
+
+<p>These classes are designed to be used while the
+corresponding <code>LookAndFeel</code> class has been
+installed
+(<code>UIManager.setLookAndFeel(new <i>XXX</i>LookAndFeel())</code>).
+Using them while a different <code>LookAndFeel</code> is installed
+may produce unexpected results, including exceptions.
+Additionally, changing the <code>LookAndFeel</code>
+maintained by the <code>UIManager</code> without updating the
+corresponding <code>ComponentUI</code> of any
+<code>JComponent</code>s may also produce unexpected results,
+such as the wrong colors showing up, and is generally not
+encouraged.
+
+<p><strong>Note:</strong>
+Most of the Swing API is <em>not</em> thread safe.
+For details, see
+<a
+href="http://java.sun.com/docs/books/tutorial/uiswing/overview/threads.html"
+target="_top">Threads and Swing</a>,
+a section in
+<em><a href="http://java.sun.com/docs/books/tutorial/"
+target="_top">The Java Tutorial</a></em>.
+
+@since 1.7
+@serial exclude
+
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/skin.laf	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,28332 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 1998-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.  Sun designates this
+ particular file as subject to the "Classpath" exception as provided
+ by Sun in the LICENSE file that accompanied this code.
+
+ This code 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
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ CA 95054 USA or visit www.sun.com if you need additional information or
+ have any questions.
+-->
+
+<synthModel>
+   <insets>
+      <uiInsets name="zeroInsets">
+         <insets top="0" bottom="0" left="0" right="0"/>
+      </uiInsets>
+      <uiInsets name="twoInsets">
+         <insets top="2" bottom="2" left="2" right="2"/>
+      </uiInsets>
+      <uiInsets name="threeInsets">
+         <insets top="3" bottom="3" left="3" right="3"/>
+      </uiInsets>
+   </insets>
+   <colors>
+      <uiColor name="text">
+         <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="control">
+         <matte red="214" green="217" blue="223" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusBase">
+         <matte red="51" green="98" blue="140" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusBlueGrey">
+         <matte red="169" green="176" blue="190" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.52518797" brightnessOffset="0.19607842" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusOrange">
+         <matte red="191" green="98" blue="4" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusGreen">
+         <matte red="176" green="179" blue="50" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusRed">
+         <matte red="169" green="46" blue="34" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusBorder">
+         <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusSelection">
+         <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.010750473" saturationOffset="-0.04875779" brightnessOffset="-0.007843137" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusInfoBlue">
+         <matte red="47" green="92" blue="180" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusAlertYellow">
+         <matte red="255" green="220" blue="35" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusFocus">
+         <matte red="115" green="164" blue="209" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusSelectedText">
+         <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusSelectionBackground">
+         <matte red="57" green="105" blue="138" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusDisabledText">
+         <matte red="142" green="143" blue="145" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="nimbusLightBackground">
+         <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="infoText">
+         <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="text" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="info">
+         <matte red="242" green="242" blue="189" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="menuText">
+         <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="text" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="menu">
+         <matte red="237" green="239" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.6150531" brightnessOffset="0.39999998" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="scrollbar">
+         <matte red="205" green="208" blue="213" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07296763" brightnessOffset="0.09019607" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="controlText">
+         <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="text" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="controlHighlight">
+         <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="controlLHighlight">
+         <matte red="247" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="controlShadow">
+         <matte red="204" green="211" blue="224" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
+      </uiColor>
+       <uiColor name="controlDkShadow">
+         <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="textHighlight">
+         <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="textHighlightText">
+         <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="textInactiveText">
+         <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="desktop">
+         <matte red="61" green="96" blue="121" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.009207249" saturationOffset="-0.13984653" brightnessOffset="-0.07450983" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="activeCaption">
+         <matte red="186" green="190" blue="198" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049920253" brightnessOffset="0.031372547" alphaOffset="0"/>
+      </uiColor>
+      <uiColor name="inactiveCaption">
+         <matte red="189" green="193" blue="200" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.055526316" brightnessOffset="0.039215684" alphaOffset="0"/>
+      </uiColor>
+   </colors>
+   <fonts>
+      <uiFont name="InternalFrame.titleFont">
+        <typeface uiDefaultParentName="defaultFont" bold="On"/>
+      </uiFont>
+   </fonts>
+   <style>
+      <textForeground>
+         <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="text" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </textForeground>
+      <textBackground>
+         <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </textBackground>
+      <background>
+         <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="control" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+      </background>
+      <inherit-textForeground>false</inherit-textForeground>
+      <inherit-textBackground>false</inherit-textBackground>
+      <inherit-background>false</inherit-background>
+      <cacheSettingsInherited>false</cacheSettingsInherited>
+      <uiproperties>
+          <uiProperty name="TitledBorder.position" type="STRING" value="ABOVE_TOP"/>
+          <uiProperty name="FileView.fullRowSelection" type="BOOLEAN" value="TRUE"/>
+      </uiproperties>
+   </style>
+   <components>
+      <uiComponent opaque="false" type="javax.swing.plaf.synth.SynthArrowButton" name="ArrowButton" ui="SynthArrowButtonUI" subregion="true">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <uiproperties>
+               <uiProperty name="size" type="INT" value="16"/>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="10" height="10"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="10" height="10"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <matte red="167" green="171" blue="178" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.57391655" brightnessOffset="0.1490196" alphaOffset="0"/>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="8.0" y="2.0" cp1x="8.0" cp1y="2.0" cp2x="8.0" cp2y="2.0"/>
+                              <point x="2.0" y="5.0" cp1x="2.0" cp1y="5.0" cp2x="2.0" cp2y="5.0"/>
+                              <point x="8.0" y="8.0" cp1x="8.0" cp1y="8.0" cp2x="8.0" cp2y="8.0"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="10" height="10"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <matte red="45" green="45" blue="45" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.37254906" alphaOffset="0"/>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="8.0" y="2.0" cp1x="8.0" cp1y="2.0" cp2x="8.0" cp2y="2.0"/>
+                              <point x="2.0" y="5.0" cp1x="2.0" cp1y="5.0" cp2x="2.0" cp2y="5.0"/>
+                              <point x="8.0" y="8.0" cp1x="8.0" cp1y="8.0" cp2x="8.0" cp2y="8.0"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </foregroundStates>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JButton" name="Button" ui="ButtonUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="6" bottom="6" left="14" right="14"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+            <uiproperties>
+               <uiProperty name="defaultButtonFollowsFocus" type="BOOLEAN" value="false"/>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Default">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="246" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="223" green="230" blue="237" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5766426" brightnessOffset="0.38039213" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="163" green="184" blue="203" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="163" green="184" blue="203" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.6">
+                                 <matte red="193" green="214" blue="233" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.46404046" brightnessOffset="0.36470586" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="213" green="234" blue="253" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47761154" brightnessOffset="0.44313723" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.05" midpoint="0.5">
+                                 <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                           <matte red="92" green="94" blue="96" alpha="65" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-190"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Default+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="246" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="223" green="230" blue="237" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5766426" brightnessOffset="0.38039213" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="163" green="184" blue="203" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="163" green="184" blue="203" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.6">
+                                 <matte red="193" green="214" blue="233" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.46404046" brightnessOffset="0.36470586" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="213" green="234" blue="253" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47761154" brightnessOffset="0.44313723" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.05" midpoint="0.5">
+                                 <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver+Default">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="248" green="250" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="230" green="237" blue="243" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.5822163" brightnessOffset="0.40392154" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="182" green="203" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="182" green="203" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.6">
+                                 <matte red="212" green="233" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47698414" brightnessOffset="0.43921566" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="232" green="253" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.06415892" saturationOffset="-0.5455182" brightnessOffset="0.45098037" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.05" midpoint="0.5">
+                                 <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="9.0">
+                           <matte red="92" green="94" blue="96" alpha="65" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-190"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver+Default+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="248" green="250" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="230" green="237" blue="243" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.5822163" brightnessOffset="0.40392154" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="182" green="203" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="182" green="203" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.6">
+                                 <matte red="212" green="233" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47698414" brightnessOffset="0.43921566" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="232" green="253" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.06415892" saturationOffset="-0.5455182" brightnessOffset="0.45098037" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.05" midpoint="0.5">
+                                 <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed+Default">
+               <style>
+                  <textForeground>
+                      <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="143" green="169" blue="192" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="118" green="149" blue="178" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.001903832" saturationOffset="-0.29863563" brightnessOffset="0.1490196" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="51" green="98" blue="140" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="51" green="98" blue="140" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.6">
+                                 <matte red="91" green="137" blue="180" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0018727183" saturationOffset="-0.14126986" brightnessOffset="0.15686274" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="118" green="164" blue="206" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.20852983" brightnessOffset="0.2588235" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.05" midpoint="0.5">
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                           <matte red="255" green="255" blue="255" alpha="160" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-95"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed+Default+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="143" green="169" blue="192" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="118" green="149" blue="178" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.001903832" saturationOffset="-0.29863563" brightnessOffset="0.1490196" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="51" green="98" blue="140" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="51" green="98" blue="140" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.6">
+                                 <matte red="91" green="137" blue="180" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0018727183" saturationOffset="-0.14126986" brightnessOffset="0.15686274" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="118" green="164" blue="206" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.20852983" brightnessOffset="0.2588235" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.05" midpoint="0.5">
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08477524" brightnessOffset="0.16862744" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.5">
+                                 <matte red="223" green="226" blue="230" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.080091536" brightnessOffset="0.15686274" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="216" green="219" blue="225" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07052632" brightnessOffset="0.1372549" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="218" green="221" blue="227" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.070878744" brightnessOffset="0.14509803" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.09" midpoint="0.5">
+                                 <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06766917" brightnessOffset="0.07843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="188" green="191" blue="197" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06484103" brightnessOffset="0.027450979" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                           <matte red="92" green="94" blue="96" alpha="23" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-232"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="251" green="251" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="241" green="242" blue="244" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.09823123" brightnessOffset="0.2117647" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.6">
+                                 <matte red="244" green="247" blue="253" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0749532" brightnessOffset="0.24705881" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.6">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.09" midpoint="0.5">
+                                 <matte red="149" green="155" blue="158" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.05356429" brightnessOffset="-0.12549019" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="85" green="88" blue="94" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0147816315" brightnessOffset="-0.3764706" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                           <matte red="92" green="94" blue="96" alpha="65" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-190"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="251" green="251" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.5">
+                                 <matte red="241" green="242" blue="244" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.09823123" brightnessOffset="0.2117647" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="244" green="247" blue="253" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0749532" brightnessOffset="0.24705881" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.09" midpoint="0.5">
+                                 <matte red="149" green="155" blue="158" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.05356429" brightnessOffset="-0.12549019" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="85" green="88" blue="94" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0147816315" brightnessOffset="-0.3764706" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="253" green="253" blue="254" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="247" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background"  uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background"  uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.09" midpoint="0.5">
+                                 <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                           <matte red="92" green="94" blue="96" alpha="65" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-190"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="253" green="253" blue="254" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="247" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.09" midpoint="0.5">
+                                 <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="194" green="199" blue="207" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04772438" brightnessOffset="0.06666666" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.6">
+                                 <matte red="204" green="211" blue="224" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="231" green="237" blue="251" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.030845039" brightnessOffset="0.23921567" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.05" midpoint="0.5">
+                                 <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.8894737" brightnessOffset="-0.7176471" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="5.847961E-4" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                           <matte red="245" green="250" blue="255" alpha="160" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="194" green="199" blue="207" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04772438" brightnessOffset="0.06666666" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.6">
+                                 <matte red="204" green="211" blue="224" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="231" green="237" blue="251" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.030845039" brightnessOffset="0.23921567" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.05" midpoint="0.5">
+                                 <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.8894737" brightnessOffset="-0.7176471" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="5.847961E-4" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JToggleButton" name="ToggleButton" ui="ToggleButtonUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="6" bottom="6" left="14" right="14"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08477524" brightnessOffset="0.16862744" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.5">
+                                 <matte red="223" green="226" blue="230" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.080091536" brightnessOffset="0.15686274" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="216" green="219" blue="225" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07052632" brightnessOffset="0.1372549" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="218" green="221" blue="227" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.070878744" brightnessOffset="0.14509803" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.09" midpoint="0.5">
+                                 <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06766917" brightnessOffset="0.07843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="188" green="191" blue="197" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06484103" brightnessOffset="0.027450979" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                           <matte red="92" green="94" blue="96" alpha="23" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-232"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="251" green="251" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="241" green="242" blue="244" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.09823123" brightnessOffset="0.2117647" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.6">
+                                 <matte red="244" green="247" blue="253" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0749532" brightnessOffset="0.24705881" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.6">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.09" midpoint="0.5">
+                                 <matte red="149" green="155" blue="158" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.05356429" brightnessOffset="-0.12549019" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="85" green="88" blue="94" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0147816315" brightnessOffset="-0.3764706" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                           <matte red="92" green="94" blue="96" alpha="65" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-190"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="251" green="251" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.5">
+                                 <matte red="241" green="242" blue="244" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.09823123" brightnessOffset="0.2117647" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="244" green="247" blue="253" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0749532" brightnessOffset="0.24705881" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.09" midpoint="0.5">
+                                 <matte red="149" green="155" blue="158" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.05356429" brightnessOffset="-0.12549019" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="85" green="88" blue="94" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0147816315" brightnessOffset="-0.3764706" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="253" green="253" blue="254" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="247" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.09" midpoint="0.5">
+                                 <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                           <matte red="92" green="94" blue="96" alpha="65" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-190"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="253" green="253" blue="254" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="247" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.09" midpoint="0.5">
+                                 <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="194" green="199" blue="207" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04772438" brightnessOffset="0.06666666" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.6">
+                                 <matte red="204" green="211" blue="224" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="231" green="237" blue="251" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.030845039" brightnessOffset="0.23921567" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.05" midpoint="0.5">
+                                 <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.8894737" brightnessOffset="-0.7176471" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="5.847961E-4" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                           <matte red="245" green="250" blue="255" alpha="160" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Button Layer">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.4">
+                                 <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.06" midpoint="0.4">
+                                 <matte red="194" green="199" blue="207" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04772438" brightnessOffset="0.06666666" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6" midpoint="0.5">
+                                 <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.7" midpoint="0.6">
+                                 <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.96" midpoint="0.6">
+                                 <matte red="204" green="211" blue="224" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="231" green="237" blue="251" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.030845039" brightnessOffset="0.23921567" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.05" midpoint="0.5">
+                                 <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.8894737" brightnessOffset="-0.7176471" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.95" midpoint="0.5">
+                                 <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="5.847961E-4" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Selected">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="72" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="164" green="166" blue="172" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.06401469" brightnessOffset="-0.07058823" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.13368984" midpoint="0.5">
+                                 <matte red="190" green="193" blue="199" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06530018" brightnessOffset="0.035294116" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="189" green="192" blue="198" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06507177" brightnessOffset="0.031372547" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="125" green="127" blue="131" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06472479" brightnessOffset="-0.23137254" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="164" green="166" blue="171" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.06959064" brightnessOffset="-0.0745098" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="9.0">
+                           <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1139ecfc04b.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Selected+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="72" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="164" green="166" blue="172" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.06401469" brightnessOffset="-0.07058823" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.13368984" midpoint="0.5">
+                                 <matte red="190" green="193" blue="199" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06530018" brightnessOffset="0.035294116" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="189" green="192" blue="198" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06507177" brightnessOffset="0.031372547" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="125" green="127" blue="131" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06472479" brightnessOffset="-0.23137254" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="164" green="166" blue="171" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.06959064" brightnessOffset="-0.0745098" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="11.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed+Selected">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="72" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="117" green="121" blue="126" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.018518567" saturationOffset="-0.03909774" brightnessOffset="-0.2509804" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.13368984" midpoint="0.5">
+                                 <matte red="145" green="149" blue="156" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.040013492" brightnessOffset="-0.13333333" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="144" green="147" blue="155" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="-0.039558575" brightnessOffset="-0.1372549" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="66" green="68" blue="70" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.05338346" brightnessOffset="-0.47058824" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="92" green="94" blue="98" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049301825" brightnessOffset="-0.36078432" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="9.0">
+                           <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1139ed92ed8.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed+Selected+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="72" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="117" green="121" blue="126" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.018518567" saturationOffset="-0.03909774" brightnessOffset="-0.2509804" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.13368984" midpoint="0.5">
+                                 <matte red="145" green="149" blue="156" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.040013492" brightnessOffset="-0.13333333" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="144" green="147" blue="155" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="-0.039558575" brightnessOffset="-0.1372549" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="66" green="68" blue="70" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.05338346" brightnessOffset="-0.47058824" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="92" green="94" blue="98" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049301825" brightnessOffset="-0.36078432" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="11.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver+Selected">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="72" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="149" green="152" blue="157" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0595709" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.13368984" midpoint="0.5">
+                                 <matte red="173" green="176" blue="182" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061075766" brightnessOffset="-0.031372547" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="172" green="175" blue="181" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06080256" brightnessOffset="-0.035294116" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="95" green="97" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.060526315" brightnessOffset="-0.3529412" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="124" green="126" blue="130" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.064372465" brightnessOffset="-0.2352941" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="9.0">
+                           <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1139eda6220.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver+Selected+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="72" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="149" green="152" blue="157" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0595709" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.13368984" midpoint="0.5">
+                                 <matte red="173" green="176" blue="182" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061075766" brightnessOffset="-0.031372547" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="172" green="175" blue="181" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06080256" brightnessOffset="-0.035294116" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="95" green="97" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.060526315" brightnessOffset="-0.3529412" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="124" green="126" blue="130" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.064372465" brightnessOffset="-0.2352941" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="11.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Disabled+Selected">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="72" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="203" green="206" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06807348" brightnessOffset="0.086274505" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.13368984" midpoint="0.5">
+                                 <matte red="209" green="212" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06924191" brightnessOffset="0.109803915" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="209" green="212" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06924191" brightnessOffset="0.109803915" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="195" green="198" blue="204" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.066408664" brightnessOffset="0.054901958" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="203" green="206" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06807348" brightnessOffset="0.086274505" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="9.0">
+                           <matte red="255" green="255" blue="255" alpha="35" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-220"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1139edb5619.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JRadioButton" name="RadioButton" ui="RadioButtonUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="7" bottom="7" left="7" right="7"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiIconRegion name="Icon" subregion="true" key="icon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.06344411" midpoint="0.5">
+                                       <matte red="226" green="228" blue="232" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08466425" brightnessOffset="0.16470587" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.36858007" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.72809666" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.82175225" midpoint="0.5">
+                                       <matte red="217" green="220" blue="226" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.070703305" brightnessOffset="0.14117646" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="216" green="219" blue="225" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07052632" brightnessOffset="0.1372549" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06766917" brightnessOffset="0.07843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="185" green="188" blue="194" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06413457" brightnessOffset="0.015686274" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.06344411" midpoint="0.5">
+                                       <matte red="250" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10654225" brightnessOffset="0.23921567" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.43674698" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.52409637" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.88554215" midpoint="0.5">
+                                       <matte red="225" green="228" blue="234" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07206477" brightnessOffset="0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="148" green="151" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.053201474" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="68" green="71" blue="77" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.006356798" brightnessOffset="-0.44313726" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Shadow">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="2.0" x2="16.0" y1="3.0" y2="17.0">
+                                 <matte red="169" green="176" blue="190" alpha="143" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-112"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1138ddc021b.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.06344411" midpoint="0.5">
+                                       <matte red="250" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10654225" brightnessOffset="0.23921567" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.43674698" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.52409637" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.88554215" midpoint="0.5">
+                                       <matte red="225" green="228" blue="234" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07206477" brightnessOffset="0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="148" green="151" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.053201474" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="68" green="71" blue="77" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.006356798" brightnessOffset="-0.44313726" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                              <ellipse x1="0.6" x2="17.4" y1="0.6" y2="17.4">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.06344411" midpoint="0.5">
+                                       <matte red="251" green="252" blue="252" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.36858007" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.72809666" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.82175225" midpoint="0.5">
+                                       <matte red="246" green="244" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.08585858" saturationOffset="-0.067389056" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="235" green="236" blue="236" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.10628903" brightnessOffset="0.18039215" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="122" green="126" blue="133" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.027819552" brightnessOffset="-0.2235294" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="22" green="26" blue="34" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.24241486" brightnessOffset="-0.6117647" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Shadow">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="2.0" x2="16.0" y1="3.0" y2="17.0">
+                                 <matte red="169" green="176" blue="190" alpha="143" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-112"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1138de7a9a7.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.06344411" midpoint="0.5">
+                                       <matte red="251" green="252" blue="252" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.36858007" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.72809666" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.82175225" midpoint="0.5">
+                                       <matte red="246" green="244" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.08585858" saturationOffset="-0.067389056" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="235" green="236" blue="236" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.10628903" brightnessOffset="0.18039215" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="122" green="126" blue="133" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.027819552" brightnessOffset="-0.2235294" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="22" green="26" blue="34" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.24241486" brightnessOffset="-0.6117647" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                              <ellipse x1="0.6" x2="17.4" y1="0.6" y2="17.4">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.06344411" midpoint="0.5">
+                                       <matte red="206" green="209" blue="215" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06866585" brightnessOffset="0.09803921" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.35240963" midpoint="0.5">
+                                       <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.5481928" midpoint="0.5">
+                                       <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.9487952" midpoint="0.5">
+                                       <matte red="192" green="198" blue="211" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.002924025" saturationOffset="-0.02047892" brightnessOffset="0.082352936" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="13" green="13" blue="20" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.23947367" brightnessOffset="-0.6666667" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="113" green="117" blue="118" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0777778" saturationOffset="-0.06815343" brightnessOffset="-0.28235295" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Shadow">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="2.0" x2="16.0" y1="3.0" y2="17.0">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1138e896368.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.06344411" midpoint="0.5">
+                                       <matte red="206" green="209" blue="215" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06866585" brightnessOffset="0.09803921" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.35240963" midpoint="0.5">
+                                       <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.5481928" midpoint="0.5">
+                                       <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.9487952" midpoint="0.5">
+                                       <matte red="192" green="198" blue="211" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.002924025" saturationOffset="-0.02047892" brightnessOffset="0.082352936" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="13" green="13" blue="20" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.23947367" brightnessOffset="-0.6666667" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="113" green="117" blue="118" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0777778" saturationOffset="-0.06815343" brightnessOffset="-0.28235295" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                              <ellipse x1="0.6" x2="17.4" y1="0.6" y2="17.4">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="101" green="103" blue="105" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07243107" brightnessOffset="-0.33333334" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.46385542" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="27" green="30" blue="33" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="0.07129187" brightnessOffset="-0.6156863" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0813253" midpoint="0.5">
+                                       <matte red="244" green="246" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6195853" brightnessOffset="0.4235294" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.12048193" midpoint="0.5">
+                                       <matte red="217" green="225" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.56704473" brightnessOffset="0.36470586" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.45783132" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.77409637" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.88554215" midpoint="0.5">
+                                       <matte red="174" green="195" blue="214" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44879842" brightnessOffset="0.29019606" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="100" green="120" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.36035198" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="20" green="40" blue="58" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="0.019458115" brightnessOffset="-0.32156867" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Shadow">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="2.0" x2="16.0" y1="3.0" y2="17.0">
+                                 <matte red="169" green="176" blue="190" alpha="143" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-112"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1138e15047c.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="101" green="103" blue="105" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07243107" brightnessOffset="-0.33333334" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.46385542" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="27" green="30" blue="33" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="0.07129187" brightnessOffset="-0.6156863" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0813253" midpoint="0.5">
+                                       <matte red="244" green="246" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6195853" brightnessOffset="0.4235294" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.12048193" midpoint="0.5">
+                                       <matte red="217" green="225" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.56704473" brightnessOffset="0.36470586" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.45783132" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.77409637" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.88554215" midpoint="0.5">
+                                       <matte red="174" green="195" blue="214" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44879842" brightnessOffset="0.29019606" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="100" green="120" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.36035198" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="20" green="40" blue="58" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="0.019458115" brightnessOffset="-0.32156867" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                              <ellipse x1="0.6" x2="17.4" y1="0.6" y2="17.4">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="64" green="65" blue="66" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.080223285" brightnessOffset="-0.4862745" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.46385542" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="27" green="30" blue="33" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="0.07129187" brightnessOffset="-0.6156863" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.039156627" midpoint="0.5">
+                                       <matte red="157" green="178" blue="196" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4367347" brightnessOffset="0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11746988" midpoint="0.5">
+                                       <matte red="122" green="153" blue="180" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0010654926" saturationOffset="-0.31349206" brightnessOffset="0.15686274" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.45783132" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.66566265" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.88554215" midpoint="0.5">
+                                       <matte red="82" green="127" blue="168" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.05676E-4" saturationOffset="-0.12380952" brightnessOffset="0.109803915" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="13" green="13" blue="13" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.49803925" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="20" green="40" blue="58" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="0.019458115" brightnessOffset="-0.32156867" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="49" green="75" blue="100" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0030477047" saturationOffset="-0.1257143" brightnessOffset="-0.15686277" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Shadow">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="2.0" x2="16.0" y1="3.0" y2="17.0">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1138e817331.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Selected+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="64" green="65" blue="66" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.080223285" brightnessOffset="-0.4862745" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.46385542" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="27" green="30" blue="33" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="0.07129187" brightnessOffset="-0.6156863" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.039156627" midpoint="0.5">
+                                       <matte red="157" green="178" blue="196" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4367347" brightnessOffset="0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11746988" midpoint="0.5">
+                                       <matte red="122" green="153" blue="180" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0010654926" saturationOffset="-0.31349206" brightnessOffset="0.15686274" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.45783132" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.66566265" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.88554215" midpoint="0.5">
+                                       <matte red="82" green="127" blue="168" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.05676E-4" saturationOffset="-0.12380952" brightnessOffset="0.109803915" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="13" green="13" blue="13" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.49803925" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="20" green="40" blue="58" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="0.019458115" brightnessOffset="-0.32156867" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="49" green="75" blue="100" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0030477047" saturationOffset="-0.1257143" brightnessOffset="-0.15686277" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                              <ellipse x1="0.6" x2="17.4" y1="0.6" y2="17.4">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="101" green="103" blue="105" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07243107" brightnessOffset="-0.33333334" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.46385542" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="27" green="30" blue="33" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="0.07129187" brightnessOffset="-0.6156863" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0813253" midpoint="0.5">
+                                       <matte red="245" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.011985004" saturationOffset="-0.6157143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.12048193" midpoint="0.5">
+                                       <matte red="225" green="233" blue="241" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.56932425" brightnessOffset="0.3960784" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.28313252" midpoint="0.5">
+                                       <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7018072" midpoint="0.5">
+                                       <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.810241" midpoint="0.5">
+                                       <matte red="195" green="216" blue="235" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.46550155" brightnessOffset="0.372549" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.88554215" midpoint="0.5">
+                                       <matte red="190" green="209" blue="227" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0024294257" saturationOffset="-0.47271872" brightnessOffset="0.34117645" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="62" green="87" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-6.374717E-4" saturationOffset="-0.20452163" brightnessOffset="-0.12156865" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="11" green="11" blue="11" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.5058824" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Shadow">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="2.0" x2="16.0" y1="3.0" y2="17.0">
+                                 <matte red="169" green="176" blue="190" alpha="143" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-112"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1138e7b96f2.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Selected+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="101" green="103" blue="105" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07243107" brightnessOffset="-0.33333334" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.46385542" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="27" green="30" blue="33" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="0.07129187" brightnessOffset="-0.6156863" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0813253" midpoint="0.5">
+                                       <matte red="245" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.011985004" saturationOffset="-0.6157143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.12048193" midpoint="0.5">
+                                       <matte red="225" green="233" blue="241" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.56932425" brightnessOffset="0.3960784" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.28313252" midpoint="0.5">
+                                       <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7018072" midpoint="0.5">
+                                       <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.810241" midpoint="0.5">
+                                       <matte red="195" green="216" blue="235" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.46550155" brightnessOffset="0.372549" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.88554215" midpoint="0.5">
+                                       <matte red="190" green="209" blue="227" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0024294257" saturationOffset="-0.47271872" brightnessOffset="0.34117645" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="62" green="87" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-6.374717E-4" saturationOffset="-0.20452163" brightnessOffset="-0.12156865" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="11" green="11" blue="11" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.5058824" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                              <ellipse x1="0.6" x2="17.4" y1="0.6" y2="17.4">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Disabled+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="181" green="185" blue="191" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.058170296" brightnessOffset="0.0039215684" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.46385542" midpoint="0.5">
+                                       <matte red="163" green="168" blue="175" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.04195489" brightnessOffset="-0.058823526" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="170" green="175" blue="188" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.009259284" saturationOffset="-0.0147816315" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0813253" midpoint="0.5">
+                                       <matte red="219" green="223" blue="230" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5878882" brightnessOffset="0.35294116" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.45783132" midpoint="0.5">
+                                       <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.88554215" midpoint="0.5">
+                                       <matte red="206" green="212" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.567841" brightnessOffset="0.31764704" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="191" green="198" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.56289876" brightnessOffset="0.2588235" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="176" green="182" blue="190" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.016586483" saturationOffset="-0.5620301" brightnessOffset="0.19607842" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1138e83122d.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JCheckBox" name="CheckBox" ui="CheckBoxUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="104" height="33"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiIconRegion name="Icon" subregion="true" key="icon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.60996324" brightnessOffset="0.36470586" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="214" green="217" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02551502" saturationOffset="-0.5996783" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="219" green="222" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.59624064" brightnessOffset="0.34509802" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06766917" brightnessOffset="0.07843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="188" green="191" blue="197" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06484103" brightnessOffset="0.027450979" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.63174605" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="239" green="242" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.59942394" brightnessOffset="0.4235294" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="149" green="152" blue="158" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.05356429" brightnessOffset="-0.12549019" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="86" green="89" blue="95" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.015789472" brightnessOffset="-0.37254903" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="11.0" y2="17.0" rounding="5.176470588235279">
+                                 <matte red="169" green="176" blue="190" alpha="166" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-89"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1138ec6661e.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.63174605" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="239" green="242" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.59942394" brightnessOffset="0.4235294" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="149" green="152" blue="158" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.05356429" brightnessOffset="-0.12549019" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="86" green="89" blue="95" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.015789472" brightnessOffset="-0.37254903" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="17.4" y1="0.6" y2="17.4" rounding="7.999999999999999">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6317773" brightnessOffset="0.4470588" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5985242" brightnessOffset="0.39999998" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="44" green="47" blue="55" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="0.08947369" brightnessOffset="-0.5294118" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="11.0" y2="17.0" rounding="5.176470588235279">
+                                 <matte red="169" green="176" blue="190" alpha="166" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-89"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6317773" brightnessOffset="0.4470588" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5985242" brightnessOffset="0.39999998" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="44" green="47" blue="55" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="0.08947369" brightnessOffset="-0.5294118" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="17.4" y1="0.6" y2="17.4" rounding="7.999999999999999">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="205" green="209" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5847884" brightnessOffset="0.2980392" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.52701867" brightnessOffset="0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="184" green="191" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.5376751" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.8894737" brightnessOffset="-0.7176471" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="95" green="99" blue="107" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0016232133" brightnessOffset="-0.3254902" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="11.0" y2="17.0" rounding="5.176470588235279">
+                                 <matte red="169" green="176" blue="190" alpha="166" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-89"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="205" green="209" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5847884" brightnessOffset="0.2980392" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.52701867" brightnessOffset="0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="184" green="191" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.5376751" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.8894737" brightnessOffset="-0.7176471" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="95" green="99" blue="107" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0016232133" brightnessOffset="-0.3254902" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="17.4" y1="0.6" y2="17.4" rounding="7.999999999999999">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 2">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
+                                    <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
+                                    <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
+                                    <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
+                                    <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="166" green="187" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44153953" brightnessOffset="0.2588235" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="188" green="209" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4602757" brightnessOffset="0.34509802" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="35" green="56" blue="75" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.10238093" brightnessOffset="-0.25490198" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="11.0" y2="17.0" rounding="5.176470588235279">
+                                 <matte red="169" green="176" blue="190" alpha="166" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-89"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1138ed19809.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 2">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
+                                    <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
+                                    <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
+                                    <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
+                                    <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="166" green="187" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44153953" brightnessOffset="0.2588235" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="188" green="209" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4602757" brightnessOffset="0.34509802" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="35" green="56" blue="75" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.10238093" brightnessOffset="-0.25490198" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="17.4" y1="0.6" y2="17.4" rounding="7.999999999999999">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 2">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
+                                    <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
+                                    <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
+                                    <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
+                                    <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11550152" midpoint="0.5">
+                                       <matte red="115" green="148" blue="176" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0021489263" saturationOffset="-0.2891234" brightnessOffset="0.14117646" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="51" green="98" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.006362498" saturationOffset="-0.016311288" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="106" green="153" blue="195" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.17930403" brightnessOffset="0.21568626" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="27" green="55" blue="80" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.026785731" brightnessOffset="-0.23529413" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="11.0" y2="17.0" rounding="5.176470588235279">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Selected+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 2">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
+                                    <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
+                                    <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
+                                    <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
+                                    <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11550152" midpoint="0.5">
+                                       <matte red="115" green="148" blue="176" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0021489263" saturationOffset="-0.2891234" brightnessOffset="0.14117646" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="51" green="98" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.006362498" saturationOffset="-0.016311288" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="106" green="153" blue="195" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.17930403" brightnessOffset="0.21568626" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="27" green="55" blue="80" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.026785731" brightnessOffset="-0.23529413" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="17.4" y1="0.6" y2="17.4" rounding="7.999999999999999">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 2">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
+                                    <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
+                                    <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
+                                    <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
+                                    <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="207" green="228" blue="247" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47377098" brightnessOffset="0.41960782" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="6" blue="30" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="0.3642857" brightnessOffset="-0.43137258" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="11.0" y2="17.0" rounding="5.176470588235279">
+                                 <matte red="169" green="176" blue="190" alpha="166" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-89"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Selected+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 2">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
+                                    <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
+                                    <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
+                                    <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
+                                    <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="207" green="228" blue="247" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47377098" brightnessOffset="0.41960782" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="6" blue="30" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="0.3642857" brightnessOffset="-0.43137258" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="17.4" y1="0.6" y2="17.4" rounding="7.999999999999999">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Disabled+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="18"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 2">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="166" green="170" blue="177" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5735674" brightnessOffset="0.14509803" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
+                                    <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
+                                    <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
+                                    <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
+                                    <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
+                                    <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="220" green="224" blue="230" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.59223604" brightnessOffset="0.35294116" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64457834" midpoint="0.5">
+                                       <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="209" green="215" blue="224" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56875" brightnessOffset="0.32941175" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="191" green="197" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.03771078" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="178" green="185" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02222222" saturationOffset="-0.032806106" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JColorChooser" name="ColorChooser" ui="ColorChooserUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="5" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties>
+               <uiProperty name="swatchesDefaultRecentColor" type="COLOR">
+                  <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+               </uiProperty>
+            </uiproperties>
+         </style>
+         <backgroundStates/>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiComponent opaque="false" componentName="ColorChooser.previewPanelHolder" type="javax.swing.JPanel" name="Panel" ui="PanelUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="0" bottom="10" left="5" right="5"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions>
+                  <uiComponent opaque="false" componentName="OptionPane.label" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
+                     <stateTypes/>
+                     <contentMargins top="0" bottom="10" left="10" right="10"/>
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <backgroundStates>
+                        <state stateKeys="Enabled">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="100" height="30"/>
+                              <nextLayerNameIndex>2</nextLayerNameIndex>
+                              <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes/>
+                                 <effects/>
+                              </layer>
+                           </canvas>
+                        </state>
+                     </backgroundStates>
+                     <foregroundStates/>
+                     <borderStates/>
+                     <regions/>
+                  </uiComponent>
+               </regions>
+            </uiComponent>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JComboBox" name="ComboBox" ui="ComboBoxUI" subregion="false">
+         <stateTypes>
+            <stateType key="Enabled"/>
+            <stateType key="MouseOver"/>
+            <stateType key="Pressed"/>
+            <stateType key="Selected"/>
+            <stateType key="Disabled"/>
+            <stateType key="Focused"/>
+            <stateType key="Editable">
+               <codeSnippet><![CDATA[
+                          return ((JComboBox)c).isEditable();]]></codeSnippet>
+            </stateType>
+         </stateTypes>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+            <uiproperties>
+               <uiProperty name="forceOpaque" type="BOOLEAN" value="true"/>
+               <uiProperty name="buttonWhenNotEditable" type="BOOLEAN" value="true"/>
+               <uiProperty name="rendererUseListColors" type="BOOLEAN" value="false"/>
+               <uiProperty name="pressedWhenPopupVisible" type="BOOLEAN" value="true"/>
+               <uiProperty name="squareButton" type="BOOLEAN" value="false"/>
+               <uiProperty name="popupInsets" type="INSETS">
+                  <insets top="-2" bottom="0" left="2" right="2"/>
+               </uiProperty>
+               <uiProperty name="padding" type="INSETS">
+                  <insets top="3" bottom="3" left="3" right="3"/>
+               </uiProperty>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="83" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="8" bottom="8" left="9" right="19"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="220" green="224" blue="230" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.59223604" brightnessOffset="0.35294116" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.34375" midpoint="0.5">
+                                 <matte red="210" green="215" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02391243" saturationOffset="-0.5774183" brightnessOffset="0.32549018" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6193182" midpoint="0.5">
+                                 <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="206" green="212" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.567841" brightnessOffset="0.31764704" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
+                              <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
+                              <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
+                              <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
+                              <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
+                              <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="191" green="197" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56289876" brightnessOffset="0.2588235" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="178" green="185" blue="193" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.55799407" brightnessOffset="0.20784312" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
+                              <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
+                              <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
+                              <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.60996324" brightnessOffset="0.36470586" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4005682" midpoint="0.5">
+                                 <matte red="219" green="221" blue="226" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.040395975" saturationOffset="-0.60474086" brightnessOffset="0.33725488" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.66477275" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="216" green="219" blue="225" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5957143" brightnessOffset="0.3333333" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                              <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
+                              <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
+                              <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
+                              <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
+                              <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5928571" brightnessOffset="0.2745098" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="188" green="191" blue="197" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.590029" brightnessOffset="0.2235294" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
+                              <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
+                              <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="0" green="0" blue="0" alpha="8" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-247"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
+                              <point x="2.0" y="18.0" cp1x="2.0" cp1y="18.0" cp2x="2.0" cp2y="21.0"/>
+                              <point x="7.0" y="23.0" cp1x="4.0" cp1y="23.0" cp2x="7.0" cp2y="23.0"/>
+                              <point x="76.0" y="23.0" cp1x="76.0" cp1y="23.0" cp2x="79.0" cp2y="23.0"/>
+                              <point x="81.0" y="18.0" cp1x="81.0" cp1y="21.0" cp2x="81.0" cp2y="18.0"/>
+                              <point x="81.0" y="16.0" cp1x="81.0" cp1y="16.0" cp2x="81.0" cp2y="16.0"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113cff8896a.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Disabled+Pressed">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="83" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="8" bottom="8" left="9" right="19"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="220" green="224" blue="230" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.59223604" brightnessOffset="0.35294116" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.34375" midpoint="0.5">
+                                 <matte red="210" green="215" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02391243" saturationOffset="-0.5774183" brightnessOffset="0.32549018" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6193182" midpoint="0.5">
+                                 <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="206" green="212" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.567841" brightnessOffset="0.31764704" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
+                              <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
+                              <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
+                              <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
+                              <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
+                              <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="191" green="197" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56289876" brightnessOffset="0.2588235" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="178" green="185" blue="193" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.55799407" brightnessOffset="0.20784312" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
+                              <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
+                              <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
+                              <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.60996324" brightnessOffset="0.36470586" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4005682" midpoint="0.5">
+                                 <matte red="219" green="221" blue="226" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.040395975" saturationOffset="-0.60474086" brightnessOffset="0.33725488" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.66477275" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="216" green="219" blue="225" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5957143" brightnessOffset="0.3333333" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                              <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
+                              <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
+                              <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
+                              <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
+                              <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5928571" brightnessOffset="0.2745098" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="188" green="191" blue="197" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.590029" brightnessOffset="0.2235294" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
+                              <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
+                              <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="0" green="0" blue="0" alpha="8" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-247"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
+                              <point x="2.0" y="18.0" cp1x="2.0" cp1y="18.0" cp2x="2.0" cp2y="21.0"/>
+                              <point x="7.0" y="23.0" cp1x="4.0" cp1y="23.0" cp2x="7.0" cp2y="23.0"/>
+                              <point x="76.0" y="23.0" cp1x="76.0" cp1y="23.0" cp2x="79.0" cp2y="23.0"/>
+                              <point x="81.0" y="18.0" cp1x="81.0" cp1y="21.0" cp2x="81.0" cp2y="18.0"/>
+                              <point x="81.0" y="16.0" cp1x="81.0" cp1y="16.0" cp2x="81.0" cp2y="16.0"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113cff8896a.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="83" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="8" bottom="8" left="9" right="19"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="246" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.34375" midpoint="0.5">
+                                 <matte red="179" green="197" blue="212" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.4800539" brightnessOffset="0.28235292" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6193182" midpoint="0.5">
+                                 <matte red="163" green="184" blue="203" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="191" green="212" blue="231" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
+                              <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
+                              <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
+                              <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
+                              <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
+                              <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
+                              <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
+                              <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
+                              <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="251" green="251" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.63174605" brightnessOffset="0.43921566" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4005682" midpoint="0.5">
+                                 <matte red="224" green="226" blue="231" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.040395975" saturationOffset="-0.6054113" brightnessOffset="0.35686272" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.66477275" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="242" green="245" blue="251" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5998577" brightnessOffset="0.4352941" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                              <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
+                              <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
+                              <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
+                              <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
+                              <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="149" green="152" blue="158" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5787523" brightnessOffset="0.07058823" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="85" green="88" blue="94" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5399696" brightnessOffset="-0.18039218" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
+                              <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
+                              <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="119" green="124" blue="134" alpha="79" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.22" alphaOffset="-176"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
+                              <point x="2.0" y="18.0" cp1x="2.0" cp1y="18.0" cp2x="2.0" cp2y="21.0"/>
+                              <point x="7.0" y="23.0" cp1x="4.0" cp1y="23.0" cp2x="7.0" cp2y="23.0"/>
+                              <point x="76.0" y="23.0" cp1x="76.0" cp1y="23.0" cp2x="79.0" cp2y="23.0"/>
+                              <point x="81.0" y="18.0" cp1x="81.0" cp1y="21.0" cp2x="81.0" cp2y="18.0"/>
+                              <point x="81.0" y="16.0" cp1x="81.0" cp1y="16.0" cp2x="81.0" cp2y="16.0"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113cfe59bd4.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="83" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="8" bottom="8" left="9" right="19"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="246" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.34375" midpoint="0.5">
+                                 <matte red="179" green="197" blue="212" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.4800539" brightnessOffset="0.28235292" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6193182" midpoint="0.5">
+                                 <matte red="163" green="184" blue="203" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="191" green="212" blue="231" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
+                              <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
+                              <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
+                              <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
+                              <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
+                              <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
+                              <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
+                              <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
+                              <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="251" green="251" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.63174605" brightnessOffset="0.43921566" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4005682" midpoint="0.5">
+                                 <matte red="224" green="226" blue="231" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.040395975" saturationOffset="-0.6054113" brightnessOffset="0.35686272" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.66477275" midpoint="0.5">
+                                 <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="242" green="245" blue="251" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5998577" brightnessOffset="0.4352941" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                              <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
+                              <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
+                              <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
+                              <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
+                              <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="149" green="152" blue="158" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5787523" brightnessOffset="0.07058823" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="85" green="88" blue="94" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5399696" brightnessOffset="-0.18039218" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
+                              <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
+                              <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <rectangle x1="0.6" x2="82.4" y1="0.6" y2="23.4" rounding="13.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="83" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="8" bottom="8" left="9" right="19"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="248" green="250" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.34375" midpoint="0.5">
+                                 <matte red="200" green="216" blue="230" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-8.738637E-4" saturationOffset="-0.50527954" brightnessOffset="0.35294116" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6193182" midpoint="0.5">
+                                 <matte red="182" green="203" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="191" green="212" blue="231" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="210" green="231" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4757143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
+                              <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
+                              <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
+                              <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
+                              <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
+                              <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
+                              <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
+                              <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
+                              <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="253" green="253" blue="254" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6317773" brightnessOffset="0.4470588" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4005682" midpoint="0.5">
+                                 <matte red="240" green="242" blue="246" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.6113241" brightnessOffset="0.41568625" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.66477275" midpoint="0.5">
+                                 <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5985242" brightnessOffset="0.39999998" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                              <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
+                              <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
+                              <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
+                              <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
+                              <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.54616207" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.41349208" brightnessOffset="-0.33725494" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
+                              <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
+                              <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <rectangle x1="0.6" x2="82.4" y1="0.6" y2="23.4" rounding="13.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113cffce35a.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="83" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="8" bottom="8" left="9" right="19"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="248" green="250" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.34375" midpoint="0.5">
+                                 <matte red="200" green="216" blue="230" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-8.738637E-4" saturationOffset="-0.50527954" brightnessOffset="0.35294116" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6193182" midpoint="0.5">
+                                 <matte red="182" green="203" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="191" green="212" blue="231" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="210" green="231" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4757143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
+                              <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
+                              <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
+                              <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
+                              <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
+                              <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
+                              <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
+                              <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
+                              <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="253" green="253" blue="254" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6317773" brightnessOffset="0.4470588" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4005682" midpoint="0.5">
+                                 <matte red="240" green="242" blue="246" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.6113241" brightnessOffset="0.41568625" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.66477275" midpoint="0.5">
+                                 <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5985242" brightnessOffset="0.39999998" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                              <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
+                              <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
+                              <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
+                              <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
+                              <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.54616207" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.41349208" brightnessOffset="-0.33725494" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
+                              <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
+                              <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="119" green="124" blue="134" alpha="79" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.22" alphaOffset="-176"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
+                              <point x="2.0" y="18.0" cp1x="2.0" cp1y="18.0" cp2x="2.0" cp2y="21.0"/>
+                              <point x="7.0" y="23.0" cp1x="4.0" cp1y="23.0" cp2x="7.0" cp2y="23.0"/>
+                              <point x="76.0" y="23.0" cp1x="76.0" cp1y="23.0" cp2x="79.0" cp2y="23.0"/>
+                              <point x="81.0" y="18.0" cp1x="81.0" cp1y="21.0" cp2x="81.0" cp2y="18.0"/>
+                              <point x="81.0" y="16.0" cp1x="81.0" cp1y="16.0" cp2x="81.0" cp2y="16.0"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113cffce35a.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="83" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="8" bottom="8" left="9" right="19"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="143" green="169" blue="192" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.34375" midpoint="0.5">
+                                 <matte red="76" green="117" blue="154" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="4.081726E-4" saturationOffset="-0.12922078" brightnessOffset="0.054901958" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6193182" midpoint="0.5">
+                                 <matte red="53" green="100" blue="142" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="96" green="146" blue="189" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0015907288" saturationOffset="-0.1436508" brightnessOffset="0.19215685" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
+                              <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
+                              <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
+                              <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
+                              <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
+                              <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
+                              <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
+                              <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
+                              <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5847884" brightnessOffset="0.2980392" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4005682" midpoint="0.5">
+                                 <matte red="172" green="179" blue="191" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.026611507" saturationOffset="-0.53623784" brightnessOffset="0.19999999" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.66477275" midpoint="0.5">
+                                 <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.52701867" brightnessOffset="0.17254901" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="202" green="208" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.03801495" saturationOffset="-0.5456242" brightnessOffset="0.3215686" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                              <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
+                              <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
+                              <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
+                              <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
+                              <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.52156866" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5246032" brightnessOffset="-0.12549022" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
+                              <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
+                              <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <rectangle x1="0.6" x2="82.4" y1="0.6" y2="23.4" rounding="13.0">
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113cfff3c26.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="83" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="8" bottom="8" left="9" right="19"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="143" green="169" blue="192" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.34375" midpoint="0.5">
+                                 <matte red="76" green="117" blue="154" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="4.081726E-4" saturationOffset="-0.12922078" brightnessOffset="0.054901958" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6193182" midpoint="0.5">
+                                 <matte red="53" green="100" blue="142" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="96" green="146" blue="189" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0015907288" saturationOffset="-0.1436508" brightnessOffset="0.19215685" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
+                              <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
+                              <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
+                              <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
+                              <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
+                              <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
+                              <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
+                              <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
+                              <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5847884" brightnessOffset="0.2980392" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4005682" midpoint="0.5">
+                                 <matte red="172" green="179" blue="191" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.026611507" saturationOffset="-0.53623784" brightnessOffset="0.19999999" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.66477275" midpoint="0.5">
+                                 <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.52701867" brightnessOffset="0.17254901" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="202" green="208" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.03801495" saturationOffset="-0.5456242" brightnessOffset="0.3215686" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                              <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
+                              <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
+                              <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
+                              <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
+                              <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.52156866" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5246032" brightnessOffset="-0.12549022" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
+                              <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
+                              <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="255" green="255" blue="255" alpha="172" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-83"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
+                              <point x="2.0" y="18.0" cp1x="2.0" cp1y="18.0" cp2x="2.0" cp2y="21.0"/>
+                              <point x="7.0" y="23.0" cp1x="4.0" cp1y="23.0" cp2x="7.0" cp2y="23.0"/>
+                              <point x="76.0" y="23.0" cp1x="76.0" cp1y="23.0" cp2x="79.0" cp2y="23.0"/>
+                              <point x="81.0" y="18.0" cp1x="81.0" cp1y="21.0" cp2x="81.0" cp2y="18.0"/>
+                              <point x="81.0" y="16.0" cp1x="81.0" cp1y="16.0" cp2x="81.0" cp2y="16.0"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113cfff3c26.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled+Selected">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="83" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="8" bottom="8" left="9" right="19"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="143" green="169" blue="192" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.34375" midpoint="0.5">
+                                 <matte red="76" green="117" blue="154" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="4.081726E-4" saturationOffset="-0.12922078" brightnessOffset="0.054901958" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.6193182" midpoint="0.5">
+                                 <matte red="53" green="100" blue="142" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="96" green="146" blue="189" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0015907288" saturationOffset="-0.1436508" brightnessOffset="0.19215685" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
+                              <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
+                              <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
+                              <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
+                              <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
+                              <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
+                              <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
+                              <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
+                              <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5847884" brightnessOffset="0.2980392" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4005682" midpoint="0.5">
+                                 <matte red="172" green="179" blue="191" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.026611507" saturationOffset="-0.53623784" brightnessOffset="0.19999999" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.66477275" midpoint="0.5">
+                                 <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.52701867" brightnessOffset="0.17254901" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="202" green="208" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.03801495" saturationOffset="-0.5456242" brightnessOffset="0.3215686" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                              <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
+                              <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
+                              <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
+                              <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
+                              <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.52156866" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5246032" brightnessOffset="-0.12549022" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
+                              <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
+                              <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
+                              <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
+                              <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
+                              <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="255" green="255" blue="255" alpha="167" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-88"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
+                              <point x="2.0" y="18.0" cp1x="2.0" cp1y="18.0" cp2x="2.0" cp2y="21.0"/>
+                              <point x="7.0" y="23.0" cp1x="4.0" cp1y="23.0" cp2x="7.0" cp2y="23.0"/>
+                              <point x="76.0" y="23.0" cp1x="76.0" cp1y="23.0" cp2x="79.0" cp2y="23.0"/>
+                              <point x="81.0" y="18.0" cp1x="81.0" cp1y="21.0" cp2x="81.0" cp2y="18.0"/>
+                              <point x="81.0" y="16.0" cp1x="81.0" cp1y="16.0" cp2x="81.0" cp2y="16.0"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113cfff3c26.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Disabled+Editable">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="79" height="21"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="6" bottom="6" left="5" right="17"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="30.0" x2="30.0" y1="10.0" y2="10.0" rounding="0.0">
+                           <matte red="51" green="53" blue="57" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.005263157" brightnessOffset="-0.52156866" alphaOffset="-191"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled+Editable">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="79" height="21"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="6" bottom="6" left="5" right="17"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="30.0" x2="30.0" y1="10.0" y2="10.0" rounding="0.0">
+                           <matte red="51" green="53" blue="57" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.005263157" brightnessOffset="-0.52156866" alphaOffset="-191"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Focused+Editable">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="142" height="27"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="0.6" y="0.6" cp1x="0.6" cp1y="0.6" cp2x="0.6" cp2y="0.6"/>
+                              <point x="136.4" y="0.6" cp1x="136.4" cp1y="0.6" cp2x="139.4" cp2y="0.6"/>
+                              <point x="141.4" y="6.6" cp1x="141.4" cp1y="3.6" cp2x="141.4" cp2y="6.6"/>
+                              <point x="141.4" y="21.4" cp1x="141.4" cp1y="21.4" cp2x="141.4" cp2y="24.4"/>
+                              <point x="136.4" y="26.4" cp1x="139.4" cp1y="26.4" cp2x="136.4" cp2y="26.4"/>
+                              <point x="0.6" y="26.4" cp1x="0.6" cp1y="26.4" cp2x="0.6" cp2y="26.4"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="114d94654dc.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>true</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver+Editable">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="79" height="21"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="4" bottom="5" left="5" right="17"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="30.0" x2="30.0" y1="10.0" y2="10.0" rounding="0.0">
+                           <matte red="51" green="53" blue="57" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.005263157" brightnessOffset="-0.52156866" alphaOffset="-191"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed+Editable">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="79" height="21"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="4" bottom="5" left="5" right="17"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="30.0" x2="30.0" y1="10.0" y2="10.0" rounding="0.0">
+                           <matte red="51" green="53" blue="57" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.005263157" brightnessOffset="-0.52156866" alphaOffset="-191"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiComponent opaque="false" componentName="ComboBox.textField" type="javax.swing.JTextField" name="TextField" ui="TextFieldUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="0" bottom="0" left="6" right="3"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground>
+                           <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="64" height="24"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="3" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
+                                 <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.016586483" saturationOffset="-0.6051466" brightnessOffset="0.3490196" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
+                                 <matte red="208" green="210" blue="215" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.040395975" saturationOffset="-0.60315615" brightnessOffset="0.29411763" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="220" green="222" blue="227" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07968931" brightnessOffset="0.14509803" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="212" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07856284" brightnessOffset="0.11372548" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="1.0" x2="0.5" y2="0.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="199" green="202" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07187897" brightnessOffset="0.06666666" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="202" green="204" blue="209" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07703349" brightnessOffset="0.0745098" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="22.0" y2="23.0" rounding="0.0">
+                                 <matte red="0" green="0" blue="0" alpha="18" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-237"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113cfe4e021.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="64" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="3" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
+                                 <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.1" midpoint="0.5">
+                                       <matte red="203" green="203" blue="204" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.9" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.99147725" midpoint="0.5">
+                                       <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="22.0" y2="23.0" rounding="0.0">
+                                 <matte red="0" green="0" blue="0" alpha="18" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-237"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113cfe52151.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected">
+                     <style>
+                       <textForeground>
+                          <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                       </textForeground>
+                       <textBackground/>
+                       <background/>
+                       <inherit-textForeground>false</inherit-textForeground>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="64" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="3" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
+                                 <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.1" midpoint="0.5">
+                                       <matte red="203" green="203" blue="204" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.9" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.99147725" midpoint="0.5">
+                                       <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="22.0" y2="23.0" rounding="0.0">
+                                 <matte red="0" green="0" blue="0" alpha="18" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-237"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+            <uiComponent opaque="false" componentName="ComboBox.arrowButton" type="javax.swing.plaf.synth.SynthArrowButton" name="ArrowButton" ui="ArrowButtonUI" subregion="true">
+               <stateTypes>
+                  <stateType key="Enabled"/>
+                  <stateType key="MouseOver"/>
+                  <stateType key="Pressed"/>
+                  <stateType key="Disabled"/>
+                  <stateType key="Editable">
+                     <codeSnippet><![CDATA[
+                                Component parent = c.getParent();
+                                return parent instanceof JComboBox && ((JComboBox)parent).isEditable();]]></codeSnippet>
+                  </stateType>
+               </stateTypes>
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties>
+                     <uiProperty name="size" type="INT" value="19"/>
+                  </uiproperties>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="4" left="1" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="1" bottom="4" left="1" right="6"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="4" left="1" right="6"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="4" left="1" right="6"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Disabled+Editable">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="24"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="8" bottom="8" left="1" right="8"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="220" green="224" blue="230" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.59223604" brightnessOffset="0.35294116" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.34375" midpoint="0.5">
+                                       <matte red="210" green="215" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02391243" saturationOffset="-0.5774183" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6193182" midpoint="0.5">
+                                       <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="206" green="212" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.567841" brightnessOffset="0.31764704" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="12.0" y="3.0" cp1x="12.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
+                                    <point x="17.0" y="8.0" cp1x="17.0" cp1y="4.0" cp2x="17.0" cp2y="8.0"/>
+                                    <point x="17.0" y="16.0" cp1x="17.0" cp1y="16.0" cp2x="17.0" cp2y="20.0"/>
+                                    <point x="12.0" y="21.0" cp1x="16.0" cp1y="21.0" cp2x="12.0" cp2y="21.0"/>
+                                    <point x="1.0" y="21.0" cp1x="1.0" cp1y="21.0" cp2x="1.0" cp2y="21.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.8529411764705883" y="21.11764705882353" cp1x="0.8529411764705883" cp1y="21.11764705882353" cp2x="0.8529411764705883" cp2y="21.11764705882353"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="191" green="197" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56289876" brightnessOffset="0.2588235" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="178" green="185" blue="193" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.55799407" brightnessOffset="0.20784312" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.0" cp2y="2.0"/>
+                                    <point x="18.0" y="7.0" cp1x="18.0" cp1y="4.0" cp2x="18.0" cp2y="7.0"/>
+                                    <point x="18.0" y="17.0" cp1x="18.0" cp1y="17.0" cp2x="18.0" cp2y="20.0"/>
+                                    <point x="13.0" y="22.0" cp1x="16.0" cp1y="22.0" cp2x="13.0" cp2y="22.0"/>
+                                    <point x="0.0" y="22.0" cp1x="0.0" cp1y="22.0" cp2x="0.0" cp2y="22.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="8" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-247"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="16.0" cp1x="0.0" cp1y="16.0" cp2x="0.0" cp2y="16.0"/>
+                                    <point x="18.0" y="16.0" cp1x="18.0" cp1y="16.0" cp2x="18.0" cp2y="16.0"/>
+                                    <point x="18.0" y="18.0" cp1x="18.0" cp1y="18.0" cp2x="18.0" cp2y="22.0"/>
+                                    <point x="13.0" y="23.0" cp1x="16.0" cp1y="23.0" cp2x="13.0" cp2y="23.0"/>
+                                    <point x="0.0" y="23.0" cp1x="0.0" cp1y="23.0" cp2x="0.0" cp2y="23.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113c77d1eb8.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Editable">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="24"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="8" bottom="8" left="1" right="8"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.2754491">
+                                       <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.44652405" midpoint="0.5">
+                                       <matte red="174" green="192" blue="209" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0023007393" saturationOffset="-0.46825016" brightnessOffset="0.27058822" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64171124" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="191" green="212" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="12.0" y="3.0" cp1x="12.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
+                                    <point x="17.0" y="8.0" cp1x="17.0" cp1y="4.0" cp2x="17.0" cp2y="8.0"/>
+                                    <point x="17.0" y="16.0" cp1x="17.0" cp1y="16.0" cp2x="17.0" cp2y="20.0"/>
+                                    <point x="12.0" y="21.0" cp1x="16.0" cp1y="21.0" cp2x="12.0" cp2y="21.0"/>
+                                    <point x="1.0" y="21.0" cp1x="1.0" cp1y="21.0" cp2x="1.0" cp2y="21.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.8529411764705883" y="21.11764705882353" cp1x="0.8529411764705883" cp1y="21.11764705882353" cp2x="0.8529411764705883" cp2y="21.11764705882353"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.0" cp2y="2.0"/>
+                                    <point x="18.0" y="7.0" cp1x="18.0" cp1y="4.0" cp2x="18.0" cp2y="7.0"/>
+                                    <point x="18.0" y="17.0" cp1x="18.0" cp1y="17.0" cp2x="18.0" cp2y="20.0"/>
+                                    <point x="13.0" y="22.0" cp1x="16.0" cp1y="22.0" cp2x="13.0" cp2y="22.0"/>
+                                    <point x="0.0" y="22.0" cp1x="0.0" cp1y="22.0" cp2x="0.0" cp2y="22.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-191"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="16.0" cp1x="0.0" cp1y="16.0" cp2x="0.0" cp2y="16.0"/>
+                                    <point x="18.0" y="16.0" cp1x="18.0" cp1y="16.0" cp2x="18.0" cp2y="16.0"/>
+                                    <point x="18.0" y="18.0" cp1x="18.0" cp1y="18.0" cp2x="18.0" cp2y="22.0"/>
+                                    <point x="13.0" y="23.0" cp1x="16.0" cp1y="23.0" cp2x="13.0" cp2y="23.0"/>
+                                    <point x="0.0" y="23.0" cp1x="0.0" cp1y="23.0" cp2x="0.0" cp2y="23.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113c761dccf.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Editable">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="24"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="8" bottom="8" left="1" right="8"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.2754491">
+                                       <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.44652405" midpoint="0.5">
+                                       <matte red="191" green="209" blue="226" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0023007393" saturationOffset="-0.48084703" brightnessOffset="0.33725488" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64171124" midpoint="0.5">
+                                       <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.98395723" midpoint="0.5">
+                                       <matte red="210" green="231" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4757143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="12.0" y="3.0" cp1x="12.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
+                                    <point x="17.0" y="8.0" cp1x="17.0" cp1y="4.0" cp2x="17.0" cp2y="8.0"/>
+                                    <point x="17.0" y="16.0" cp1x="17.0" cp1y="16.0" cp2x="17.0" cp2y="20.0"/>
+                                    <point x="12.0" y="21.0" cp1x="16.0" cp1y="21.0" cp2x="12.0" cp2y="21.0"/>
+                                    <point x="1.0" y="21.0" cp1x="1.0" cp1y="21.0" cp2x="1.0" cp2y="21.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.8529411764705883" y="21.11764705882353" cp1x="0.8529411764705883" cp1y="21.11764705882353" cp2x="0.8529411764705883" cp2y="21.11764705882353"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.0" cp2y="2.0"/>
+                                    <point x="18.0" y="7.0" cp1x="18.0" cp1y="4.0" cp2x="18.0" cp2y="7.0"/>
+                                    <point x="18.0" y="17.0" cp1x="18.0" cp1y="17.0" cp2x="18.0" cp2y="20.0"/>
+                                    <point x="13.0" y="22.0" cp1x="16.0" cp1y="22.0" cp2x="13.0" cp2y="22.0"/>
+                                    <point x="0.0" y="22.0" cp1x="0.0" cp1y="22.0" cp2x="0.0" cp2y="22.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-191"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="16.0" cp1x="0.0" cp1y="16.0" cp2x="0.0" cp2y="16.0"/>
+                                    <point x="18.0" y="16.0" cp1x="18.0" cp1y="16.0" cp2x="18.0" cp2y="16.0"/>
+                                    <point x="18.0" y="18.0" cp1x="18.0" cp1y="18.0" cp2x="18.0" cp2y="22.0"/>
+                                    <point x="13.0" y="23.0" cp1x="16.0" cp1y="23.0" cp2x="13.0" cp2y="23.0"/>
+                                    <point x="0.0" y="23.0" cp1x="0.0" cp1y="23.0" cp2x="0.0" cp2y="23.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113c77f1a58.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Editable">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="24"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="8" bottom="8" left="1" right="8"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.2754491">
+                                       <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.44652405" midpoint="0.5">
+                                       <matte red="63" green="107" blue="147" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.064285696" brightnessOffset="0.027450979" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64171124" midpoint="0.5">
+                                       <matte red="53" green="100" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="89" green="135" blue="177" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.13853917" brightnessOffset="0.14509803" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="12.0" y="3.0" cp1x="12.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
+                                    <point x="17.0" y="8.0" cp1x="17.0" cp1y="4.0" cp2x="17.0" cp2y="8.0"/>
+                                    <point x="17.0" y="16.0" cp1x="17.0" cp1y="16.0" cp2x="17.0" cp2y="20.0"/>
+                                    <point x="12.0" y="21.0" cp1x="16.0" cp1y="21.0" cp2x="12.0" cp2y="21.0"/>
+                                    <point x="1.0" y="21.0" cp1x="1.0" cp1y="21.0" cp2x="1.0" cp2y="21.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.8529411764705883" y="21.11764705882353" cp1x="0.8529411764705883" cp1y="21.11764705882353" cp2x="0.8529411764705883" cp2y="21.11764705882353"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.0" cp2y="2.0"/>
+                                    <point x="18.0" y="7.0" cp1x="18.0" cp1y="4.0" cp2x="18.0" cp2y="7.0"/>
+                                    <point x="18.0" y="17.0" cp1x="18.0" cp1y="17.0" cp2x="18.0" cp2y="20.0"/>
+                                    <point x="13.0" y="22.0" cp1x="16.0" cp1y="22.0" cp2x="13.0" cp2y="22.0"/>
+                                    <point x="0.0" y="22.0" cp1x="0.0" cp1y="22.0" cp2x="0.0" cp2y="22.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-191"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="16.0" cp1x="0.0" cp1y="16.0" cp2x="0.0" cp2y="16.0"/>
+                                    <point x="18.0" y="16.0" cp1x="18.0" cp1y="16.0" cp2x="18.0" cp2y="16.0"/>
+                                    <point x="18.0" y="18.0" cp1x="18.0" cp1y="18.0" cp2x="18.0" cp2y="22.0"/>
+                                    <point x="13.0" y="23.0" cp1x="16.0" cp1y="23.0" cp2x="13.0" cp2y="23.0"/>
+                                    <point x="0.0" y="23.0" cp1x="0.0" cp1y="23.0" cp2x="0.0" cp2y="23.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114d8d17d13.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+Editable">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="24"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="8" bottom="8" left="1" right="8"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.2754491">
+                                       <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.44652405" midpoint="0.5">
+                                       <matte red="63" green="107" blue="147" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.064285696" brightnessOffset="0.027450979" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64171124" midpoint="0.5">
+                                       <matte red="53" green="100" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="89" green="135" blue="177" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.13853917" brightnessOffset="0.14509803" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="12.0" y="3.0" cp1x="12.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
+                                    <point x="17.0" y="8.0" cp1x="17.0" cp1y="4.0" cp2x="17.0" cp2y="8.0"/>
+                                    <point x="17.0" y="16.0" cp1x="17.0" cp1y="16.0" cp2x="17.0" cp2y="20.0"/>
+                                    <point x="12.0" y="21.0" cp1x="16.0" cp1y="21.0" cp2x="12.0" cp2y="21.0"/>
+                                    <point x="1.0" y="21.0" cp1x="1.0" cp1y="21.0" cp2x="1.0" cp2y="21.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.8529411764705883" y="21.11764705882353" cp1x="0.8529411764705883" cp1y="21.11764705882353" cp2x="0.8529411764705883" cp2y="21.11764705882353"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.0" cp2y="2.0"/>
+                                    <point x="18.0" y="7.0" cp1x="18.0" cp1y="4.0" cp2x="18.0" cp2y="7.0"/>
+                                    <point x="18.0" y="17.0" cp1x="18.0" cp1y="17.0" cp2x="18.0" cp2y="20.0"/>
+                                    <point x="13.0" y="22.0" cp1x="16.0" cp1y="22.0" cp2x="13.0" cp2y="22.0"/>
+                                    <point x="0.0" y="22.0" cp1x="0.0" cp1y="22.0" cp2x="0.0" cp2y="22.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-191"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="16.0" cp1x="0.0" cp1y="16.0" cp2x="0.0" cp2y="16.0"/>
+                                    <point x="18.0" y="16.0" cp1x="18.0" cp1y="16.0" cp2x="18.0" cp2y="16.0"/>
+                                    <point x="18.0" y="18.0" cp1x="18.0" cp1y="18.0" cp2x="18.0" cp2y="22.0"/>
+                                    <point x="13.0" y="23.0" cp1x="16.0" cp1y="23.0" cp2x="13.0" cp2y="23.0"/>
+                                    <point x="0.0" y="23.0" cp1x="0.0" cp1y="23.0" cp2x="0.0" cp2y="23.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113c7808b08.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates>
+                  <state stateKeys="Enabled" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="24" height="19"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="6" bottom="6" left="9" right="10"/>
+                        <layer name="Arrow">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="45" green="45" blue="45" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.37254906" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="6" green="6" blue="6" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.5254902" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="1.0" y1="0.5" x2="0.0" y2="0.5"/>
+                                 <points>
+                                    <point x="8.996323529411764" y="8.531250000000004" cp1x="8.996323529411764" cp1y="8.531250000000004" cp2x="8.996323529411764" cp2y="8.531250000000004"/>
+                                    <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                    <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114d842ecfd.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="24" height="19"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="6" bottom="6" left="9" right="10"/>
+                        <layer name="Arrow">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="45" green="45" blue="45" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.37254906" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="6" green="6" blue="6" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.5254902" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="1.0" y1="0.5" x2="0.0" y2="0.5"/>
+                                 <points>
+                                    <point x="9.03125" y="8.46875" cp1x="9.03125" cp1y="8.46875" cp2x="9.03125" cp2y="8.46875"/>
+                                    <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                    <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114d842ecfd.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Disabled" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="24" height="19"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="6" bottom="6" left="9" right="10"/>
+                        <layer name="Arrow">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="167" green="171" blue="178" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.57391655" brightnessOffset="0.1490196" alphaOffset="0"/>
+                                 <paintPoints x1="1.0" y1="0.5" x2="0.0" y2="0.5"/>
+                                 <points>
+                                    <point x="9.058823529411764" y="8.531250000000004" cp1x="9.058823529411764" cp1y="8.531250000000004" cp2x="9.058823529411764" cp2y="8.531250000000004"/>
+                                    <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                    <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114d85fec10.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="24" height="19"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="6" bottom="6" left="9" right="10"/>
+                        <layer name="Arrow">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                 <paintPoints x1="1.0" y1="0.5" x2="0.0" y2="0.5"/>
+                                 <points>
+                                    <point x="9.121323529411764" y="8.468750000000004" cp1x="9.121323529411764" cp1y="8.468750000000004" cp2x="9.121323529411764" cp2y="8.468750000000004"/>
+                                    <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                    <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114d861c1b2.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="24" height="19"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="6" bottom="6" left="9" right="10"/>
+                        <layer name="Arrow">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                 <paintPoints x1="1.0" y1="0.5" x2="0.0" y2="0.5"/>
+                                 <points>
+                                    <point x="9.058823529411764" y="8.531250000000004" cp1x="9.058823529411764" cp1y="8.531250000000004" cp2x="9.058823529411764" cp2y="8.531250000000004"/>
+                                    <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                    <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114d861c1b2.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </foregroundStates>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+            <uiComponent opaque="true" componentName="ComboBox.listRenderer" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="2" bottom="2" left="4" right="4"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background>
+                     <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </background>
+                  <inherit-background>false</inherit-background>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NO_CACHING</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground>
+                           <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background>
+                           <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </background>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <inherit-background>false</inherit-background>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+            <uiComponent opaque="false" componentName="ComboBox.renderer" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="2" bottom="2" left="4" right="4"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NO_CACHING</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground>
+                           <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background>
+                           <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </background>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <inherit-background>false</inherit-background>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" componentName="ComboBox.scrollPane" type="javax.swing.JScrollPane" name="ScrollPane" ui="ScrollPaneUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JFileChooser" name="FileChooser" ui="FileChooserUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="10" bottom="10" left="10" right="10"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties>
+               <uiProperty name="usesSingleFilePane" type="BOOLEAN" value="true"/>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                           <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="control" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiIconRegion name="fileIcon" subregion="true" key="fileIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="16" height="16"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="128" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-127"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="10.0" y="2.0" cp1x="10.0" cp1y="2.0" cp2x="10.0" cp2y="2.0"/>
+                                    <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
+                                    <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
+                                    <point x="2.0" y="15.0" cp1x="2.0" cp1y="15.0" cp2x="2.0" cp2y="15.0"/>
+                                    <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
+                                    <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                    <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
+                                    <point x="13.0" y="14.0" cp1x="13.0" cp1y="14.0" cp2x="13.0" cp2y="14.0"/>
+                                    <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
+                                    <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="138" green="157" blue="176" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.4198052" brightnessOffset="0.14117646" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
+                                    <point x="8.74074074074074" y="1.0" cp1x="8.74074074074074" cp1y="1.0" cp2x="8.74074074074074" cp2y="1.0"/>
+                                    <point x="8.777777777777777" y="6.222222222222219" cp1x="8.777777777777777" cp1y="6.222222222222219" cp2x="8.777777777777777" cp2y="6.222222222222219"/>
+                                    <point x="14.0" y="6.2037037037037" cp1x="14.0" cp1y="6.2037037037037" cp2x="14.0" cp2y="6.2037037037037"/>
+                                    <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                    <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="238" green="242" blue="247" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.013940871" saturationOffset="-0.599277" brightnessOffset="0.41960782" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
+                                    <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
+                                    <point x="2.0" y="15.0" cp1x="2.0" cp1y="15.0" cp2x="2.0" cp2y="15.0"/>
+                                    <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
+                                    <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                    <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="236" green="245" blue="253" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.032679737" saturationOffset="-0.043332636" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.04629629629629636" y1="0.9675925925925929" x2="0.48611111111111094" y2="0.5324074074074074"/>
+                                 <points>
+                                    <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
+                                    <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
+                                    <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                 </points>
+                              </path>
+                              <rectangle x1="2.0" x2="14.0" y1="15.0" y2="16.0" rounding="0.0">
+                                 <matte red="97" green="98" blue="102" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <matte red="149" green="151" blue="156" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.065654516" brightnessOffset="-0.13333333" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
+                                    <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
+                                    <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
+                                    <point x="10.518518518518523" y="0.9999999999999999" cp1x="10.518518518518523" cp1y="0.9999999999999999" cp2x="10.518518518518523" cp2y="0.9999999999999999"/>
+                                    <point x="14.000000000000002" y="4.5" cp1x="14.000000000000002" cp1y="4.5" cp2x="14.000000000000002" cp2y="4.5"/>
+                                    <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
+                                    <point x="15.0" y="16.0" cp1x="15.0" cp1y="16.0" cp2x="15.0" cp2y="16.0"/>
+                                    <point x="15.0" y="4.444444444444441" cp1x="15.0" cp1y="4.444444444444441" cp2x="15.0" cp2y="4.444444444444441"/>
+                                    <point x="10.722222222222225" y="0.0" cp1x="10.722222222222225" cp1y="0.0" cp2x="10.722222222222225" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="directoryIcon" subregion="true" key="directoryIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="16" height="16"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="12.0" y="12.0" cp1x="12.0" cp1y="12.0" cp2x="12.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="100" green="122" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0027436614" saturationOffset="-0.335015" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.25449103" midpoint="0.5">
+                                       <matte red="111" green="130" blue="148" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0024294257" saturationOffset="-0.3857143" brightnessOffset="0.031372547" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="76" green="91" blue="105" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0018081069" saturationOffset="-0.3595238" brightnessOffset="-0.13725492" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
+                                    <point x="13.0" y="4.0" cp1x="13.0" cp1y="4.0" cp2x="13.0" cp2y="4.0"/>
+                                    <point x="3.7407407407407405" y="3.9999999999999996" cp1x="3.7407407407407405" cp1y="3.9999999999999996" cp2x="3.7407407407407405" cp2y="3.9999999999999996"/>
+                                    <point x="2.0185185185185137" y="10.05555555555555" cp1x="2.0185185185185137" cp1y="10.05555555555555" cp2x="2.0185185185185137" cp2y="10.05555555555555"/>
+                                    <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
+                                    <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
+                                    <point x="2.9629629629629632" y="12.129629629629632" cp1x="2.9629629629629632" cp1y="12.129629629629632" cp2x="2.9629629629629632" cp2y="12.129629629629632"/>
+                                    <point x="4.579999999999991" y="4.98" cp1x="4.579999999999991" cp1y="4.98" cp2x="4.579999999999991" cp2y="4.98"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="72" green="97" blue="120" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0012094378" saturationOffset="-0.23571429" brightnessOffset="-0.0784314" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="35" green="55" blue="73" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.115166366" brightnessOffset="-0.2627451" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="16.0" y="4.0" cp1x="16.0" cp1y="4.0" cp2x="16.0" cp2y="4.0"/>
+                                    <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
+                                    <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
+                                    <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
+                                    <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                                    <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
+                                    <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
+                                    <point x="2.9444444444444438" y="1.0185185185185186" cp1x="2.9444444444444438" cp1y="1.0185185185185186" cp2x="2.9444444444444438" cp2y="1.0185185185185186"/>
+                                    <point x="2.9814814814814814" y="1.7407407407407403" cp1x="2.9814814814814814" cp1y="1.7407407407407403" cp2x="2.9814814814814814" cp2y="1.7407407407407403"/>
+                                    <point x="1.7407407407407407" y="3.0" cp1x="1.7407407407407407" cp1y="3.0" cp2x="1.7407407407407407" cp2y="3.0"/>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
+                                    <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
+                                    <point x="14.0" y="7.0" cp1x="14.0" cp1y="7.0" cp2x="14.0" cp2y="7.0"/>
+                                    <point x="14.87037037037037" y="5.962962962962965" cp1x="14.87037037037037" cp1y="5.962962962962965" cp2x="14.87037037037037" cp2y="5.962962962962965"/>
+                                    <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
+                                    <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
+                                    <point x="15.462962962962967" y="6.129629629629629" cp1x="15.462962962962967" cp1y="6.129629629629629" cp2x="15.462962962962967" cp2y="6.129629629629629"/>
+                                    <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                    <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
+                                    <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
+                                    <point x="1.0" y="15.0" cp1x="1.0" cp1y="15.0" cp2x="1.0" cp2y="15.0"/>
+                                    <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
+                                    <point x="0.0" y="3.25925925925926" cp1x="0.0" cp1y="3.25925925925926" cp2x="0.0" cp2y="3.25925925925926"/>
+                                    <point x="3.1851851851851856" y="0.0" cp1x="3.1851851851851856" cp1y="0.0" cp2x="3.1851851851851856" cp2y="0.0"/>
+                                    <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
+                                    <point x="8.55555555555555" y="2.0000000000000004" cp1x="8.55555555555555" cp1y="2.0000000000000004" cp2x="8.55555555555555" cp2y="2.0000000000000004"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="13.0" cp2y="2.0"/>
+                                    <point x="14.0" y="3.0" cp1x="14.0" cp1y="3.0" cp2x="14.0" cp2y="3.0"/>
+                                    <point x="14.0" y="4.0" cp1x="14.0" cp1y="4.0" cp2x="14.0" cp2y="4.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 3">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="8.0" x2="13.0" y1="3.0" y2="4.0" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="155" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-100"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="3.0" x2="7.0" y1="1.0" y2="2.0" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="205" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-50"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="1.0" x2="2.0" y1="3.0" y2="4.0" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="130" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-125"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
+                                    <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
+                                    <point x="2.041666666666667" y="10.187499999999998" cp1x="2.041666666666667" cp1y="10.187499999999998" cp2x="2.041666666666667" cp2y="10.187499999999998"/>
+                                    <point x="3.979166666666668" y="4.0" cp1x="3.979166666666668" cp1y="4.0" cp2x="3.979166666666668" cp2y="4.0"/>
+                                    <point x="13.0" y="4.0" cp1x="13.0" cp1y="4.0" cp2x="13.0" cp2y="4.0"/>
+                                    <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
+                                    <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                                    <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
+                                    <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
+                                    <point x="3.0" y="1.0" cp1x="3.0" cp1y="1.0" cp2x="3.0" cp2y="1.0"/>
+                                    <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
+                                    <point x="2.0" y="3.0" cp1x="2.0" cp1y="3.0" cp2x="2.0" cp2y="3.0"/>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.04191617" midpoint="0.5">
+                                       <matte red="178" green="198" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.45978838" brightnessOffset="0.2980392" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.16467066" midpoint="0.5">
+                                       <matte red="134" green="162" blue="188" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.34848025" brightnessOffset="0.18823528" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.3263473" midpoint="0.5">
+                                       <matte red="111" green="139" blue="165" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.30844158" brightnessOffset="0.09803921" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="95" green="123" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.27329817" brightnessOffset="0.035294116" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
+                                    <point x="3.0185185185185186" y="10.055555555555559" cp1x="3.0185185185185186" cp1y="10.055555555555559" cp2x="3.0185185185185186" cp2y="10.055555555555559"/>
+                                    <point x="4.0" y="5.0" cp1x="4.0" cp1y="5.0" cp2x="4.0" cp2y="5.0"/>
+                                    <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
+                                    <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                    <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="121" green="126" blue="136" alpha="156" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.21" alphaOffset="-99"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="13.0" cp1x="0.0" cp1y="13.0" cp2x="0.0" cp2y="13.0"/>
+                                    <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
+                                    <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
+                                    <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
+                                    <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
+                                    <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="upFolderIcon" subregion="true" key="upFolderIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="16" height="16"/>
+                        <nextLayerNameIndex>12</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Icon">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="154" green="211" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.006044388" saturationOffset="-0.23963585" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="85" green="175" blue="244" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0063245893" saturationOffset="0.01592505" brightnessOffset="0.4078431" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="10.0" y="9.0" cp1x="10.0" cp1y="9.0" cp2x="10.0" cp2y="9.0"/>
+                                    <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
+                                    <point x="7.3478260869565215" y="5.0" cp1x="7.3478260869565215" cp1y="5.0" cp2x="7.3478260869565215" cp2y="5.0"/>
+                                    <point x="10.978260869565217" y="1.2826086956521732" cp1x="10.978260869565217" cp1y="1.2826086956521732" cp2x="10.978260869565217" cp2y="1.2826086956521732"/>
+                                    <point x="14.304347826086948" y="4.999999999999999" cp1x="14.304347826086948" cp1y="4.999999999999999" cp2x="14.304347826086948" cp2y="4.999999999999999"/>
+                                    <point x="12.0" y="5.0" cp1x="12.0" cp1y="5.0" cp2x="12.0" cp2y="5.0"/>
+                                    <point x="12.0" y="9.0" cp1x="12.0" cp1y="9.0" cp2x="12.0" cp2y="9.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="6.630434782608702" y="4.978260869565218" cp1x="6.630434782608702" cp1y="4.978260869565218" cp2x="6.630434782608702" cp2y="4.978260869565218"/>
+                                    <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
+                                    <point x="10.0" y="9.0" cp1x="10.0" cp1y="9.0" cp2x="10.0" cp2y="9.0"/>
+                                    <point x="12.0" y="9.0" cp1x="12.0" cp1y="9.0" cp2x="12.0" cp2y="9.0"/>
+                                    <point x="12.0" y="5.0" cp1x="12.0" cp1y="5.0" cp2x="12.0" cp2y="5.0"/>
+                                    <point x="15.326086956521742" y="5.0" cp1x="15.326086956521742" cp1y="5.0" cp2x="15.326086956521742" cp2y="5.0"/>
+                                    <point x="11.0" y="0.6521739130434785" cp1x="11.0" cp1y="0.6521739130434785" cp2x="11.0" cp2y="0.6521739130434785"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="100" blue="177" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0061469674" saturationOffset="0.3642857" brightnessOffset="0.14509803" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="58" blue="117" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0053939223" saturationOffset="0.3642857" brightnessOffset="-0.0901961" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
+                                    <point x="6.0" y="4.565217391304342" cp1x="6.0" cp1y="4.565217391304342" cp2x="6.0" cp2y="4.565217391304342"/>
+                                    <point x="10.673913043478265" y="0.0" cp1x="10.673913043478265" cp1y="0.0" cp2x="10.673913043478265" cp2y="0.0"/>
+                                    <point x="11.304347826086955" y="-8.326672684688674E-17" cp1x="11.304347826086955" cp1y="-8.326672684688674E-17" cp2x="11.304347826086955" cp2y="-8.326672684688674E-17"/>
+                                    <point x="15.978260869565217" y="4.565217391304343" cp1x="15.978260869565217" cp1y="4.565217391304343" cp2x="15.978260869565217" cp2y="4.565217391304343"/>
+                                    <point x="16.0" y="6.0" cp1x="16.0" cp1y="6.0" cp2x="16.0" cp2y="6.0"/>
+                                    <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
+                                    <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
+                                    <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
+                                    <point x="10.0" y="10.0" cp1x="10.0" cp1y="10.0" cp2x="10.0" cp2y="10.0"/>
+                                    <point x="9.0" y="9.0" cp1x="9.0" cp1y="9.0" cp2x="9.0" cp2y="9.0"/>
+                                    <point x="9.0" y="6.0" cp1x="9.0" cp1y="6.0" cp2x="9.0" cp2y="6.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="120" green="125" blue="135" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="5.847961E-4" brightnessOffset="-0.21568626" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="6.021739130434783" y="6.521739130434782" cp1x="6.021739130434783" cp1y="6.521739130434782" cp2x="6.021739130434783" cp2y="6.521739130434782"/>
+                                    <point x="6.0" y="5.369565217391304" cp1x="6.0" cp1y="5.369565217391304" cp2x="6.0" cp2y="5.369565217391304"/>
+                                    <point x="16.0" y="5.58695652173913" cp1x="16.0" cp1y="5.58695652173913" cp2x="16.0" cp2y="5.58695652173913"/>
+                                    <point x="14.891304347826086" y="6.499999999999999" cp1x="14.891304347826086" cp1y="6.499999999999999" cp2x="14.891304347826086" cp2y="6.499999999999999"/>
+                                    <point x="12.956521739130434" y="6.91304347826087" cp1x="12.956521739130434" cp1y="6.91304347826087" cp2x="12.956521739130434" cp2y="6.91304347826087"/>
+                                    <point x="12.91304347826087" y="9.34782608695652" cp1x="12.91304347826087" cp1y="9.34782608695652" cp2x="12.91304347826087" cp2y="9.34782608695652"/>
+                                    <point x="11.869565217391303" y="10.608695652173914" cp1x="11.869565217391303" cp1y="10.608695652173914" cp2x="11.869565217391303" cp2y="10.608695652173914"/>
+                                    <point x="10.217391304347826" y="10.543478260869566" cp1x="10.217391304347826" cp1y="10.543478260869566" cp2x="10.217391304347826" cp2y="10.543478260869566"/>
+                                    <point x="9.26086956521739" y="9.34782608695652" cp1x="9.26086956521739" cp1y="9.34782608695652" cp2x="9.26086956521739" cp2y="9.34782608695652"/>
+                                    <point x="9.26086956521739" y="6.869565217391304" cp1x="9.26086956521739" cp1y="6.869565217391304" cp2x="9.26086956521739" cp2y="6.869565217391304"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="178" green="198" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.45978838" brightnessOffset="0.2980392" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.13068181" midpoint="0.5">
+                                       <matte red="134" green="162" blue="188" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.34848025" brightnessOffset="0.18823528" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.48863637" midpoint="0.5">
+                                       <matte red="98" green="126" blue="152" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.28045115" brightnessOffset="0.04705882" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="95" green="123" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.27329817" brightnessOffset="0.035294116" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="3.0" y="15.0" cp1x="3.0" cp1y="15.0" cp2x="3.0" cp2y="15.0"/>
+                                    <point x="3.0" y="11.0" cp1x="3.0" cp1y="11.0" cp2x="3.0" cp2y="11.0"/>
+                                    <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                    <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                    <point x="14.0" y="11.0" cp1x="14.0" cp1y="11.0" cp2x="14.0" cp2y="11.0"/>
+                                    <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="87" green="112" blue="135" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0012094378" saturationOffset="-0.28015873" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="30" green="50" blue="69" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.00254488" saturationOffset="-0.07049692" brightnessOffset="-0.2784314" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="2.0" y="11.0" cp1x="2.0" cp1y="11.0" cp2x="2.0" cp2y="11.0"/>
+                                    <point x="3.0" y="6.0" cp1x="3.0" cp1y="6.0" cp2x="3.0" cp2y="6.0"/>
+                                    <point x="4.0" y="5.0" cp1x="4.0" cp1y="5.0" cp2x="4.0" cp2y="5.0"/>
+                                    <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
+                                    <point x="15.0" y="15.0" cp1x="15.0" cp1y="15.0" cp2x="15.0" cp2y="15.0"/>
+                                    <point x="13.0" y="16.0" cp1x="13.0" cp1y="16.0" cp2x="13.0" cp2y="16.0"/>
+                                    <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="244" green="247" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6117143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.09659091" midpoint="0.5">
+                                       <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="15.0" cp1x="1.0" cp1y="15.0" cp2x="1.0" cp2y="15.0"/>
+                                    <point x="1.0" y="4.0" cp1x="1.0" cp1y="4.0" cp2x="1.0" cp2y="4.0"/>
+                                    <point x="2.0" y="4.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="4.0"/>
+                                    <point x="3.0" y="3.0" cp1x="3.0" cp1y="3.0" cp2x="3.0" cp2y="3.0"/>
+                                    <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
+                                    <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
+                                    <point x="7.0" y="3.0" cp1x="7.0" cp1y="3.0" cp2x="7.0" cp2y="3.0"/>
+                                    <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                                    <point x="8.0" y="15.0" cp1x="8.0" cp1y="15.0" cp2x="8.0" cp2y="15.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="122" green="136" blue="150" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.44904763" brightnessOffset="0.039215684" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.1278409" midpoint="0.5">
+                                       <matte red="109" green="123" blue="136" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.43718487" brightnessOffset="-0.015686274" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.91477275" midpoint="0.5">
+                                       <matte red="59" green="69" blue="78" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.39212453" brightnessOffset="-0.24313727" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="15.0" cp1x="0.0" cp1y="15.0" cp2x="0.0" cp2y="15.0"/>
+                                    <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
+                                    <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
+                                    <point x="15.0" y="15.0" cp1x="15.0" cp1y="15.0" cp2x="15.0" cp2y="15.0"/>
+                                    <point x="15.0" y="10.0" cp1x="15.0" cp1y="10.0" cp2x="15.0" cp2y="10.0"/>
+                                    <point x="16.0" y="7.0" cp1x="16.0" cp1y="7.0" cp2x="16.0" cp2y="7.0"/>
+                                    <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
+                                    <point x="8.0" y="5.0" cp1x="8.0" cp1y="5.0" cp2x="8.0" cp2y="5.0"/>
+                                    <point x="8.0" y="2.0" cp1x="8.0" cp1y="2.0" cp2x="8.0" cp2y="2.0"/>
+                                    <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
+                                    <point x="3.0" y="1.0" cp1x="3.0" cp1y="1.0" cp2x="3.0" cp2y="1.0"/>
+                                    <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
+                                    <point x="2.0" y="3.0" cp1x="2.0" cp1y="3.0" cp2x="2.0" cp2y="3.0"/>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="0.0" y="4.0" cp1x="0.0" cp1y="4.0" cp2x="0.0" cp2y="4.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="11498ffda35.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="newFolderIcon" subregion="true" key="newFolderIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="16" height="16"/>
+                        <nextLayerNameIndex>5</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 4">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <radialGradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.11290322" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.23548387" midpoint="0.5">
+                                       <matte red="252" green="255" blue="92" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.38709676" midpoint="0.5">
+                                       <matte red="252" green="255" blue="92" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.57096773" midpoint="0.5">
+                                       <matte red="253" green="191" blue="4" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </radialGradient>
+                                 <paintPoints x1="0.5" y1="1.0" x2="0.4491017940819012" y2="0.46327683734537634"/>
+                                 <points>
+                                    <point x="2.9230769230769225" y="3.307692307692308" cp1x="2.9230769230769225" cp1y="3.307692307692308" cp2x="2.9230769230769225" cp2y="3.307692307692308"/>
+                                    <point x="3.4423076923076916" y="2.8461538461538463" cp1x="3.4423076923076916" cp1y="2.8461538461538463" cp2x="3.4423076923076916" cp2y="2.8461538461538463"/>
+                                    <point x="4.9423076923076925" y="4.038461538461538" cp1x="4.9423076923076925" cp1y="4.038461538461538" cp2x="4.9423076923076925" cp2y="4.038461538461538"/>
+                                    <point x="5.211538461538462" y="2.153846153846154" cp1x="5.211538461538462" cp1y="2.153846153846154" cp2x="5.211538461538462" cp2y="2.153846153846154"/>
+                                    <point x="5.76923076923077" y="2.1923076923076925" cp1x="5.76923076923077" cp1y="2.1923076923076925" cp2x="5.76923076923077" cp2y="2.1923076923076925"/>
+                                    <point x="6.134615384615385" y="4.038461538461538" cp1x="6.134615384615385" cp1y="4.038461538461538" cp2x="6.134615384615385" cp2y="4.038461538461538"/>
+                                    <point x="7.403846153846154" y="2.9807692307692313" cp1x="7.403846153846154" cp1y="2.9807692307692313" cp2x="7.403846153846154" cp2y="2.9807692307692313"/>
+                                    <point x="7.980769230769231" y="3.5192307692307696" cp1x="7.980769230769231" cp1y="3.5192307692307696" cp2x="7.980769230769231" cp2y="3.5192307692307696"/>
+                                    <point x="6.903846153846154" y="4.6923076923076925" cp1x="6.903846153846154" cp1y="4.6923076923076925" cp2x="6.903846153846154" cp2y="4.6923076923076925"/>
+                                    <point x="8.750000000000007" y="5.153846153846154" cp1x="8.750000000000007" cp1y="5.153846153846154" cp2x="8.750000000000007" cp2y="5.153846153846154"/>
+                                    <point x="8.769230769230775" y="5.8076923076923075" cp1x="8.769230769230775" cp1y="5.8076923076923075" cp2x="8.769230769230775" cp2y="5.8076923076923075"/>
+                                    <point x="6.538461538461539" y="6.057692307692308" cp1x="6.538461538461539" cp1y="6.057692307692308" cp2x="6.538461538461539" cp2y="6.057692307692308"/>
+                                    <point x="7.826923076923079" y="7.346153846153846" cp1x="7.826923076923079" cp1y="7.346153846153846" cp2x="7.826923076923079" cp2y="7.346153846153846"/>
+                                    <point x="7.442307692307692" y="7.884615384615384" cp1x="7.442307692307692" cp1y="7.884615384615384" cp2x="7.442307692307692" cp2y="7.884615384615384"/>
+                                    <point x="6.115384615384617" y="6.634615384615385" cp1x="6.115384615384617" cp1y="6.634615384615385" cp2x="6.115384615384617" cp2y="6.634615384615385"/>
+                                    <point x="5.884615384615385" y="8.961538461538462" cp1x="5.884615384615385" cp1y="8.961538461538462" cp2x="5.884615384615385" cp2y="8.961538461538462"/>
+                                    <point x="5.25" y="8.961538461538462" cp1x="5.25" cp1y="8.961538461538462" cp2x="5.25" cp2y="8.961538461538462"/>
+                                    <point x="4.884615384615385" y="6.730769230769231" cp1x="4.884615384615385" cp1y="6.730769230769231" cp2x="4.884615384615385" cp2y="6.730769230769231"/>
+                                    <point x="3.461538461538461" y="8.0" cp1x="3.461538461538461" cp1y="8.0" cp2x="3.461538461538461" cp2y="8.0"/>
+                                    <point x="3.211538461538461" y="7.269230769230769" cp1x="3.211538461538461" cp1y="7.269230769230769" cp2x="3.211538461538461" cp2y="7.269230769230769"/>
+                                    <point x="4.153846153846153" y="6.0576923076923075" cp1x="4.153846153846153" cp1y="6.0576923076923075" cp2x="4.153846153846153" cp2y="6.0576923076923075"/>
+                                    <point x="2.3461538461538454" y="5.884615384615385" cp1x="2.3461538461538454" cp1y="5.884615384615385" cp2x="2.3461538461538454" cp2y="5.884615384615385"/>
+                                    <point x="2.4038461538461533" y="5.038461538461538" cp1x="2.4038461538461533" cp1y="5.038461538461538" cp2x="2.4038461538461533" cp2y="5.038461538461538"/>
+                                    <point x="4.115384615384615" y="4.923076923076923" cp1x="4.115384615384615" cp1y="4.923076923076923" cp2x="4.115384615384615" cp2y="4.923076923076923"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="85" blue="10" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.032758567" saturationOffset="-0.018273294" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="1.1730769230769234" y="1.653846153846154" cp1x="1.1730769230769234" cp1y="1.653846153846154" cp2x="1.1730769230769234" cp2y="1.653846153846154"/>
+                                    <point x="1.6346153846153852" y="1.0769230769230773" cp1x="1.6346153846153852" cp1y="1.0769230769230773" cp2x="1.6346153846153852" cp2y="1.0769230769230773"/>
+                                    <point x="4.826923076923077" y="3.7307692307692313" cp1x="4.826923076923077" cp1y="3.7307692307692313" cp2x="4.826923076923077" cp2y="3.7307692307692313"/>
+                                    <point x="5.096153846153847" y="0.09615384615384615" cp1x="5.096153846153847" cp1y="0.09615384615384615" cp2x="5.096153846153847" cp2y="0.09615384615384615"/>
+                                    <point x="5.903846153846154" y="0.09615384615384615" cp1x="5.903846153846154" cp1y="0.09615384615384615" cp2x="5.903846153846154" cp2y="0.09615384615384615"/>
+                                    <point x="6.365384615384615" y="3.6153846153846154" cp1x="6.365384615384615" cp1y="3.6153846153846154" cp2x="6.365384615384615" cp2y="3.6153846153846154"/>
+                                    <point x="9.192307692307693" y="1.0384615384615385" cp1x="9.192307692307693" cp1y="1.0384615384615385" cp2x="9.192307692307693" cp2y="1.0384615384615385"/>
+                                    <point x="9.942307692307693" y="1.8846153846153846" cp1x="9.942307692307693" cp1y="1.8846153846153846" cp2x="9.942307692307693" cp2y="1.8846153846153846"/>
+                                    <point x="7.326923076923077" y="4.711538461538463" cp1x="7.326923076923077" cp1y="4.711538461538463" cp2x="7.326923076923077" cp2y="4.711538461538463"/>
+                                    <point x="10.865384615384613" y="5.153846153846153" cp1x="10.865384615384613" cp1y="5.153846153846153" cp2x="10.865384615384613" cp2y="5.153846153846153"/>
+                                    <point x="10.903846153846155" y="5.884615384615384" cp1x="10.903846153846155" cp1y="5.884615384615384" cp2x="10.903846153846155" cp2y="5.884615384615384"/>
+                                    <point x="7.4423076923076925" y="6.25" cp1x="7.4423076923076925" cp1y="6.25" cp2x="7.4423076923076925" cp2y="6.25"/>
+                                    <point x="9.788461538461547" y="9.384615384615397" cp1x="9.788461538461547" cp1y="9.384615384615397" cp2x="9.788461538461547" cp2y="9.384615384615397"/>
+                                    <point x="9.519230769230782" y="9.961538461538474" cp1x="9.519230769230782" cp1y="9.961538461538474" cp2x="9.519230769230782" cp2y="9.961538461538474"/>
+                                    <point x="6.3269230769230775" y="7.019230769230769" cp1x="6.3269230769230775" cp1y="7.019230769230769" cp2x="6.3269230769230775" cp2y="7.019230769230769"/>
+                                    <point x="5.903846153846154" y="10.903846153846153" cp1x="5.903846153846154" cp1y="10.903846153846153" cp2x="5.903846153846154" cp2y="10.903846153846153"/>
+                                    <point x="5.173076923076923" y="10.865384615384615" cp1x="5.173076923076923" cp1y="10.865384615384615" cp2x="5.173076923076923" cp2y="10.865384615384615"/>
+                                    <point x="4.76923076923077" y="7.0576923076923075" cp1x="4.76923076923077" cp1y="7.0576923076923075" cp2x="4.76923076923077" cp2y="7.0576923076923075"/>
+                                    <point x="1.442307692307693" y="9.807692307692314" cp1x="1.442307692307693" cp1y="9.807692307692314" cp2x="1.442307692307693" cp2y="9.807692307692314"/>
+                                    <point x="1.0384615384615392" y="9.423076923076923" cp1x="1.0384615384615392" cp1y="9.423076923076923" cp2x="1.0384615384615392" cp2y="9.423076923076923"/>
+                                    <point x="3.75" y="6.038461538461538" cp1x="3.75" cp1y="6.038461538461538" cp2x="3.75" cp2y="6.038461538461538"/>
+                                    <point x="0.05769230769230782" y="5.980769230769231" cp1x="0.05769230769230782" cp1y="5.980769230769231" cp2x="0.05769230769230782" cp2y="5.980769230769231"/>
+                                    <point x="0.07692307692307698" y="5.134615384615384" cp1x="0.07692307692307698" cp1y="5.134615384615384" cp2x="0.07692307692307698" cp2y="5.134615384615384"/>
+                                    <point x="3.980769230769231" y="4.711538461538461" cp1x="3.980769230769231" cp1y="4.711538461538461" cp2x="3.980769230769231" cp2y="4.711538461538461"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="85" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-170"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="1.1346153846153861" y="0.30769230769230765" cp1x="1.1346153846153861" cp1y="0.30769230769230765" cp2x="1.1346153846153861" cp2y="0.30769230769230765"/>
+                                    <point x="3.769230769230771" y="1.8846153846153846" cp1x="3.769230769230771" cp1y="1.8846153846153846" cp2x="3.769230769230771" cp2y="1.8846153846153846"/>
+                                    <point x="4.596153846153848" y="0.09615384615384615" cp1x="4.596153846153848" cp1y="0.09615384615384615" cp2x="4.596153846153848" cp2y="0.09615384615384615"/>
+                                    <point x="6.519230769230771" y="2.0384615384615388" cp1x="6.519230769230771" cp1y="2.0384615384615388" cp2x="6.519230769230771" cp2y="2.0384615384615388"/>
+                                    <point x="9.269230769230756" y="0.6923076923076925" cp1x="9.269230769230756" cp1y="0.6923076923076925" cp2x="9.269230769230756" cp2y="0.6923076923076925"/>
+                                    <point x="9.15384615384614" y="4.25" cp1x="9.15384615384614" cp1y="4.25" cp2x="9.15384615384614" cp2y="4.25"/>
+                                    <point x="11.846153846153834" y="4.5576923076923075" cp1x="11.846153846153834" cp1y="4.5576923076923075" cp2x="11.846153846153834" cp2y="4.5576923076923075"/>
+                                    <point x="9.71153846153845" y="7.0" cp1x="9.71153846153845" cp1y="7.0" cp2x="9.71153846153845" cp2y="7.0"/>
+                                    <point x="10.499999999999988" y="10.807692307692308" cp1x="10.499999999999988" cp1y="10.807692307692308" cp2x="10.499999999999988" cp2y="10.807692307692308"/>
+                                    <point x="7.2115384615384635" y="9.980769230769232" cp1x="7.2115384615384635" cp1y="9.980769230769232" cp2x="7.2115384615384635" cp2y="9.980769230769232"/>
+                                    <point x="5.78846153846154" y="12.057692307692308" cp1x="5.78846153846154" cp1y="12.057692307692308" cp2x="5.78846153846154" cp2y="12.057692307692308"/>
+                                    <point x="3.153846153846155" y="9.923076923076923" cp1x="3.153846153846155" cp1y="9.923076923076923" cp2x="3.153846153846155" cp2y="9.923076923076923"/>
+                                    <point x="1.1346153846153861" y="10.557692307692308" cp1x="1.1346153846153861" cp1y="10.557692307692308" cp2x="1.1346153846153861" cp2y="10.557692307692308"/>
+                                    <point x="1.5576923076923088" y="7.923076923076923" cp1x="1.5576923076923088" cp1y="7.923076923076923" cp2x="1.5576923076923088" cp2y="7.923076923076923"/>
+                                    <point x="0.0" y="5.923076923076923" cp1x="0.0" cp1y="5.923076923076923" cp2x="0.0" cp2y="5.923076923076923"/>
+                                    <point x="1.9230769230769242" y="3.403846153846154" cp1x="1.9230769230769242" cp1y="3.403846153846154" cp2x="1.9230769230769242" cp2y="3.403846153846154"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="12.0" y="12.0" cp1x="12.0" cp1y="12.0" cp2x="12.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="100" green="122" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0027436614" saturationOffset="-0.335015" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.25449103" midpoint="0.5">
+                                       <matte red="111" green="130" blue="148" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0024294257" saturationOffset="-0.3857143" brightnessOffset="0.031372547" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="76" green="91" blue="105" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0018081069" saturationOffset="-0.3595238" brightnessOffset="-0.13725492" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
+                                    <point x="13.0" y="4.0" cp1x="13.0" cp1y="4.0" cp2x="13.0" cp2y="4.0"/>
+                                    <point x="3.7407407407407405" y="3.9999999999999996" cp1x="3.7407407407407405" cp1y="3.9999999999999996" cp2x="3.7407407407407405" cp2y="3.9999999999999996"/>
+                                    <point x="2.0185185185185137" y="10.05555555555555" cp1x="2.0185185185185137" cp1y="10.05555555555555" cp2x="2.0185185185185137" cp2y="10.05555555555555"/>
+                                    <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
+                                    <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
+                                    <point x="2.9629629629629632" y="12.129629629629632" cp1x="2.9629629629629632" cp1y="12.129629629629632" cp2x="2.9629629629629632" cp2y="12.129629629629632"/>
+                                    <point x="4.579999999999991" y="4.98" cp1x="4.579999999999991" cp1y="4.98" cp2x="4.579999999999991" cp2y="4.98"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="72" green="97" blue="120" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0012094378" saturationOffset="-0.23571429" brightnessOffset="-0.0784314" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="35" green="55" blue="73" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.115166366" brightnessOffset="-0.2627451" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="16.0" y="4.0" cp1x="16.0" cp1y="4.0" cp2x="16.0" cp2y="4.0"/>
+                                    <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
+                                    <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
+                                    <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
+                                    <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                                    <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
+                                    <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
+                                    <point x="2.9444444444444438" y="1.0185185185185186" cp1x="2.9444444444444438" cp1y="1.0185185185185186" cp2x="2.9444444444444438" cp2y="1.0185185185185186"/>
+                                    <point x="2.9814814814814814" y="1.7407407407407403" cp1x="2.9814814814814814" cp1y="1.7407407407407403" cp2x="2.9814814814814814" cp2y="1.7407407407407403"/>
+                                    <point x="1.7407407407407407" y="3.0" cp1x="1.7407407407407407" cp1y="3.0" cp2x="1.7407407407407407" cp2y="3.0"/>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
+                                    <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
+                                    <point x="14.0" y="7.0" cp1x="14.0" cp1y="7.0" cp2x="14.0" cp2y="7.0"/>
+                                    <point x="14.87037037037037" y="5.962962962962965" cp1x="14.87037037037037" cp1y="5.962962962962965" cp2x="14.87037037037037" cp2y="5.962962962962965"/>
+                                    <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
+                                    <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
+                                    <point x="15.462962962962967" y="6.129629629629629" cp1x="15.462962962962967" cp1y="6.129629629629629" cp2x="15.462962962962967" cp2y="6.129629629629629"/>
+                                    <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                    <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
+                                    <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
+                                    <point x="1.0" y="15.0" cp1x="1.0" cp1y="15.0" cp2x="1.0" cp2y="15.0"/>
+                                    <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
+                                    <point x="0.0" y="3.25925925925926" cp1x="0.0" cp1y="3.25925925925926" cp2x="0.0" cp2y="3.25925925925926"/>
+                                    <point x="3.1851851851851856" y="0.0" cp1x="3.1851851851851856" cp1y="0.0" cp2x="3.1851851851851856" cp2y="0.0"/>
+                                    <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
+                                    <point x="8.55555555555555" y="2.0000000000000004" cp1x="8.55555555555555" cp1y="2.0000000000000004" cp2x="8.55555555555555" cp2y="2.0000000000000004"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="13.0" cp2y="2.0"/>
+                                    <point x="14.0" y="3.0" cp1x="14.0" cp1y="3.0" cp2x="14.0" cp2y="3.0"/>
+                                    <point x="14.0" y="4.0" cp1x="14.0" cp1y="4.0" cp2x="14.0" cp2y="4.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 3">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="8.0" x2="13.0" y1="3.0" y2="4.0" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="155" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-100"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="3.0" x2="7.0" y1="1.0" y2="2.0" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="205" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-50"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="1.0" x2="2.0" y1="3.0" y2="4.0" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="130" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-125"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
+                                    <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
+                                    <point x="2.041666666666667" y="10.187499999999998" cp1x="2.041666666666667" cp1y="10.187499999999998" cp2x="2.041666666666667" cp2y="10.187499999999998"/>
+                                    <point x="3.979166666666668" y="4.0" cp1x="3.979166666666668" cp1y="4.0" cp2x="3.979166666666668" cp2y="4.0"/>
+                                    <point x="13.0" y="4.0" cp1x="13.0" cp1y="4.0" cp2x="13.0" cp2y="4.0"/>
+                                    <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
+                                    <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                                    <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
+                                    <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
+                                    <point x="3.0" y="1.0" cp1x="3.0" cp1y="1.0" cp2x="3.0" cp2y="1.0"/>
+                                    <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
+                                    <point x="2.0" y="3.0" cp1x="2.0" cp1y="3.0" cp2x="2.0" cp2y="3.0"/>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.04191617" midpoint="0.5">
+                                       <matte red="178" green="198" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.45978838" brightnessOffset="0.2980392" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.16467066" midpoint="0.5">
+                                       <matte red="134" green="162" blue="188" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.34848025" brightnessOffset="0.18823528" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.3263473" midpoint="0.5">
+                                       <matte red="111" green="139" blue="165" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.30844158" brightnessOffset="0.09803921" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="95" green="123" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.27329817" brightnessOffset="0.035294116" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
+                                    <point x="3.0185185185185186" y="10.055555555555559" cp1x="3.0185185185185186" cp1y="10.055555555555559" cp2x="3.0185185185185186" cp2y="10.055555555555559"/>
+                                    <point x="4.0" y="5.0" cp1x="4.0" cp1y="5.0" cp2x="4.0" cp2y="5.0"/>
+                                    <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
+                                    <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                    <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="121" green="126" blue="136" alpha="156" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.21" alphaOffset="-99"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="13.0" cp1x="0.0" cp1y="13.0" cp2x="0.0" cp2y="13.0"/>
+                                    <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
+                                    <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
+                                    <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
+                                    <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
+                                    <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140f3e73ba.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="computerIcon" subregion="true" key="computerIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="16" height="16"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="hardDriveIcon" subregion="true" key="hardDriveIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="16" height="16"/>
+                        <nextLayerNameIndex>6</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 5">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="8.0" x2="9.0" y1="12.0" y2="14.0" rounding="0.0">
+                                 <matte red="59" green="62" blue="66" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="6.0" x2="7.0" y1="12.0" y2="14.0" rounding="0.0">
+                                 <matte red="59" green="62" blue="66" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="4.0" x2="5.0" y1="12.0" y2="14.0" rounding="0.0">
+                                 <matte red="59" green="62" blue="66" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <ellipse x1="3.0" x2="4.0" y1="5.0" y2="6.0">
+                                 <matte red="152" green="155" blue="158" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="3.0" x2="4.0" y1="9.0" y2="10.0">
+                                 <matte red="152" green="155" blue="158" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="12.0" x2="13.0" y1="9.0" y2="10.0">
+                                 <matte red="152" green="155" blue="158" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="12.0" x2="13.0" y1="5.0" y2="6.0">
+                                 <matte red="170" green="172" blue="175" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="12.0" x2="13.0" y1="1.0" y2="2.0">
+                                 <matte red="191" green="193" blue="194" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="3.0" x2="4.0" y1="1.0" y2="2.0">
+                                 <matte red="191" green="193" blue="194" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 4">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="243" green="245" blue="246" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7967742" midpoint="0.5">
+                                       <matte red="208" green="212" blue="216" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="243" green="245" blue="246" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="5.0" y="2.0" cp1x="4.0" cp1y="3.0" cp2x="6.0" cp2y="1.0"/>
+                                    <point x="11.0" y="2.0" cp1x="10.0" cp1y="1.0" cp2x="12.0" cp2y="3.0"/>
+                                    <point x="12.0" y="5.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="6.0"/>
+                                    <point x="12.0" y="8.0" cp1x="12.0" cp1y="6.0" cp2x="12.0" cp2y="10.0"/>
+                                    <point x="9.0" y="10.0" cp1x="10.0" cp1y="10.0" cp2x="8.0" cp2y="10.0"/>
+                                    <point x="7.0" y="10.0" cp1x="8.0" cp1y="10.0" cp2x="6.0" cp2y="10.0"/>
+                                    <point x="4.0" y="8.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="6.0"/>
+                                    <point x="4.0" y="5.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="4.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects>
+                              <dropShadow blendingMode="NORMAL" opacity="0.4" angle="135" distance="0" spread="0" size="4">
+                                 <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </dropShadow>
+                              <innerShadow blendingMode="NORMAL" opacity="0.51" angle="291" distance="3" spread="0" size="2">
+                                 <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </innerShadow>
+                           </effects>
+                        </layer>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="4.0" y1="13.0" y2="14.0">
+                                 <matte red="144" green="255" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                              <rectangle x1="10.0" x2="13.0" y1="15.0" y2="16.0" rounding="0.0">
+                                 <matte red="56" green="51" blue="25" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="3.0" x2="9.0" y1="15.0" y2="16.0" rounding="0.0">
+                                 <matte red="56" green="51" blue="25" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="105" green="110" blue="118" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="63" green="67" blue="72" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="2.0" y="12.0" cp1x="2.0" cp1y="12.0" cp2x="2.0" cp2y="12.0"/>
+                                    <point x="2.0" y="15.0" cp1x="2.0" cp1y="15.0" cp2x="2.0" cp2y="15.0"/>
+                                    <point x="3.0" y="15.0" cp1x="3.0" cp1y="15.0" cp2x="3.0" cp2y="15.0"/>
+                                    <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
+                                    <point x="13.0" y="14.0" cp1x="13.0" cp1y="14.0" cp2x="13.0" cp2y="14.0"/>
+                                    <point x="13.0" y="15.0" cp1x="13.0" cp1y="15.0" cp2x="13.0" cp2y="15.0"/>
+                                    <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
+                                    <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                              <rectangle x1="2.0" x2="14.0" y1="1.0" y2="12.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="239" green="241" blue="243" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="197" green="201" blue="205" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="1.0" x2="15.0" y1="12.0" y2="16.0" rounding="0.0">
+                                 <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="1.0" x2="15.0" y1="0.0" y2="12.0" rounding="0.0">
+                                 <matte red="160" green="161" blue="163" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140f48945c.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="floppyDriveIcon" subregion="true" key="floppyDriveIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="16" height="16"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="13.0" x2="14.0" y1="13.0" y2="14.0" rounding="0.0">
+                                 <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="3.0" y1="13.0" y2="14.0" rounding="0.0">
+                                 <matte red="54" green="78" blue="122" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="12.884615384615381" x2="14.192307692307693" y1="12.903846153846153" y2="14.423076923076929" rounding="0.0">
+                                 <matte red="231" green="234" blue="237" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="1.807692307692308" x2="3.1730769230769234" y1="12.78846153846154" y2="14.403846153846157" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="4.0" x2="12.0" y1="14.0" y2="15.0" rounding="0.0">
+                                 <matte red="255" green="122" blue="101" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <matte red="149" green="153" blue="156" alpha="54" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="4.0" y="1.0" cp1x="4.0" cp1y="1.0" cp2x="4.0" cp2y="1.0"/>
+                                    <point x="5.0" y="1.0" cp1x="5.0" cp1y="1.0" cp2x="5.0" cp2y="1.0"/>
+                                    <point x="5.0" y="5.0" cp1x="5.0" cp1y="5.0" cp2x="5.0" cp2y="5.0"/>
+                                    <point x="7.0" y="5.0" cp1x="7.0" cp1y="5.0" cp2x="7.0" cp2y="5.0"/>
+                                    <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
+                                    <point x="8.0" y="1.0" cp1x="8.0" cp1y="1.0" cp2x="8.0" cp2y="1.0"/>
+                                    <point x="8.0" y="5.0" cp1x="8.0" cp1y="5.0" cp2x="8.0" cp2y="5.0"/>
+                                    <point x="9.0" y="5.0" cp1x="9.0" cp1y="5.0" cp2x="9.0" cp2y="5.0"/>
+                                    <point x="9.0" y="6.0" cp1x="9.0" cp1y="6.0" cp2x="9.0" cp2y="6.0"/>
+                                    <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="231" green="234" blue="237" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="231" green="234" blue="237" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="205" green="211" blue="215" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="6.0" y="1.0" cp1x="6.0" cp1y="1.0" cp2x="6.0" cp2y="1.0"/>
+                                    <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
+                                    <point x="12.0" y="6.0" cp1x="12.0" cp1y="6.0" cp2x="12.0" cp2y="6.0"/>
+                                    <point x="12.0" y="2.0" cp1x="12.0" cp1y="2.0" cp2x="12.0" cp2y="2.0"/>
+                                    <point x="11.0" y="2.0" cp1x="11.0" cp1y="2.0" cp2x="11.0" cp2y="2.0"/>
+                                    <point x="11.0" y="5.0" cp1x="11.0" cp1y="5.0" cp2x="11.0" cp2y="5.0"/>
+                                    <point x="9.0" y="5.0" cp1x="9.0" cp1y="5.0" cp2x="9.0" cp2y="5.0"/>
+                                    <point x="9.0" y="2.0" cp1x="9.0" cp1y="2.0" cp2x="9.0" cp2y="2.0"/>
+                                    <point x="12.0" y="2.0" cp1x="12.0" cp1y="2.0" cp2x="12.0" cp2y="2.0"/>
+                                    <point x="12.0" y="1.0" cp1x="12.0" cp1y="1.0" cp2x="12.0" cp2y="1.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.058064517" midpoint="0.5">
+                                       <matte red="224" green="224" blue="224" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.12258065" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.19032258" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.26451612" midpoint="0.5">
+                                       <matte red="224" green="224" blue="224" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.36129034" midpoint="0.5">
+                                       <matte red="224" green="224" blue="224" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.4032258" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.516129" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.56774193" midpoint="0.5">
+                                       <matte red="232" green="232" blue="232" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.66129035" midpoint="0.5">
+                                       <matte red="232" green="232" blue="232" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7516129" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="4.0" y="9.0" cp1x="4.0" cp1y="9.0" cp2x="4.0" cp2y="9.0"/>
+                                    <point x="5.0" y="8.0" cp1x="5.0" cp1y="8.0" cp2x="5.0" cp2y="8.0"/>
+                                    <point x="11.0" y="8.0" cp1x="11.0" cp1y="8.0" cp2x="11.0" cp2y="8.0"/>
+                                    <point x="12.0" y="9.0" cp1x="12.0" cp1y="9.0" cp2x="12.0" cp2y="9.0"/>
+                                    <point x="12.0" y="14.0" cp1x="12.0" cp1y="14.0" cp2x="12.0" cp2y="14.0"/>
+                                    <point x="4.0" y="14.0" cp1x="4.0" cp1y="14.0" cp2x="4.0" cp2y="14.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="164" green="179" blue="206" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.1" midpoint="0.5">
+                                       <matte red="97" green="123" blue="170" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.28387097" midpoint="0.5">
+                                       <matte red="53" green="86" blue="146" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7580645" midpoint="0.5">
+                                       <matte red="48" green="82" blue="144" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="71" green="99" blue="150" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="2.0" cp1x="1.0" cp1y="2.0" cp2x="1.0" cp2y="2.0"/>
+                                    <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
+                                    <point x="13.0" y="1.0" cp1x="13.0" cp1y="1.0" cp2x="13.0" cp2y="1.0"/>
+                                    <point x="15.0" y="3.0" cp1x="15.0" cp1y="3.0" cp2x="15.0" cp2y="3.0"/>
+                                    <point x="15.0" y="15.0" cp1x="15.0" cp1y="15.0" cp2x="15.0" cp2y="15.0"/>
+                                    <point x="1.0" y="15.0" cp1x="1.0" cp1y="15.0" cp2x="1.0" cp2y="15.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="46" green="46" blue="46" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.12258065" midpoint="0.5">
+                                       <matte red="64" green="64" blue="64" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.88064516" midpoint="0.5">
+                                       <matte red="43" green="43" blue="43" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="1.0"/>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="14.0" y="0.0" cp1x="14.0" cp1y="0.0" cp2x="14.0" cp2y="0.0"/>
+                                    <point x="16.0" y="2.0" cp1x="16.0" cp1y="2.0" cp2x="16.0" cp2y="2.0"/>
+                                    <point x="16.0" y="15.0" cp1x="16.0" cp1y="15.0" cp2x="16.0" cp2y="15.0"/>
+                                    <point x="15.0" y="16.0" cp1x="15.0" cp1y="16.0" cp2x="15.0" cp2y="16.0"/>
+                                    <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
+                                    <point x="0.0" y="15.0" cp1x="0.0" cp1y="15.0" cp2x="0.0" cp2y="15.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140f577f59.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="homeFolderIcon" subregion="true" key="homeFolderIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="16" height="16"/>
+                        <nextLayerNameIndex>5</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="160" green="161" blue="162" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="221" green="225" blue="230" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.630769230769231" y1="0.36217948717948706" x2="0.28846153846153844" y2="0.7339743589743591"/>
+                                 <points>
+                                    <point x="9.0" y="3.0" cp1x="9.0" cp1y="3.0" cp2x="9.0" cp2y="3.0"/>
+                                    <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                                    <point x="8.0" y="6.0" cp1x="8.0" cp1y="6.0" cp2x="8.0" cp2y="6.0"/>
+                                    <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                    <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
+                                    <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="160" green="161" blue="162" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="226" green="230" blue="233" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.4307692307692308" y1="0.3782051282051281" x2="0.7076923076923081" y2="0.6730769230769232"/>
+                                 <points>
+                                    <point x="3.0" y="8.0" cp1x="3.0" cp1y="8.0" cp2x="3.0" cp2y="8.0"/>
+                                    <point x="7.0" y="3.0" cp1x="7.0" cp1y="3.0" cp2x="7.0" cp2y="3.0"/>
+                                    <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                                    <point x="8.0" y="6.0" cp1x="8.0" cp1y="6.0" cp2x="8.0" cp2y="6.0"/>
+                                    <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
+                                    <point x="3.0" y="9.0" cp1x="3.0" cp1y="9.0" cp2x="3.0" cp2y="9.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="244" green="222" blue="143" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="1.2884615384615383" y="7.23076923076923" cp1x="1.2884615384615383" cp1y="7.23076923076923" cp2x="1.2884615384615383" cp2y="7.23076923076923"/>
+                                    <point x="1.0" y="8.0" cp1x="1.0" cp1y="8.0" cp2x="1.0" cp2y="8.0"/>
+                                    <point x="1.6153846153846154" y="7.8269230769230775" cp1x="1.6153846153846154" cp1y="7.8269230769230775" cp2x="1.6153846153846154" cp2y="7.8269230769230775"/>
+                                    <point x="7.403846153846156" y="2.019230769230769" cp1x="7.403846153846156" cp1y="2.019230769230769" cp2x="7.403846153846156" cp2y="2.019230769230769"/>
+                                    <point x="8.557692307692301" y="2.0" cp1x="8.557692307692301" cp1y="2.0" cp2x="8.557692307692301" cp2y="2.0"/>
+                                    <point x="14.30769230769231" y="7.76923076923077" cp1x="14.30769230769231" cp1y="7.76923076923077" cp2x="14.30769230769231" cp2y="7.76923076923077"/>
+                                    <point x="15.0" y="8.0" cp1x="15.0" cp1y="8.0" cp2x="15.0" cp2y="8.0"/>
+                                    <point x="14.730769230769223" y="7.192307692307692" cp1x="14.730769230769223" cp1y="7.192307692307692" cp2x="14.730769230769223" cp2y="7.192307692307692"/>
+                                    <point x="8.65384615384615" y="0.9807692307692306" cp1x="8.65384615384615" cp1y="0.9807692307692306" cp2x="8.65384615384615" cp2y="0.9807692307692306"/>
+                                    <point x="7.442307692307691" y="1.0" cp1x="7.442307692307691" cp1y="1.0" cp2x="7.442307692307691" cp2y="1.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="114" green="92" blue="13" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="64" green="48" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="7.0" cp1x="0.0" cp1y="7.0" cp2x="0.0" cp2y="7.0"/>
+                                    <point x="0.0" y="9.0" cp1x="0.0" cp1y="9.0" cp2x="0.0" cp2y="9.0"/>
+                                    <point x="2.0" y="9.0" cp1x="2.0" cp1y="9.0" cp2x="2.0" cp2y="9.0"/>
+                                    <point x="7.384615384615392" y="2.9999999999999987" cp1x="7.384615384615392" cp1y="2.9999999999999987" cp2x="7.384615384615392" cp2y="2.9999999999999987"/>
+                                    <point x="8.576923076923077" y="3.0" cp1x="8.576923076923077" cp1y="3.0" cp2x="8.576923076923077" cp2y="3.0"/>
+                                    <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
+                                    <point x="16.0" y="9.0" cp1x="16.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
+                                    <point x="16.0" y="7.0" cp1x="16.0" cp1y="7.0" cp2x="16.0" cp2y="7.0"/>
+                                    <point x="9.0" y="0.0" cp1x="9.0" cp1y="0.0" cp2x="9.0" cp2y="0.0"/>
+                                    <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 4">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="6.0" x2="7.0" y1="10.0" y2="14.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="137" green="115" blue="60" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="174" green="151" blue="91" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="81" green="59" blue="7" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="97" green="74" blue="18" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="5.0" y="15.0" cp1x="5.0" cp1y="15.0" cp2x="5.0" cp2y="15.0"/>
+                                    <point x="8.0" y="15.0" cp1x="8.0" cp1y="15.0" cp2x="8.0" cp2y="15.0"/>
+                                    <point x="8.0" y="10.0" cp1x="8.0" cp1y="10.0" cp2x="8.0" cp2y="10.0"/>
+                                    <point x="7.0" y="9.0" cp1x="7.0" cp1y="9.0" cp2x="7.0" cp2y="9.0"/>
+                                    <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
+                                    <point x="5.0" y="10.0" cp1x="5.0" cp1y="10.0" cp2x="5.0" cp2y="10.0"/>
+                                 </points>
+                              </path>
+                              <rectangle x1="10.0" x2="11.0" y1="10.0" y2="11.0" rounding="0.0">
+                                 <matte red="77" green="133" blue="185" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="9.0" x2="12.0" y1="9.0" y2="12.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="27" green="57" blue="87" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="75" green="109" blue="137" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <matte red="228" green="232" blue="237" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="3.0" y="8.0" cp1x="3.0" cp1y="8.0" cp2x="3.0" cp2y="8.0"/>
+                                    <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
+                                    <point x="13.0" y="14.0" cp1x="13.0" cp1y="14.0" cp2x="13.0" cp2y="14.0"/>
+                                    <point x="13.0" y="8.0" cp1x="13.0" cp1y="8.0" cp2x="13.0" cp2y="8.0"/>
+                                    <point x="8.0" y="4.0" cp1x="8.0" cp1y="4.0" cp2x="8.0" cp2y="4.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="51" green="60" blue="70" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="2.0" y="8.0" cp1x="2.0" cp1y="8.0" cp2x="2.0" cp2y="8.0"/>
+                                    <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
+                                    <point x="3.0" y="15.0" cp1x="3.0" cp1y="15.0" cp2x="3.0" cp2y="15.0"/>
+                                    <point x="13.0" y="15.0" cp1x="13.0" cp1y="15.0" cp2x="13.0" cp2y="15.0"/>
+                                    <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
+                                    <point x="14.0" y="8.0" cp1x="14.0" cp1y="8.0" cp2x="14.0" cp2y="8.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140f660775.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="detailsViewIcon" subregion="true" key="detailsViewIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="16" height="16"/>
+                        <nextLayerNameIndex>7</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 6">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="5.0" x2="7.0" y1="9.0" y2="10.0" rounding="0.0">
+                                 <matte red="69" green="78" blue="85" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.00573498" saturationOffset="-0.447479" brightnessOffset="-0.21568629" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="8.0" x2="10.0" y1="9.0" y2="10.0" rounding="0.0">
+                                 <matte red="93" green="106" blue="117" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0022627711" saturationOffset="-0.4305861" brightnessOffset="-0.0901961" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="8.0" x2="10.0" y1="7.0" y2="8.0" rounding="0.0">
+                                 <matte red="103" green="109" blue="113" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.011985004" saturationOffset="-0.54721874" brightnessOffset="-0.10588238" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="5.0" x2="7.0" y1="7.0" y2="8.0" rounding="0.0">
+                                 <matte red="105" green="111" blue="116" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.5408867" brightnessOffset="-0.09411767" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 5">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.12215909" midpoint="0.5">
+                                       <matte red="16" green="16" blue="16" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.48627454" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.19886364" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.32670453" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.53409094" midpoint="0.5">
+                                       <matte red="138" green="138" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="1.0" y1="0.0" x2="0.0" y2="1.0"/>
+                                 <points>
+                                    <point x="0.9130434782608696" y="14.608695652173912" cp1x="0.9130434782608696" cp1y="14.608695652173912" cp2x="0.9130434782608696" cp2y="14.608695652173912"/>
+                                    <point x="1.4130434782608694" y="15.108695652173912" cp1x="1.4130434782608694" cp1y="15.108695652173912" cp2x="1.4130434782608694" cp2y="15.108695652173912"/>
+                                    <point x="5.108695652173911" y="11.478260869565219" cp1x="5.108695652173911" cp1y="11.478260869565219" cp2x="5.108695652173911" cp2y="11.478260869565219"/>
+                                    <point x="4.5652173913043494" y="10.934782608695649" cp1x="4.5652173913043494" cp1y="10.934782608695649" cp2x="4.5652173913043494" cp2y="10.934782608695649"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.38352272" midpoint="0.5">
+                                       <matte red="64" green="64" blue="64" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.29803923" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.45454547" midpoint="0.5">
+                                       <matte red="171" green="171" blue="171" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="0.12156862" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.51420456" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.0" y1="0.0" x2="1.0" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="15.0" cp1x="0.0" cp1y="15.0" cp2x="0.0" cp2y="15.0"/>
+                                    <point x="0.0" y="16.0" cp1x="0.0" cp1y="16.0" cp2x="0.0" cp2y="16.0"/>
+                                    <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
+                                    <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
+                                    <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
+                                 </points>
+                              </path>
+                              <ellipse x1="4.0" x2="11.0" y1="5.0" y2="12.0">
+                                 <radialGradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.40625">
+                                       <matte red="229" green="240" blue="249" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0036516786" saturationOffset="-0.555393" brightnessOffset="0.42745095" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="155" green="186" blue="213" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0010654926" saturationOffset="-0.3634138" brightnessOffset="0.2862745" alphaOffset="0"/>
+                                    </stop>
+                                 </radialGradient>
+                                 <paintPoints x1="0.4922360248447207" y1="0.975155279503105" x2="0.47826086956521735" y2="0.23913043478260873"/>
+                              </ellipse>
+                              <ellipse x1="3.0" x2="12.0" y1="4.0" y2="13.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="102" green="102" blue="104" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6164835" brightnessOffset="-0.14117649" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="12" green="12" blue="12" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.5019608" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Icon">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="8.0" x2="13.0" y1="11.0" y2="12.0" rounding="0.0">
+                                 <matte red="178" green="183" blue="189" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.012257397" saturationOffset="-0.5775132" brightnessOffset="0.19215685" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="8.0" x2="13.0" y1="7.0" y2="8.0" rounding="0.0">
+                                 <matte red="163" green="174" blue="184" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.52158386" brightnessOffset="0.17254901" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="8.0" x2="13.0" y1="3.0" y2="4.0" rounding="0.0">
+                                 <matte red="163" green="174" blue="184" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.52158386" brightnessOffset="0.17254901" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="5.0" x2="7.0" y1="3.0" y2="4.0" rounding="0.0">
+                                 <matte red="163" green="174" blue="184" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.52158386" brightnessOffset="0.17254901" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="15.0" y1="1.0" y2="14.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="233" green="239" blue="244" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.5906323" brightnessOffset="0.4078431" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11363637" midpoint="0.5">
+                                       <matte red="200" green="214" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.51290727" brightnessOffset="0.34509802" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.57102275" midpoint="0.5">
+                                       <matte red="221" green="229" blue="238" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.009583652" saturationOffset="-0.5642857" brightnessOffset="0.3843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="241" green="245" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0072231293" saturationOffset="-0.6074885" brightnessOffset="0.4235294" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="1.0" x2="16.0" y1="0.0" y2="15.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="161" green="175" blue="189" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.48756614" brightnessOffset="0.19215685" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="123" green="134" blue="145" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.48399013" brightnessOffset="0.019607842" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="11499160af7.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="listViewIcon" subregion="true" key="listViewIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="16" height="16"/>
+                        <nextLayerNameIndex>5</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Icon">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="7.0" x2="12.0" y1="12.0" y2="13.0" rounding="0.0">
+                                 <matte red="186" green="186" blue="186" alpha="40" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="4.0" x2="6.0" y1="12.0" y2="13.0" rounding="0.0">
+                                 <matte red="186" green="186" blue="186" alpha="40" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="4.0" x2="6.0" y1="10.0" y2="11.0" rounding="0.0">
+                                 <matte red="186" green="186" blue="186" alpha="50" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="7.0" x2="11.0" y1="10.0" y2="11.0" rounding="0.0">
+                                 <matte red="186" green="186" blue="186" alpha="40" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="7.0" x2="12.0" y1="8.0" y2="9.0" rounding="0.0">
+                                 <matte red="186" green="186" blue="186" alpha="40" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="4.0" x2="6.0" y1="8.0" y2="9.0" rounding="0.0">
+                                 <matte red="186" green="186" blue="186" alpha="50" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="7.0" x2="11.0" y1="6.0" y2="7.0" rounding="0.0">
+                                 <matte red="186" green="186" blue="186" alpha="40" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="4.0" x2="6.0" y1="6.0" y2="7.0" rounding="0.0">
+                                 <matte red="186" green="186" blue="186" alpha="50" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="7.0" x2="12.0" y1="4.0" y2="5.0" rounding="0.0">
+                                 <matte red="186" green="186" blue="186" alpha="50" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="4.0" x2="6.0" y1="4.0" y2="5.0" rounding="0.0">
+                                 <matte red="186" green="186" blue="186" alpha="50" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="4.0" x2="6.0" y1="11.0" y2="12.0" rounding="0.0">
+                                 <matte red="70" green="75" blue="79" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.004577577" saturationOffset="-0.52179027" brightnessOffset="-0.2392157" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="7.0" x2="12.0" y1="11.0" y2="12.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="70" green="75" blue="79" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.004577577" saturationOffset="-0.52179027" brightnessOffset="-0.2392157" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.42897728" midpoint="0.5">
+                                       <matte red="93" green="98" blue="102" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.004577577" saturationOffset="-0.547479" brightnessOffset="-0.14901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="70" green="75" blue="79" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.004577577" saturationOffset="-0.52179027" brightnessOffset="-0.2392157" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.0" y1="0.0" x2="1.0" y2="0.0"/>
+                              </rectangle>
+                              <rectangle x1="7.0" x2="11.0" y1="9.0" y2="10.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="108" green="114" blue="120" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.4346591" midpoint="0.5">
+                                       <matte red="77" green="82" blue="87" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.0" y1="0.0" x2="1.0" y2="0.0"/>
+                              </rectangle>
+                              <rectangle x1="4.0" x2="6.0" y1="9.0" y2="10.0" rounding="0.0">
+                                 <matte red="77" green="82" blue="87" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.52077174" brightnessOffset="-0.20784315" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="7.0" x2="12.0" y1="7.0" y2="8.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="87" green="93" blue="98" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.5234694" brightnessOffset="-0.1647059" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.48295453" midpoint="0.5">
+                                       <matte red="106" green="112" blue="118" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.53401935" brightnessOffset="-0.086274534" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="87" green="93" blue="98" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.5234694" brightnessOffset="-0.1647059" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="4.0" x2="6.0" y1="7.0" y2="8.0" rounding="0.0">
+                                 <matte red="90" green="95" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.010526314" brightnessOffset="-0.3529412" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="4.0" x2="6.0" y1="5.0" y2="6.0" rounding="0.0">
+                                 <matte red="97" green="103" blue="108" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.03535354" saturationOffset="-0.008674465" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="7.0" x2="11.0" y1="5.0" y2="6.0" rounding="0.0">
+                                 <matte red="97" green="103" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.5338625" brightnessOffset="-0.12549022" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="7.0" x2="12.0" y1="3.0" y2="4.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.25" midpoint="0.5">
+                                       <matte red="99" green="105" blue="111" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5276062" brightnessOffset="-0.11372551" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.42045453" midpoint="0.5">
+                                       <matte red="124" green="132" blue="139" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-8.738637E-4" saturationOffset="-0.5278006" brightnessOffset="-0.0039215684" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.5823864" midpoint="0.5">
+                                       <matte red="99" green="105" blue="111" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5276062" brightnessOffset="-0.11372551" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.0" y1="0.0" x2="1.0" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="4.0" x2="6.0" y1="3.0" y2="4.0" rounding="0.0">
+                                 <matte red="99" green="105" blue="111" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5276062" brightnessOffset="-0.11372551" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="1.0" x2="15.0" y1="1.0" y2="14.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="233" green="239" blue="244" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.5906323" brightnessOffset="0.4078431" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.07670455" midpoint="0.5">
+                                       <matte red="200" green="214" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.51290727" brightnessOffset="0.34509802" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.4090909" midpoint="0.5">
+                                       <matte red="209" green="221" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.53271" brightnessOffset="0.36470586" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="241" green="245" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0072231293" saturationOffset="-0.6074885" brightnessOffset="0.4235294" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="16.0" y1="0.0" y2="15.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="161" green="175" blue="189" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.48756614" brightnessOffset="0.19215685" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="123" green="134" blue="145" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.48399013" brightnessOffset="0.019607842" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114997c75bc.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.plaf.synth.SynthInternalFrameTitlePane" name="InternalFrameTitlePane" ui="ComponentUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <uiproperties>
+               <uiProperty name="maxFrameIconSize" type="DIMENSION">
+                  <dimension width="18" height="18"/>
+               </uiProperty>
+           </uiproperties>
+         </style>
+         <backgroundStates/>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JInternalFrame" name="InternalFrame" ui="InternalFrameUI" subregion="false">
+         <stateTypes>
+            <stateType key="Enabled"/>
+            <stateType key="WindowFocused">
+               <codeSnippet><![CDATA[
+                         return c instanceof JInternalFrame && ((JInternalFrame)c).isSelected();]]></codeSnippet>
+            </stateType>
+         </stateTypes>
+         <contentMargins top="1" bottom="6" left="6" right="6"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="25" height="36"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="25" bottom="6" left="6" right="6"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="23.0" y1="34.0" y2="35.0" rounding="0.0">
+                           <matte red="211" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07399663" brightnessOffset="0.11372548" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="6.0" x2="19.0" y1="25.0" y2="30.0" rounding="0.0">
+                           <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="control" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <path>
+                           <matte red="158" green="163" blue="173" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.023821115" brightnessOffset="-0.06666666" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="20.0" y="25.0" cp1x="20.0" cp1y="25.0" cp2x="20.0" cp2y="25.0"/>
+                              <point x="6.0" y="25.0" cp1x="6.0" cp1y="25.0" cp2x="6.0" cp2y="25.0"/>
+                              <point x="6.0" y="30.0" cp1x="6.0" cp1y="30.0" cp2x="6.0" cp2y="30.0"/>
+                              <point x="19.0" y="30.0" cp1x="19.0" cp1y="30.0" cp2x="19.0" cp2y="30.0"/>
+                              <point x="19.0" y="25.0" cp1x="19.0" cp1y="25.0" cp2x="19.0" cp2y="25.0"/>
+                              <point x="20.0" y="25.0" cp1x="20.0" cp1y="25.0" cp2x="20.0" cp2y="25.0"/>
+                              <point x="20.0" y="31.0" cp1x="20.0" cp1y="31.0" cp2x="20.0" cp2y="31.0"/>
+                              <point x="5.0" y="31.0" cp1x="5.0" cp1y="31.0" cp2x="5.0" cp2y="31.0"/>
+                              <point x="5.0" y="24.0" cp1x="5.0" cp1y="24.0" cp2x="5.0" cp2y="24.0"/>
+                              <point x="20.0" y="24.0" cp1x="20.0" cp1y="24.0" cp2x="20.0" cp2y="24.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="203" green="207" blue="213" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.06357796" brightnessOffset="0.09019607" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="5.0" y="24.0" cp1x="5.0" cp1y="24.0" cp2x="5.0" cp2y="24.0"/>
+                              <point x="4.0" y="24.0" cp1x="4.0" cp1y="24.0" cp2x="4.0" cp2y="24.0"/>
+                              <point x="4.0" y="32.0" cp1x="4.0" cp1y="32.0" cp2x="4.0" cp2y="32.0"/>
+                              <point x="21.0" y="32.0" cp1x="21.0" cp1y="32.0" cp2x="21.0" cp2y="32.0"/>
+                              <point x="21.0" y="24.0" cp1x="21.0" cp1y="24.0" cp2x="21.0" cp2y="24.0"/>
+                              <point x="20.0" y="24.0" cp1x="20.0" cp1y="24.0" cp2x="20.0" cp2y="24.0"/>
+                              <point x="20.0" y="31.0" cp1x="20.0" cp1y="31.0" cp2x="20.0" cp2y="31.0"/>
+                              <point x="5.0" y="31.0" cp1x="5.0" cp1y="31.0" cp2x="5.0" cp2y="31.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="192" green="196" blue="203" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.056339122" brightnessOffset="0.05098039" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="4.0" y="24.0" cp1x="4.0" cp1y="24.0" cp2x="4.0" cp2y="24.0"/>
+                              <point x="1.0" y="24.0" cp1x="1.0" cp1y="24.0" cp2x="1.0" cp2y="24.0"/>
+                              <point x="1.0" y="33.0" cp1x="1.0" cp1y="32.0" cp2x="1.0" cp2y="34.0"/>
+                              <point x="3.0" y="35.0" cp1x="2.0" cp1y="35.0" cp2x="4.0" cp2y="35.0"/>
+                              <point x="22.0" y="35.0" cp1x="21.0" cp1y="35.0" cp2x="23.0" cp2y="35.0"/>
+                              <point x="24.0" y="33.0" cp1x="24.0" cp1y="34.0" cp2x="24.0" cp2y="32.0"/>
+                              <point x="24.0" y="24.0" cp1x="24.0" cp1y="24.0" cp2x="24.0" cp2y="24.0"/>
+                              <point x="21.0" y="24.0" cp1x="21.0" cp1y="24.0" cp2x="21.0" cp2y="24.0"/>
+                              <point x="21.0" y="32.0" cp1x="21.0" cp1y="32.0" cp2x="21.0" cp2y="32.0"/>
+                              <point x="4.0" y="32.0" cp1x="4.0" cp1y="32.0" cp2x="4.0" cp2y="32.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.3203593">
+                                 <matte red="170" green="174" blue="183" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.004273474" saturationOffset="-0.039488062" brightnessOffset="-0.027450979" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="192" green="196" blue="203" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.056339122" brightnessOffset="0.05098039" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="1.0" y="3.0" cp1x="1.0" cp1y="4.0" cp2x="1.0" cp2y="2.0"/>
+                              <point x="3.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="4.0" cp2y="1.0"/>
+                              <point x="22.0" y="1.0" cp1x="21.0" cp1y="1.0" cp2x="23.0" cp2y="1.0"/>
+                              <point x="24.0" y="3.0" cp1x="24.0" cp1y="2.0" cp2x="24.0" cp2y="4.0"/>
+                              <point x="24.0" y="24.0" cp1x="24.0" cp1y="24.0" cp2x="24.0" cp2y="24.0"/>
+                              <point x="1.0" y="24.0" cp1x="1.0" cp1y="24.0" cp2x="1.0" cp2y="24.0"/>
+                           </points>
+                        </path>
+                        <rectangle x1="0.0" x2="25.0" y1="0.0" y2="36.0" rounding="4.666666666666666">
+                           <matte red="136" green="141" blue="151" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.53637654" brightnessOffset="0.043137252" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113e0dd2c60.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled+WindowFocused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="25" height="36"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="25" bottom="6" left="6" right="6"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="23.0" y1="34.0" y2="35.0" rounding="0.0">
+                           <matte red="235" green="236" blue="238" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="23.0" y1="2.0" y2="24.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.24251497">
+                                 <matte red="227" green="229" blue="232" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.61416256" brightnessOffset="0.3607843" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="170" green="175" blue="185" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5546332" brightnessOffset="0.17647058" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                           <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                           <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                           <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="6.0" x2="19.0" y1="25.0" y2="30.0" rounding="0.0">
+                           <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="control" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <path>
+                           <matte red="108" green="114" blue="128" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.03801495" saturationOffset="-0.4794643" brightnessOffset="-0.04705882" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="5.0" y="25.0" cp1x="5.0" cp1y="25.0" cp2x="5.0" cp2y="25.0"/>
+                              <point x="5.0" y="31.0" cp1x="5.0" cp1y="31.0" cp2x="5.0" cp2y="31.0"/>
+                              <point x="20.0" y="31.0" cp1x="20.0" cp1y="31.0" cp2x="20.0" cp2y="31.0"/>
+                              <point x="20.0" y="24.0" cp1x="20.0" cp1y="24.0" cp2x="20.0" cp2y="24.0"/>
+                              <point x="5.0" y="24.0" cp1x="5.0" cp1y="24.0" cp2x="5.0" cp2y="24.0"/>
+                              <point x="5.0" y="25.0" cp1x="5.0" cp1y="25.0" cp2x="5.0" cp2y="25.0"/>
+                              <point x="19.0" y="25.0" cp1x="19.0" cp1y="25.0" cp2x="19.0" cp2y="25.0"/>
+                              <point x="19.0" y="30.0" cp1x="19.0" cp1y="30.0" cp2x="19.0" cp2y="30.0"/>
+                              <point x="6.0" y="30.0" cp1x="6.0" cp1y="30.0" cp2x="6.0" cp2y="30.0"/>
+                              <point x="6.0" y="25.0" cp1x="6.0" cp1y="25.0" cp2x="6.0" cp2y="25.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="149" green="158" blue="167" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.52792984" brightnessOffset="0.10588235" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="21.0" y="24.0" cp1x="21.0" cp1y="24.0" cp2x="21.0" cp2y="24.0"/>
+                              <point x="20.0" y="24.0" cp1x="20.0" cp1y="24.0" cp2x="20.0" cp2y="24.0"/>
+                              <point x="20.0" y="31.0" cp1x="20.0" cp1y="31.0" cp2x="20.0" cp2y="31.0"/>
+                              <point x="5.0" y="31.0" cp1x="5.0" cp1y="31.0" cp2x="5.0" cp2y="31.0"/>
+                              <point x="5.0" y="24.0" cp1x="5.0" cp1y="24.0" cp2x="5.0" cp2y="24.0"/>
+                              <point x="4.0" y="24.0" cp1x="4.0" cp1y="24.0" cp2x="4.0" cp2y="24.0"/>
+                              <point x="4.0" y="32.0" cp1x="4.0" cp1y="32.0" cp2x="4.0" cp2y="32.0"/>
+                              <point x="21.0" y="32.0" cp1x="21.0" cp1y="32.0" cp2x="21.0" cp2y="32.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="171" green="176" blue="186" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.55506915" brightnessOffset="0.18039215" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="4.0" y="24.0" cp1x="4.0" cp1y="24.0" cp2x="4.0" cp2y="24.0"/>
+                              <point x="2.0" y="24.0" cp1x="2.0" cp1y="24.0" cp2x="2.0" cp2y="24.0"/>
+                              <point x="2.0" y="32.0" cp1x="2.0" cp1y="31.0" cp2x="2.0" cp2y="33.0"/>
+                              <point x="4.0" y="34.0" cp1x="3.0" cp1y="34.0" cp2x="5.0" cp2y="34.0"/>
+                              <point x="21.0" y="34.0" cp1x="20.0" cp1y="34.0" cp2x="22.0" cp2y="34.0"/>
+                              <point x="23.0" y="32.0" cp1x="23.0" cp1y="33.0" cp2x="23.0" cp2y="31.0"/>
+                              <point x="23.0" y="24.0" cp1x="23.0" cp1y="24.0" cp2x="23.0" cp2y="24.0"/>
+                              <point x="21.0" y="24.0" cp1x="21.0" cp1y="24.0" cp2x="21.0" cp2y="24.0"/>
+                              <point x="21.0" y="32.0" cp1x="21.0" cp1y="32.0" cp2x="21.0" cp2y="32.0"/>
+                              <point x="4.0" y="32.0" cp1x="4.0" cp1y="32.0" cp2x="4.0" cp2y="32.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="204" green="207" blue="213" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="3.0" y="24.0" cp1x="3.0" cp1y="24.0" cp2x="3.0" cp2y="24.0"/>
+                              <point x="1.0" y="24.0" cp1x="1.0" cp1y="24.0" cp2x="1.0" cp2y="24.0"/>
+                              <point x="1.0" y="33.0" cp1x="1.0" cp1y="32.0" cp2x="1.0" cp2y="34.0"/>
+                              <point x="3.0" y="35.0" cp1x="2.0" cp1y="35.0" cp2x="4.0" cp2y="35.0"/>
+                              <point x="22.0" y="35.0" cp1x="21.0" cp1y="35.0" cp2x="23.0" cp2y="35.0"/>
+                              <point x="24.0" y="33.0" cp1x="24.0" cp1y="34.0" cp2x="24.0" cp2y="32.0"/>
+                              <point x="24.0" y="24.0" cp1x="24.0" cp1y="24.0" cp2x="24.0" cp2y="24.0"/>
+                              <point x="22.0" y="24.0" cp1x="22.0" cp1y="24.0" cp2x="22.0" cp2y="24.0"/>
+                              <point x="22.0" y="33.0" cp1x="22.0" cp1y="33.0" cp2x="22.0" cp2y="33.0"/>
+                              <point x="3.0" y="33.0" cp1x="3.0" cp1y="33.0" cp2x="3.0" cp2y="33.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="240" green="241" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6274498" brightnessOffset="0.39999998" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="204" green="207" blue="213" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5934608" brightnessOffset="0.2862745" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="1.0" y="3.0" cp1x="1.0" cp1y="4.0" cp2x="1.0" cp2y="2.0"/>
+                              <point x="3.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="4.0" cp2y="1.0"/>
+                              <point x="22.0" y="1.0" cp1x="21.0" cp1y="1.0" cp2x="23.0" cp2y="1.0"/>
+                              <point x="24.0" y="3.0" cp1x="24.0" cp1y="2.0" cp2x="24.0" cp2y="4.0"/>
+                              <point x="24.0" y="24.0" cp1x="24.0" cp1y="24.0" cp2x="24.0" cp2y="24.0"/>
+                              <point x="1.0" y="24.0" cp1x="1.0" cp1y="24.0" cp2x="1.0" cp2y="24.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="1.0" y="2.0" cp1x="1.0" cp1y="1.0" cp2x="1.0" cp2y="3.0"/>
+                           </points>
+                        </path>
+                        <rectangle x1="0.0" x2="25.0" y1="0.0" y2="36.0" rounding="4.833333333333332">
+                           <matte red="43" green="46" blue="51" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02551502" saturationOffset="-0.47885156" brightnessOffset="-0.34901965" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113e0e9b602.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>true</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <region name="InternalFrameTitlePane" subregion="false">
+               <contentMargins top="3" bottom="3" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NO_CACHING</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties>
+                     <uiProperty name="titleAlignment" type="STRING" value="CENTER"/>
+                  </uiproperties>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground>
+                           <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions>
+                  <uiComponent opaque="false" componentName="InternalFrameTitlePane.menuButton" type="javax.swing.JButton" name="Button" ui="ButtonUI" subregion="true">
+                     <stateTypes>
+                        <stateType key="Enabled"/>
+                        <stateType key="MouseOver"/>
+                        <stateType key="Pressed"/>
+                        <stateType key="Disabled"/>
+                        <stateType key="Focused"/>
+                        <stateType key="Selected"/>
+                        <stateType key="WindowNotFocused">
+                           <codeSnippet><![CDATA[
+                               Component parent = c;
+                               while (parent.getParent() != null) {
+                                   if (parent instanceof JInternalFrame) {
+                                       break;
+                                   }
+                                   parent = parent.getParent();
+                               }
+                               if (parent instanceof JInternalFrame) {
+                                   return !(((JInternalFrame)parent).isSelected());
+                               }
+                               return false;]]></codeSnippet>
+                        </stateType>
+                     </stateTypes>
+                     <contentMargins top="0" bottom="0" left="0" right="0"/>
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheSettingsInherited>false</cacheSettingsInherited>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties>
+                           <uiProperty name="test" type="STRING" value="am InternalFrameTitlePane.menuButton"/>
+                        </uiproperties>
+                     </style>
+                     <backgroundStates/>
+                     <foregroundStates/>
+                     <borderStates/>
+                     <regions>
+                        <uiIconRegion name="Icon" subregion="true" key="icon">
+                                 <contentMargins top="9" bottom="9" left="10" right="9"/>
+                                 <style>
+                                    <textForeground/>
+                                    <textBackground/>
+                                    <background/>
+                                    <cacheSettingsInherited>false</cacheSettingsInherited>
+                                    <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                                    <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                                    <uiproperties/>
+                                 </style>
+                                 <backgroundStates>
+                                    <state stateKeys="Enabled">
+                                       <style>
+                                          <textForeground/>
+                                          <textBackground/>
+                                          <background/>
+                                          <uiproperties/>
+                                       </style>
+                                       <canvas>
+                                          <size width="19" height="18"/>
+                                          <nextLayerNameIndex>2</nextLayerNameIndex>
+                                          <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                                          <layer name="Layer 1">
+                                             <opacity>1.0</opacity>
+                                             <fillOpacity>1.0</fillOpacity>
+                                             <blendingMode>NORMAL</blendingMode>
+                                             <locked>false</locked>
+                                             <visible>true</visible>
+                                             <shapes>
+                                                <path>
+                                                   <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                   <points>
+                                                      <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
+                                                      <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
+                                                      <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
+                                                   </points>
+                                                </path>
+                                                <path>
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="54" green="66" blue="88" alpha="123" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.24935067" brightnessOffset="-0.20392159" alphaOffset="-132"/>
+                                                      </stop>
+                                                      <stop position="0.48579547" midpoint="0.5">
+                                                         <matte red="54" green="66" blue="88" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.24935067" brightnessOffset="-0.20392159" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="54" green="66" blue="88" alpha="132" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.24935067" brightnessOffset="-0.20392159" alphaOffset="-123"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.5071428571428569" y1="0.09499999999999999" x2="0.49285714285714344" y2="0.9099999999999999"/>
+                                                   <points>
+                                                      <point x="6.0" y="8.0" cp1x="6.0" cp1y="8.0" cp2x="6.0" cp2y="8.0"/>
+                                                      <point x="13.0" y="8.0" cp1x="13.0" cp1y="8.0" cp2x="13.0" cp2y="8.0"/>
+                                                      <point x="9.524999999999995" y="12.975" cp1x="9.524999999999995" cp1y="12.975" cp2x="9.524999999999995" cp2y="12.975"/>
+                                                   </points>
+                                                </path>
+                                                <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="157" green="163" blue="174" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.53801316" brightnessOffset="0.13333333" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.53977275" midpoint="0.5">
+                                                         <matte red="87" green="97" blue="116" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.3857143" brightnessOffset="-0.09411767" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.6505682" midpoint="0.5">
+                                                         <matte red="86" green="96" blue="115" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.3835404" brightnessOffset="-0.09803924" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="113" green="123" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.43148893" brightnessOffset="0.007843137" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                                </rectangle>
+                                                <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="0" green="0" blue="12" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.5019608" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="86" green="96" blue="115" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.3835404" brightnessOffset="-0.09803924" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                                </rectangle>
+                                                <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                                   <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                </rectangle>
+                                             </shapes>
+                                             <effects/>
+                                          </layer>
+                                          <templateLayer fileName="113d0d626ac.png">
+                                             <layer name="Template" type="template">
+                                                <opacity>1.0</opacity>
+                                                <fillOpacity>1.0</fillOpacity>
+                                                <blendingMode>NORMAL</blendingMode>
+                                                <locked>false</locked>
+                                                <visible>false</visible>
+                                                <shapes/>
+                                                <effects/>
+                                             </layer>
+                                          </templateLayer>
+                                       </canvas>
+                                    </state>
+                                    <state stateKeys="Disabled">
+                                       <style>
+                                          <textForeground/>
+                                          <textBackground/>
+                                          <background/>
+                                          <uiproperties/>
+                                       </style>
+                                       <canvas>
+                                          <size width="19" height="18"/>
+                                          <nextLayerNameIndex>2</nextLayerNameIndex>
+                                          <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                                          <layer name="Layer 1">
+                                             <opacity>1.0</opacity>
+                                             <fillOpacity>1.0</fillOpacity>
+                                             <blendingMode>NORMAL</blendingMode>
+                                             <locked>false</locked>
+                                             <visible>true</visible>
+                                             <shapes>
+                                                <path>
+                                                   <matte red="189" green="193" blue="201" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5760128" brightnessOffset="0.23921567" alphaOffset="0"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                   <points>
+                                                      <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
+                                                      <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
+                                                      <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
+                                                   </points>
+                                                </path>
+                                                <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="185" green="188" blue="193" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02551502" saturationOffset="-0.5942635" brightnessOffset="0.20784312" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.62215906" midpoint="0.5">
+                                                         <matte red="158" green="163" blue="173" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5490091" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5469569" brightnessOffset="0.11372548" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                                </rectangle>
+                                                <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                                   <matte red="83" green="86" blue="93" alpha="47" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-208"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                </rectangle>
+                                             </shapes>
+                                             <effects/>
+                                          </layer>
+                                          <templateLayer fileName="113d0e8c4f9.png">
+                                             <layer name="Template" type="template">
+                                                <opacity>1.0</opacity>
+                                                <fillOpacity>1.0</fillOpacity>
+                                                <blendingMode>NORMAL</blendingMode>
+                                                <locked>false</locked>
+                                                <visible>false</visible>
+                                                <shapes/>
+                                                <effects/>
+                                             </layer>
+                                          </templateLayer>
+                                       </canvas>
+                                    </state>
+                                    <state stateKeys="MouseOver">
+                                       <style>
+                                          <textForeground/>
+                                          <textBackground/>
+                                          <background/>
+                                          <uiproperties/>
+                                       </style>
+                                       <canvas>
+                                          <size width="19" height="18"/>
+                                          <nextLayerNameIndex>2</nextLayerNameIndex>
+                                          <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                                          <layer name="Layer 1">
+                                             <opacity>1.0</opacity>
+                                             <fillOpacity>1.0</fillOpacity>
+                                             <blendingMode>NORMAL</blendingMode>
+                                             <locked>false</locked>
+                                             <visible>true</visible>
+                                             <shapes>
+                                                <path>
+                                                   <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                   <points>
+                                                      <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
+                                                      <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
+                                                      <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
+                                                   </points>
+                                                </path>
+                                                <path>
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="77" green="88" blue="111" alpha="123" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.329408" brightnessOffset="-0.11372551" alphaOffset="-132"/>
+                                                      </stop>
+                                                      <stop position="0.48579547" midpoint="0.5">
+                                                         <matte red="77" green="88" blue="111" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.329408" brightnessOffset="-0.11372551" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="77" green="88" blue="111" alpha="132" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.329408" brightnessOffset="-0.11372551" alphaOffset="-123"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.5071428571428569" y1="0.09499999999999999" x2="0.49285714285714344" y2="0.9099999999999999"/>
+                                                   <points>
+                                                      <point x="6.0" y="8.0" cp1x="6.0" cp1y="8.0" cp2x="6.0" cp2y="8.0"/>
+                                                      <point x="13.0" y="8.0" cp1x="13.0" cp1y="8.0" cp2x="13.0" cp2y="8.0"/>
+                                                      <point x="9.524999999999995" y="12.975" cp1x="9.524999999999995" cp1y="12.975" cp2x="9.524999999999995" cp2y="12.975"/>
+                                                   </points>
+                                                </path>
+                                                <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="168" green="174" blue="185" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.5438224" brightnessOffset="0.17647058" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.53977275" midpoint="0.5">
+                                                         <matte red="105" green="115" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.41929638" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.6505682" midpoint="0.5">
+                                                         <matte red="105" green="115" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.41929638" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="132" green="142" blue="161" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.45559007" brightnessOffset="0.082352936" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                                </rectangle>
+                                                <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="0" green="0" blue="15" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4901961" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="44" green="56" blue="80" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.1857143" brightnessOffset="-0.23529413" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                                </rectangle>
+                                                <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                                   <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                </rectangle>
+                                             </shapes>
+                                             <effects/>
+                                          </layer>
+                                          <templateLayer fileName="113d0eacd3f.png">
+                                             <layer name="Template" type="template">
+                                                <opacity>1.0</opacity>
+                                                <fillOpacity>1.0</fillOpacity>
+                                                <blendingMode>NORMAL</blendingMode>
+                                                <locked>false</locked>
+                                                <visible>false</visible>
+                                                <shapes/>
+                                                <effects/>
+                                             </layer>
+                                          </templateLayer>
+                                       </canvas>
+                                    </state>
+                                    <state stateKeys="Pressed">
+                                       <style>
+                                          <textForeground/>
+                                          <textBackground/>
+                                          <background/>
+                                          <uiproperties/>
+                                       </style>
+                                       <canvas>
+                                          <size width="19" height="18"/>
+                                          <nextLayerNameIndex>2</nextLayerNameIndex>
+                                          <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                                          <layer name="Layer 1">
+                                             <opacity>1.0</opacity>
+                                             <fillOpacity>1.0</fillOpacity>
+                                             <blendingMode>NORMAL</blendingMode>
+                                             <locked>false</locked>
+                                             <visible>true</visible>
+                                             <shapes>
+                                                <path>
+                                                   <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                   <points>
+                                                      <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
+                                                      <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
+                                                      <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
+                                                   </points>
+                                                </path>
+                                                <path>
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="16" green="30" blue="56" alpha="123" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="0.07857144" brightnessOffset="-0.3294118" alphaOffset="-132"/>
+                                                      </stop>
+                                                      <stop position="0.48579547" midpoint="0.5">
+                                                         <matte red="16" green="30" blue="56" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="0.07857144" brightnessOffset="-0.3294118" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="16" green="30" blue="56" alpha="132" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="0.07857144" brightnessOffset="-0.3294118" alphaOffset="-123"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.5071428571428569" y1="0.09499999999999999" x2="0.49285714285714344" y2="0.9099999999999999"/>
+                                                   <points>
+                                                      <point x="6.0" y="8.0" cp1x="6.0" cp1y="8.0" cp2x="6.0" cp2y="8.0"/>
+                                                      <point x="13.0" y="8.0" cp1x="13.0" cp1y="8.0" cp2x="13.0" cp2y="8.0"/>
+                                                      <point x="9.524999999999995" y="12.975" cp1x="9.524999999999995" cp1y="12.975" cp2x="9.524999999999995" cp2y="12.975"/>
+                                                   </points>
+                                                </path>
+                                                <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="112" green="120" blue="136" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.4592437" brightnessOffset="-0.015686274" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.53977275" midpoint="0.5">
+                                                         <matte red="56" green="68" blue="90" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.2579365" brightnessOffset="-0.19607845" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.6505682" midpoint="0.5">
+                                                         <matte red="56" green="68" blue="90" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.2579365" brightnessOffset="-0.19607845" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="72" green="83" blue="106" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.3149596" brightnessOffset="-0.13333336" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                                </rectangle>
+                                                <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="13" green="27" blue="54" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.031104386" saturationOffset="0.12354499" brightnessOffset="-0.33725494" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                                </rectangle>
+                                                <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                                   <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                </rectangle>
+                                             </shapes>
+                                             <effects/>
+                                          </layer>
+                                          <templateLayer fileName="113d0ec1755.png">
+                                             <layer name="Template" type="template">
+                                                <opacity>1.0</opacity>
+                                                <fillOpacity>1.0</fillOpacity>
+                                                <blendingMode>NORMAL</blendingMode>
+                                                <locked>false</locked>
+                                                <visible>false</visible>
+                                                <shapes/>
+                                                <effects/>
+                                             </layer>
+                                          </templateLayer>
+                                       </canvas>
+                                    </state>
+                                    <state stateKeys="Enabled+WindowNotFocused">
+                                       <style>
+                                          <textForeground/>
+                                          <textBackground/>
+                                          <background/>
+                                          <uiproperties/>
+                                       </style>
+                                       <canvas>
+                                          <size width="19" height="18"/>
+                                          <nextLayerNameIndex>2</nextLayerNameIndex>
+                                          <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                                          <layer name="Layer 1">
+                                             <opacity>1.0</opacity>
+                                             <fillOpacity>1.0</fillOpacity>
+                                             <blendingMode>NORMAL</blendingMode>
+                                             <locked>false</locked>
+                                             <visible>true</visible>
+                                             <shapes>
+                                                <path>
+                                                   <matte red="100" green="104" blue="110" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.54480517" brightnessOffset="-0.11764708" alphaOffset="0"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                   <points>
+                                                      <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
+                                                      <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
+                                                      <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
+                                                   </points>
+                                                </path>
+                                                <path>
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="181" green="185" blue="192" alpha="123" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5784226" brightnessOffset="0.20392156" alphaOffset="-132"/>
+                                                      </stop>
+                                                      <stop position="0.48579547" midpoint="0.5">
+                                                         <matte red="148" green="151" blue="159" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.042560518" saturationOffset="-0.5665319" brightnessOffset="0.0745098" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="169" green="173" blue="182" alpha="132" uiDefaultParentName="nimbusBase" hueOffset="0.036732912" saturationOffset="-0.5642857" brightnessOffset="0.16470587" alphaOffset="-123"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.5071428571428569" y1="0.09499999999999999" x2="0.49285714285714344" y2="0.9099999999999999"/>
+                                                   <points>
+                                                      <point x="6.0" y="7.0" cp1x="6.0" cp1y="7.0" cp2x="6.0" cp2y="7.0"/>
+                                                      <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
+                                                      <point x="9.409090909090903" y="11.795454545454545" cp1x="9.409090909090903" cp1y="11.795454545454545" cp2x="9.409090909090903" cp2y="11.795454545454545"/>
+                                                   </points>
+                                                </path>
+                                                <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999995">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="219" green="221" blue="224" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.6133929" brightnessOffset="0.32941175" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.53977275" midpoint="0.5">
+                                                         <matte red="188" green="191" blue="199" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.042560518" saturationOffset="-0.5804379" brightnessOffset="0.23137254" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.6505682" midpoint="0.5">
+                                                         <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.57417583" brightnessOffset="0.21568626" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="189" green="193" blue="201" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5760128" brightnessOffset="0.23921567" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                                </rectangle>
+                                                <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="136" green="141" blue="151" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.53637654" brightnessOffset="0.043137252" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="95" green="100" blue="110" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.49935067" brightnessOffset="-0.11764708" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="95" green="100" blue="110" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.49935067" brightnessOffset="-0.11764708" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                                </rectangle>
+                                             </shapes>
+                                             <effects/>
+                                          </layer>
+                                          <templateLayer fileName="113fc39fc2b.png">
+                                             <layer name="Template" type="template">
+                                                <opacity>1.0</opacity>
+                                                <fillOpacity>1.0</fillOpacity>
+                                                <blendingMode>NORMAL</blendingMode>
+                                                <locked>false</locked>
+                                                <visible>false</visible>
+                                                <shapes/>
+                                                <effects/>
+                                             </layer>
+                                          </templateLayer>
+                                       </canvas>
+                                    </state>
+                                    <state stateKeys="MouseOver+WindowNotFocused">
+                                       <style>
+                                          <textForeground/>
+                                          <textBackground/>
+                                          <background/>
+                                          <uiproperties/>
+                                       </style>
+                                       <canvas>
+                                          <size width="19" height="18"/>
+                                          <nextLayerNameIndex>2</nextLayerNameIndex>
+                                          <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                                          <layer name="Layer 1">
+                                             <opacity>1.0</opacity>
+                                             <fillOpacity>1.0</fillOpacity>
+                                             <blendingMode>NORMAL</blendingMode>
+                                             <locked>false</locked>
+                                             <visible>true</visible>
+                                             <shapes>
+                                                <path>
+                                                   <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                   <points>
+                                                      <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
+                                                      <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
+                                                      <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
+                                                   </points>
+                                                </path>
+                                                <path>
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="77" green="88" blue="111" alpha="123" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.329408" brightnessOffset="-0.11372551" alphaOffset="-132"/>
+                                                      </stop>
+                                                      <stop position="0.48579547" midpoint="0.5">
+                                                         <matte red="77" green="88" blue="111" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.329408" brightnessOffset="-0.11372551" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="77" green="88" blue="111" alpha="132" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.329408" brightnessOffset="-0.11372551" alphaOffset="-123"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.5071428571428569" y1="0.09499999999999999" x2="0.49285714285714344" y2="0.9099999999999999"/>
+                                                   <points>
+                                                      <point x="6.0" y="8.0" cp1x="6.0" cp1y="8.0" cp2x="6.0" cp2y="8.0"/>
+                                                      <point x="13.0" y="8.0" cp1x="13.0" cp1y="8.0" cp2x="13.0" cp2y="8.0"/>
+                                                      <point x="9.524999999999995" y="12.975" cp1x="9.524999999999995" cp1y="12.975" cp2x="9.524999999999995" cp2y="12.975"/>
+                                                   </points>
+                                                </path>
+                                                <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="168" green="174" blue="185" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.5438224" brightnessOffset="0.17647058" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.53977275" midpoint="0.5">
+                                                         <matte red="105" green="115" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.41929638" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.6505682" midpoint="0.5">
+                                                         <matte red="105" green="115" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.41929638" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="132" green="142" blue="161" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.45559007" brightnessOffset="0.082352936" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                                </rectangle>
+                                                <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="0" green="0" blue="15" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4901961" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="44" green="56" blue="80" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.1857143" brightnessOffset="-0.23529413" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                                </rectangle>
+                                                <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                                   <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                </rectangle>
+                                             </shapes>
+                                             <effects/>
+                                          </layer>
+                                          <templateLayer fileName="113d0eacd3f.png">
+                                             <layer name="Template" type="template">
+                                                <opacity>1.0</opacity>
+                                                <fillOpacity>1.0</fillOpacity>
+                                                <blendingMode>NORMAL</blendingMode>
+                                                <locked>false</locked>
+                                                <visible>false</visible>
+                                                <shapes/>
+                                                <effects/>
+                                             </layer>
+                                          </templateLayer>
+                                       </canvas>
+                                    </state>
+                                    <state stateKeys="Pressed+WindowNotFocused">
+                                       <style>
+                                          <textForeground/>
+                                          <textBackground/>
+                                          <background/>
+                                          <uiproperties/>
+                                       </style>
+                                       <canvas>
+                                          <size width="19" height="18"/>
+                                          <nextLayerNameIndex>2</nextLayerNameIndex>
+                                          <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                                          <layer name="Layer 1">
+                                             <opacity>1.0</opacity>
+                                             <fillOpacity>1.0</fillOpacity>
+                                             <blendingMode>NORMAL</blendingMode>
+                                             <locked>false</locked>
+                                             <visible>true</visible>
+                                             <shapes>
+                                                <path>
+                                                   <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                   <points>
+                                                      <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
+                                                      <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
+                                                      <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
+                                                   </points>
+                                                </path>
+                                                <path>
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="16" green="30" blue="56" alpha="123" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="0.07857144" brightnessOffset="-0.3294118" alphaOffset="-132"/>
+                                                      </stop>
+                                                      <stop position="0.48579547" midpoint="0.5">
+                                                         <matte red="16" green="30" blue="56" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="0.07857144" brightnessOffset="-0.3294118" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="16" green="30" blue="56" alpha="132" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="0.07857144" brightnessOffset="-0.3294118" alphaOffset="-123"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.5071428571428569" y1="0.09499999999999999" x2="0.49285714285714344" y2="0.9099999999999999"/>
+                                                   <points>
+                                                      <point x="6.0" y="8.0" cp1x="6.0" cp1y="8.0" cp2x="6.0" cp2y="8.0"/>
+                                                      <point x="13.0" y="8.0" cp1x="13.0" cp1y="8.0" cp2x="13.0" cp2y="8.0"/>
+                                                      <point x="9.524999999999995" y="12.975" cp1x="9.524999999999995" cp1y="12.975" cp2x="9.524999999999995" cp2y="12.975"/>
+                                                   </points>
+                                                </path>
+                                                <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="112" green="120" blue="136" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.4592437" brightnessOffset="-0.015686274" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.53977275" midpoint="0.5">
+                                                         <matte red="56" green="68" blue="90" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.2579365" brightnessOffset="-0.19607845" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="0.6505682" midpoint="0.5">
+                                                         <matte red="56" green="68" blue="90" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.2579365" brightnessOffset="-0.19607845" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="72" green="83" blue="106" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.3149596" brightnessOffset="-0.13333336" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                                </rectangle>
+                                                <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                                   <gradient cycleMethod="NO_CYCLE">
+                                                      <stop position="0.0" midpoint="0.5">
+                                                         <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                                      </stop>
+                                                      <stop position="1.0" midpoint="0.5">
+                                                         <matte red="13" green="27" blue="54" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.031104386" saturationOffset="0.12354499" brightnessOffset="-0.33725494" alphaOffset="0"/>
+                                                      </stop>
+                                                   </gradient>
+                                                   <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                                </rectangle>
+                                                <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                                   <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                                   <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                                </rectangle>
+                                             </shapes>
+                                             <effects/>
+                                          </layer>
+                                          <templateLayer fileName="113d0ec1755.png">
+                                             <layer name="Template" type="template">
+                                                <opacity>1.0</opacity>
+                                                <fillOpacity>1.0</fillOpacity>
+                                                <blendingMode>NORMAL</blendingMode>
+                                                <locked>false</locked>
+                                                <visible>false</visible>
+                                                <shapes/>
+                                                <effects/>
+                                             </layer>
+                                          </templateLayer>
+                                       </canvas>
+                                    </state>
+                                 </backgroundStates>
+                                 <foregroundStates/>
+                                 <borderStates/>
+                                 <regions/>
+                            </uiIconRegion>
+                     </regions>
+                  </uiComponent>
+                  <uiComponent opaque="false" componentName="InternalFrameTitlePane.iconifyButton" type="javax.swing.JButton" name="Button" ui="ButtonUI" subregion="true">
+                     <stateTypes>
+                        <stateType key="Enabled"/>
+                        <stateType key="MouseOver"/>
+                        <stateType key="Pressed"/>
+                        <stateType key="Disabled"/>
+                        <stateType key="Focused"/>
+                        <stateType key="Selected"/>
+                        <stateType key="WindowNotFocused">
+                           <codeSnippet><![CDATA[
+                               Component parent = c;
+                               while (parent.getParent() != null) {
+                                   if (parent instanceof JInternalFrame) {
+                                       break;
+                                   }
+                                   parent = parent.getParent();
+                               }
+                               if (parent instanceof JInternalFrame) {
+                                   return !(((JInternalFrame)parent).isSelected());
+                               }
+                               return false;]]></codeSnippet>
+                        </stateType>
+                     </stateTypes>
+                     <contentMargins top="9" bottom="9" left="9" right="9"/>
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheSettingsInherited>false</cacheSettingsInherited>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <backgroundStates>
+                        <state stateKeys="Enabled">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>2</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.750000000000001" x2="14.250000000000004" y1="11.931818181818182" y2="13.477272727272728" rounding="0.0">
+                                       <matte red="88" green="0" blue="0" alpha="149" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.40392157" alphaOffset="-106"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="218" green="164" blue="110" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.48364475" brightnessOffset="0.10588235" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="191" green="98" blue="4" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="192" green="99" blue="5" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="-0.0050992966" brightnessOffset="0.0039215684" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="218" green="125" blue="31" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="-0.12125945" brightnessOffset="0.10588235" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="88" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.40392157" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="191" green="98" blue="4" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113d100d389.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>true</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Disabled">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>2</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
+                                       <matte red="178" green="183" blue="192" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.003968239" saturationOffset="-0.03760965" brightnessOffset="0.007843137" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.750000000000001" x2="14.250000000000004" y1="11.931818181818182" y2="13.477272727272728" rounding="0.0">
+                                       <matte red="76" green="85" blue="87" alpha="39" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0808081" saturationOffset="0.015910469" brightnessOffset="-0.40392157" alphaOffset="-216"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="187" green="190" blue="196" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.93313926" brightnessOffset="0.019607842" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="162" green="166" blue="176" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.53526866" saturationOffset="-0.8995122" brightnessOffset="-0.058823526" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="157" green="162" blue="171" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5233639" saturationOffset="-0.8971863" brightnessOffset="-0.07843137" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.8903002" brightnessOffset="-0.086274505" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="185" green="188" blue="193" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5203877" saturationOffset="-0.9376068" brightnessOffset="0.007843137" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.8903002" brightnessOffset="-0.086274505" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113e23f6ea0.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="MouseOver">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>2</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.750000000000001" x2="14.250000000000004" y1="11.931818181818182" y2="13.477272727272728" rounding="0.0">
+                                       <matte red="204" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.025772434" saturationOffset="0.02094239" brightnessOffset="0.05098039" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="229" green="175" blue="121" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.5074419" brightnessOffset="0.1490196" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="211" green="120" blue="28" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="9.745359E-6" saturationOffset="-0.11175901" brightnessOffset="0.07843137" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="211" green="118" blue="24" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="-0.09280169" brightnessOffset="0.07843137" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="237" green="144" blue="50" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="-0.19002807" brightnessOffset="0.18039215" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="110" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.31764707" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="175" green="59" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.02758849" saturationOffset="0.02094239" brightnessOffset="-0.062745094" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113e2450ed9.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Pressed">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>2</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.750000000000001" x2="14.272727272727275" y1="11.749999999999998" y2="14.0909090909091" rounding="0.0">
+                                       <matte red="154" green="0" blue="0" alpha="164" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.14509803" alphaOffset="-91"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="201" green="123" blue="72" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.017887495" saturationOffset="-0.33726656" brightnessOffset="0.039215684" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="180" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.018038228" saturationOffset="0.02094239" brightnessOffset="-0.043137252" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="184" green="75" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.015844189" saturationOffset="0.02094239" brightnessOffset="-0.027450979" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="195" green="86" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.010274701" saturationOffset="0.02094239" brightnessOffset="0.015686274" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="89" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.4" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="163" green="30" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.053104125" saturationOffset="0.02094239" brightnessOffset="-0.109803915" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113e247bc76.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Enabled+WindowNotFocused">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>2</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
+                                       <matte red="98" green="102" blue="108" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.017933726" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.750000000000001" x2="14.250000000000004" y1="11.931818181818182" y2="13.477272727272728" rounding="0.0">
+                                       <matte red="76" green="85" blue="87" alpha="39" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0808081" saturationOffset="0.015910469" brightnessOffset="-0.40392157" alphaOffset="-216"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="219" green="221" blue="224" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.516221" saturationOffset="-0.9567362" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="185" green="189" blue="196" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5222816" saturationOffset="-0.9229352" brightnessOffset="0.019607842" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.91751915" brightnessOffset="0.015686274" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.9161677" midpoint="0.5">
+                                             <matte red="189" green="193" blue="201" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.9193561" brightnessOffset="0.039215684" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="136" green="141" blue="151" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.87971985" brightnessOffset="-0.15686274" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="95" green="100" blue="110" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.842694" brightnessOffset="-0.31764707" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc294735.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="MouseOver+WindowNotFocused">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>2</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.750000000000001" x2="14.250000000000004" y1="11.931818181818182" y2="13.477272727272728" rounding="0.0">
+                                       <matte red="204" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.025772434" saturationOffset="0.02094239" brightnessOffset="0.05098039" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="229" green="175" blue="121" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.5074419" brightnessOffset="0.1490196" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="211" green="120" blue="28" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="9.745359E-6" saturationOffset="-0.11175901" brightnessOffset="0.07843137" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="211" green="118" blue="24" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="-0.09280169" brightnessOffset="0.07843137" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="237" green="144" blue="50" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="-0.19002807" brightnessOffset="0.18039215" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="110" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.31764707" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="175" green="59" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.02758849" saturationOffset="0.02094239" brightnessOffset="-0.062745094" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113e2450ed9.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Pressed+WindowNotFocused">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>2</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.750000000000001" x2="14.272727272727275" y1="11.749999999999998" y2="14.0909090909091" rounding="0.0">
+                                       <matte red="154" green="0" blue="0" alpha="164" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.14509803" alphaOffset="-91"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="201" green="123" blue="72" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.017887495" saturationOffset="-0.33726656" brightnessOffset="0.039215684" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="180" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.018038228" saturationOffset="0.02094239" brightnessOffset="-0.043137252" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="184" green="75" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.015844189" saturationOffset="0.02094239" brightnessOffset="-0.027450979" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="195" green="86" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.010274701" saturationOffset="0.02094239" brightnessOffset="0.015686274" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="89" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.4" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="163" green="30" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.053104125" saturationOffset="0.02094239" brightnessOffset="-0.109803915" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113e247bc76.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                     </backgroundStates>
+                     <foregroundStates/>
+                     <borderStates/>
+                     <regions/>
+                  </uiComponent>
+                  <uiComponent opaque="false" componentName="InternalFrameTitlePane.maximizeButton" type="javax.swing.JButton" name="Button" ui="ButtonUI" subregion="true">
+                     <stateTypes>
+                        <stateType key="Enabled"/>
+                        <stateType key="MouseOver"/>
+                        <stateType key="Pressed"/>
+                        <stateType key="Disabled"/>
+                        <stateType key="Focused"/>
+                        <stateType key="Selected"/>
+                        <stateType key="WindowNotFocused">
+                           <codeSnippet><![CDATA[
+                               Component parent = c;
+                               while (parent.getParent() != null) {
+                                   if (parent instanceof JInternalFrame) {
+                                       break;
+                                   }
+                                   parent = parent.getParent();
+                               }
+                               if (parent instanceof JInternalFrame) {
+                                   return !(((JInternalFrame)parent).isSelected());
+                               }
+                               return false;]]></codeSnippet>
+                        </stateType>
+                        <stateType key="WindowMaximized">
+                           <codeSnippet><![CDATA[
+                               Component parent = c;
+                               while (parent.getParent() != null) {
+                                   if (parent instanceof JInternalFrame) {
+                                       break;
+                                   }
+                                   parent = parent.getParent();
+                               }
+                               if (parent instanceof JInternalFrame) {
+                                   return ((JInternalFrame)parent).isMaximum();
+                               }
+                               return false;]]></codeSnippet>
+                        </stateType>
+                     </stateTypes>
+                     <contentMargins top="9" bottom="9" left="9" right="9"/>
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheSettingsInherited>false</cacheSettingsInherited>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <backgroundStates>
+                        <state stateKeys="Disabled+WindowMaximized">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>5</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="186" green="190" blue="198" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049920253" brightnessOffset="0.031372547" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
+                                          <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
+                                          <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
+                                          <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
+                                          <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
+                                          <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="198" green="201" blue="208" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.062449392" brightnessOffset="0.07058823" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="176" green="181" blue="189" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04174325" brightnessOffset="-0.0039215684" alphaOffset="-13"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
+                                          <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
+                                          <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
+                                          <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                          <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                       </points>
+                                    </path>
+                                    <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
+                                       <matte red="166" green="170" blue="179" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44484192" saturationOffset="-0.6480447" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="8.340909090909092" x2="14.97727272727273" y1="12.977272727272727" y2="13.977272727272728" rounding="0.0">
+                                       <matte red="153" green="157" blue="166" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44484192" saturationOffset="-0.6423572" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="7.0" x2="8.0" y1="11.0" y2="14.0" rounding="0.0">
+                                       <matte red="153" green="158" blue="167" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.4366002" saturationOffset="-0.6368381" brightnessOffset="-0.04705882" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
+                                       <matte red="166" green="170" blue="179" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44484192" saturationOffset="-0.6480447" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
+                                       <matte red="158" green="162" blue="171" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44484192" saturationOffset="-0.644647" brightnessOffset="-0.031372547" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.204545454545454" x2="5.136363636363637" y1="10.886363636363637" y2="6.9772727272727275" rounding="0.0">
+                                       <matte red="158" green="162" blue="171" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44484192" saturationOffset="-0.644647" brightnessOffset="-0.031372547" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.113636363636363" x2="12.818181818181822" y1="5.0227272727272725" y2="6.9772727272727275" rounding="0.0">
+                                       <matte red="165" green="169" blue="176" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.4355179" saturationOffset="-0.6581704" brightnessOffset="-0.011764705" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="187" green="190" blue="196" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.67475206" brightnessOffset="0.06666666" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.631913" brightnessOffset="-0.039215684" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="185" green="188" blue="193" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.43362403" saturationOffset="-0.6792196" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.631913" brightnessOffset="-0.039215684" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fbedca6b.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Enabled+WindowMaximized">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>5</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="222" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-33"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
+                                          <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
+                                          <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
+                                          <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
+                                          <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
+                                          <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-13"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
+                                          <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
+                                          <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
+                                          <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                          <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                       </points>
+                                    </path>
+                                    <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
+                                       <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="15.045454545454545" x2="15.863636363636363" y1="13.954545454545455" y2="7.590909090909091" rounding="0.0">
+                                       <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="8.340909090909092" x2="14.97727272727273" y1="12.977272727272727" y2="13.977272727272728" rounding="0.0">
+                                       <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="7.25" x2="8.295454545454547" y1="11.0" y2="13.931818181818183" rounding="0.0">
+                                       <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
+                                       <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
+                                       <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.204545454545454" x2="5.136363636363637" y1="10.886363636363637" y2="6.9772727272727275" rounding="0.0">
+                                       <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.113636363636363" x2="12.818181818181822" y1="5.0227272727272725" y2="6.9772727272727275" rounding="0.0">
+                                       <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="164" green="176" blue="110" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.02642706" saturationOffset="-0.3456704" brightnessOffset="-0.011764705" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="98" green="118" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.2454313" brightnessOffset="-0.2392157" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="99" green="119" blue="5" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.2373128" brightnessOffset="-0.23529413" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="125" green="145" blue="31" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.0655365" brightnessOffset="-0.13333333" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="0" green="15" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.1627907" saturationOffset="0.2793296" brightnessOffset="-0.6431373" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="98" green="118" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.2454313" brightnessOffset="-0.2392157" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113e1f88fc4.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="MouseOver+WindowMaximized">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>5</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="222" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-33"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
+                                          <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
+                                          <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
+                                          <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
+                                          <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
+                                          <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-13"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
+                                          <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
+                                          <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
+                                          <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                          <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                       </points>
+                                    </path>
+                                    <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
+                                       <matte red="125" green="136" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009604409" saturationOffset="0.2793296" brightnessOffset="-0.16862744" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="15.045454545454545" x2="15.863636363636363" y1="13.954545454545455" y2="7.590909090909091" rounding="0.0">
+                                       <matte red="129" green="140" blue="3" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009506017" saturationOffset="0.257901" brightnessOffset="-0.15294117" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="8.340909090909092" x2="14.97727272727273" y1="12.977272727272727" y2="13.977272727272728" rounding="0.0">
+                                       <matte red="124" green="137" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.011939123" saturationOffset="0.2793296" brightnessOffset="-0.16470587" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="7.25" x2="8.295454545454547" y1="11.0" y2="13.931818181818183" rounding="0.0">
+                                       <matte red="127" green="140" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.011600211" saturationOffset="0.2793296" brightnessOffset="-0.15294117" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
+                                       <matte red="125" green="136" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009604409" saturationOffset="0.2793296" brightnessOffset="-0.16862744" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
+                                       <matte red="113" green="126" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.013319805" saturationOffset="0.2793296" brightnessOffset="-0.20784315" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.204545454545454" x2="5.136363636363637" y1="10.886363636363637" y2="6.9772727272727275" rounding="0.0">
+                                       <matte red="117" green="130" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.01279068" saturationOffset="0.2793296" brightnessOffset="-0.19215685" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.113636363636363" x2="12.818181818181822" y1="5.0227272727272725" y2="6.9772727272727275" rounding="0.0">
+                                       <matte red="108" green="122" blue="0" alpha="206" uiDefaultParentName="nimbusGreen" hueOffset="0.015249729" saturationOffset="0.2793296" brightnessOffset="-0.22352943" alphaOffset="-49"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="187" green="193" blue="120" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009822637" saturationOffset="-0.34243205" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="138" green="149" blue="22" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="0.13167858" brightnessOffset="-0.11764705" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="139" green="150" blue="23" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="0.12599629" brightnessOffset="-0.11372548" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="165" green="176" blue="49" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="9.2053413E-4" brightnessOffset="-0.011764705" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="0" green="19" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.1627907" saturationOffset="0.2793296" brightnessOffset="-0.627451" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="59" green="84" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.04572721" saturationOffset="0.2793296" brightnessOffset="-0.37254903" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fbf3eb8c.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Pressed+WindowMaximized">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>5</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="222" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-33"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
+                                          <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
+                                          <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
+                                          <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
+                                          <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
+                                          <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-13"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
+                                          <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
+                                          <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
+                                          <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                          <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                       </points>
+                                    </path>
+                                    <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
+                                       <matte red="45" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.057156876" saturationOffset="0.2793296" brightnessOffset="-0.42352942" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="15.045454545454545" x2="15.863636363636363" y1="13.954545454545455" y2="7.590909090909091" rounding="0.0">
+                                       <matte red="55" green="80" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.048207358" saturationOffset="0.2793296" brightnessOffset="-0.3882353" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="8.340909090909092" x2="14.97727272727273" y1="12.977272727272727" y2="13.977272727272728" rounding="0.0">
+                                       <matte red="41" green="69" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.06375685" saturationOffset="0.2793296" brightnessOffset="-0.43137255" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="7.0" x2="8.0" y1="11.0" y2="14.0" rounding="0.0">
+                                       <matte red="42" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.06419912" saturationOffset="0.2793296" brightnessOffset="-0.42352942" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
+                                       <matte red="41" green="67" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.060800627" saturationOffset="0.2793296" brightnessOffset="-0.4392157" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
+                                       <matte red="36" green="63" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.0675526" saturationOffset="0.2793296" brightnessOffset="-0.454902" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.204545454545454" x2="5.136363636363637" y1="10.886363636363637" y2="6.9772727272727275" rounding="0.0">
+                                       <matte red="38" green="65" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.06535478" saturationOffset="0.2793296" brightnessOffset="-0.44705883" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.113636363636363" x2="12.818181818181822" y1="5.0227272727272725" y2="6.9772727272727275" rounding="0.0">
+                                       <matte red="19" green="48" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.09681849" saturationOffset="0.2793296" brightnessOffset="-0.5137255" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="123" green="139" blue="72" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03592503" saturationOffset="-0.23865601" brightnessOffset="-0.15686274" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="74" green="96" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.035979107" saturationOffset="0.23766291" brightnessOffset="-0.3254902" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="71" green="94" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03690417" saturationOffset="0.2793296" brightnessOffset="-0.33333334" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="125" green="145" blue="31" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.0655365" brightnessOffset="-0.13333333" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.17054264" saturationOffset="-0.7206704" brightnessOffset="-0.7019608" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="30" green="59" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.07804492" saturationOffset="0.2793296" brightnessOffset="-0.47058827" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fbfaf2cf.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Enabled+WindowNotFocused+WindowMaximized">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>5</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="100" green="103" blue="109" alpha="222" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.027957506" brightnessOffset="-0.31764707" alphaOffset="-33"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
+                                          <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
+                                          <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
+                                          <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
+                                          <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
+                                          <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="102" green="105" blue="111" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.029445238" brightnessOffset="-0.30980393" alphaOffset="-13"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
+                                          <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
+                                          <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
+                                          <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                          <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                       </points>
+                                    </path>
+                                    <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
+                                       <matte red="185" green="189" blue="196" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.4355179" saturationOffset="-0.664548" brightnessOffset="0.06666666" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
+                                       <matte red="181" green="185" blue="192" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.4355179" saturationOffset="-0.6633787" brightnessOffset="0.05098039" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
+                                       <matte red="179" green="183" blue="191" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.6578432" brightnessOffset="0.04705882" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="219" green="221" blue="224" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.4294573" saturationOffset="-0.698349" brightnessOffset="0.17647058" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="188" green="191" blue="199" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.45066953" saturationOffset="-0.665394" brightnessOffset="0.07843137" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.65913194" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="189" green="193" blue="201" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.6609689" brightnessOffset="0.086274505" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="136" green="141" blue="151" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.62133265" brightnessOffset="-0.109803915" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="95" green="100" blue="110" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.5843068" brightnessOffset="-0.27058825" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fbfe1ab1.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="MouseOver+WindowNotFocused+WindowMaximized">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>5</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="222" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-33"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
+                                          <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
+                                          <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
+                                          <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
+                                          <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
+                                          <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-13"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
+                                          <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
+                                          <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
+                                          <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                          <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                       </points>
+                                    </path>
+                                    <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
+                                       <matte red="125" green="136" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009604409" saturationOffset="0.2793296" brightnessOffset="-0.16862744" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="15.045454545454545" x2="15.863636363636363" y1="13.954545454545455" y2="7.590909090909091" rounding="0.0">
+                                       <matte red="129" green="140" blue="3" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009506017" saturationOffset="0.257901" brightnessOffset="-0.15294117" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="8.340909090909092" x2="14.97727272727273" y1="12.977272727272727" y2="13.977272727272728" rounding="0.0">
+                                       <matte red="124" green="137" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.011939123" saturationOffset="0.2793296" brightnessOffset="-0.16470587" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="7.25" x2="8.295454545454547" y1="11.0" y2="13.931818181818183" rounding="0.0">
+                                       <matte red="127" green="140" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.011600211" saturationOffset="0.2793296" brightnessOffset="-0.15294117" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
+                                       <matte red="125" green="136" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009604409" saturationOffset="0.2793296" brightnessOffset="-0.16862744" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
+                                       <matte red="113" green="126" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.013319805" saturationOffset="0.2793296" brightnessOffset="-0.20784315" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.204545454545454" x2="5.136363636363637" y1="10.886363636363637" y2="6.9772727272727275" rounding="0.0">
+                                       <matte red="117" green="130" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.01279068" saturationOffset="0.2793296" brightnessOffset="-0.19215685" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.113636363636363" x2="12.818181818181822" y1="5.0227272727272725" y2="6.9772727272727275" rounding="0.0">
+                                       <matte red="108" green="122" blue="0" alpha="206" uiDefaultParentName="nimbusGreen" hueOffset="0.015249729" saturationOffset="0.2793296" brightnessOffset="-0.22352943" alphaOffset="-49"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="187" green="193" blue="120" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009822637" saturationOffset="-0.34243205" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="138" green="149" blue="22" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="0.13167858" brightnessOffset="-0.11764705" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="139" green="150" blue="23" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="0.12599629" brightnessOffset="-0.11372548" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="165" green="176" blue="49" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="9.2053413E-4" brightnessOffset="-0.011764705" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="0" green="19" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.1627907" saturationOffset="0.2793296" brightnessOffset="-0.627451" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="59" green="84" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.04572721" saturationOffset="0.2793296" brightnessOffset="-0.37254903" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fbf3eb8c.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Pressed+WindowNotFocused+WindowMaximized">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>5</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="222" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-33"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
+                                          <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
+                                          <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
+                                          <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
+                                          <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
+                                          <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-13"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
+                                          <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
+                                          <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
+                                          <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                          <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                       </points>
+                                    </path>
+                                    <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
+                                       <matte red="45" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.057156876" saturationOffset="0.2793296" brightnessOffset="-0.42352942" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="15.045454545454545" x2="15.863636363636363" y1="13.954545454545455" y2="7.590909090909091" rounding="0.0">
+                                       <matte red="55" green="80" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.048207358" saturationOffset="0.2793296" brightnessOffset="-0.3882353" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="8.340909090909092" x2="14.97727272727273" y1="12.977272727272727" y2="13.977272727272728" rounding="0.0">
+                                       <matte red="41" green="69" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.06375685" saturationOffset="0.2793296" brightnessOffset="-0.43137255" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="7.0" x2="8.0" y1="11.0" y2="14.0" rounding="0.0">
+                                       <matte red="42" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.06419912" saturationOffset="0.2793296" brightnessOffset="-0.42352942" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
+                                       <matte red="41" green="67" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.060800627" saturationOffset="0.2793296" brightnessOffset="-0.4392157" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
+                                       <matte red="36" green="63" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.0675526" saturationOffset="0.2793296" brightnessOffset="-0.454902" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.204545454545454" x2="5.136363636363637" y1="10.886363636363637" y2="6.9772727272727275" rounding="0.0">
+                                       <matte red="38" green="65" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.06535478" saturationOffset="0.2793296" brightnessOffset="-0.44705883" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="4.113636363636363" x2="12.818181818181822" y1="5.0227272727272725" y2="6.9772727272727275" rounding="0.0">
+                                       <matte red="19" green="48" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.09681849" saturationOffset="0.2793296" brightnessOffset="-0.5137255" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="123" green="139" blue="72" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03592503" saturationOffset="-0.23865601" brightnessOffset="-0.15686274" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="74" green="96" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.035979107" saturationOffset="0.23766291" brightnessOffset="-0.3254902" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="71" green="94" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03690417" saturationOffset="0.2793296" brightnessOffset="-0.33333334" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="125" green="145" blue="31" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.0655365" brightnessOffset="-0.13333333" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.17054264" saturationOffset="-0.7206704" brightnessOffset="-0.7019608" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="30" green="59" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.07804492" saturationOffset="0.2793296" brightnessOffset="-0.47058827" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fbfaf2cf.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Disabled">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>6</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 5">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.26047903" midpoint="0.5">
+                                             <matte red="195" green="199" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.057128258" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="172" green="177" blue="186" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.003968239" saturationOffset="-0.035257496" brightnessOffset="-0.015686274" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="165" green="169" blue="176" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="3.636363636363636" y="5.25" cp1x="3.636363636363636" cp1y="5.25" cp2x="3.636363636363636" cp2y="5.25"/>
+                                          <point x="3.6590909090909083" y="13.431818181818185" cp1x="3.6590909090909083" cp1y="13.431818181818185" cp2x="3.6590909090909083" cp2y="13.431818181818185"/>
+                                          <point x="15.500000000000004" y="13.40909090909091" cp1x="15.500000000000004" cp1y="13.40909090909091" cp2x="15.500000000000004" cp2y="13.40909090909091"/>
+                                          <point x="15.56818181818182" y="5.25" cp1x="15.56818181818182" cp1y="5.25" cp2x="15.56818181818182" cp2y="5.25"/>
+                                          <point x="13.727272727272725" y="5.25" cp1x="13.727272727272725" cp1y="5.25" cp2x="13.727272727272725" cp2y="5.25"/>
+                                          <point x="13.90909090909091" y="12.045454545454547" cp1x="13.90909090909091" cp1y="12.045454545454547" cp2x="13.90909090909091" cp2y="12.045454545454547"/>
+                                          <point x="5.318181818181818" y="11.81818181818182" cp1x="5.318181818181818" cp1y="11.81818181818182" cp2x="5.318181818181818" cp2y="11.81818181818182"/>
+                                          <point x="5.409090909090909" y="6.954545454545454" cp1x="5.409090909090909" cp1y="6.954545454545454" cp2x="5.409090909090909" cp2y="6.954545454545454"/>
+                                          <point x="13.795454545454543" y="6.931818181818181" cp1x="13.795454545454543" cp1y="6.931818181818181" cp2x="13.795454545454543" cp2y="6.931818181818181"/>
+                                          <point x="13.727272727272734" y="5.2272727272727275" cp1x="13.727272727272734" cp1y="5.2272727272727275" cp2x="13.727272727272734" cp2y="5.2272727272727275"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="187" green="190" blue="196" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.67475206" brightnessOffset="0.06666666" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="164" green="169" blue="177" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.43202144" saturationOffset="-0.64722407" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6766467" midpoint="0.5">
+                                             <matte red="158" green="163" blue="173" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.6339652" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.631913" brightnessOffset="-0.039215684" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="185" green="188" blue="193" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.43362403" saturationOffset="-0.6792196" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.631913" brightnessOffset="-0.039215684" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc0648fb.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Enabled">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>6</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 5">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="64" green="88" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="3.636363636363636" y="5.25" cp1x="3.636363636363636" cp1y="5.25" cp2x="3.636363636363636" cp2y="5.25"/>
+                                          <point x="3.6590909090909083" y="13.431818181818185" cp1x="3.6590909090909083" cp1y="13.431818181818185" cp2x="3.6590909090909083" cp2y="13.431818181818185"/>
+                                          <point x="15.500000000000004" y="13.40909090909091" cp1x="15.500000000000004" cp1y="13.40909090909091" cp2x="15.500000000000004" cp2y="13.40909090909091"/>
+                                          <point x="15.56818181818182" y="5.25" cp1x="15.56818181818182" cp1y="5.25" cp2x="15.56818181818182" cp2y="5.25"/>
+                                          <point x="13.727272727272725" y="5.25" cp1x="13.727272727272725" cp1y="5.25" cp2x="13.727272727272725" cp2y="5.25"/>
+                                          <point x="13.90909090909091" y="12.045454545454547" cp1x="13.90909090909091" cp1y="12.045454545454547" cp2x="13.90909090909091" cp2y="12.045454545454547"/>
+                                          <point x="5.318181818181818" y="11.81818181818182" cp1x="5.318181818181818" cp1y="11.81818181818182" cp2x="5.318181818181818" cp2y="11.81818181818182"/>
+                                          <point x="5.409090909090909" y="6.954545454545454" cp1x="5.409090909090909" cp1y="6.954545454545454" cp2x="5.409090909090909" cp2y="6.954545454545454"/>
+                                          <point x="13.795454545454543" y="6.931818181818181" cp1x="13.795454545454543" cp1y="6.931818181818181" cp2x="13.795454545454543" cp2y="6.931818181818181"/>
+                                          <point x="13.727272727272734" y="5.2272727272727275" cp1x="13.727272727272734" cp1y="5.2272727272727275" cp2x="13.727272727272734" cp2y="5.2272727272727275"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="164" green="176" blue="110" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.02642706" saturationOffset="-0.3456704" brightnessOffset="-0.011764705" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="98" green="118" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.2454313" brightnessOffset="-0.2392157" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="99" green="119" blue="5" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.2373128" brightnessOffset="-0.23529413" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="125" green="145" blue="31" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.0655365" brightnessOffset="-0.13333333" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="0" green="15" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.1627907" saturationOffset="0.2793296" brightnessOffset="-0.6431373" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="98" green="118" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.2454313" brightnessOffset="-0.2392157" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113e1feba05.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="MouseOver">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>6</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 5">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="113" green="125" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="3.636363636363636" y="5.25" cp1x="3.636363636363636" cp1y="5.25" cp2x="3.636363636363636" cp2y="5.25"/>
+                                          <point x="3.6590909090909083" y="13.431818181818185" cp1x="3.6590909090909083" cp1y="13.431818181818185" cp2x="3.6590909090909083" cp2y="13.431818181818185"/>
+                                          <point x="15.500000000000004" y="13.40909090909091" cp1x="15.500000000000004" cp1y="13.40909090909091" cp2x="15.500000000000004" cp2y="13.40909090909091"/>
+                                          <point x="15.56818181818182" y="5.25" cp1x="15.56818181818182" cp1y="5.25" cp2x="15.56818181818182" cp2y="5.25"/>
+                                          <point x="13.727272727272725" y="5.25" cp1x="13.727272727272725" cp1y="5.25" cp2x="13.727272727272725" cp2y="5.25"/>
+                                          <point x="13.90909090909091" y="12.045454545454547" cp1x="13.90909090909091" cp1y="12.045454545454547" cp2x="13.90909090909091" cp2y="12.045454545454547"/>
+                                          <point x="5.318181818181818" y="11.81818181818182" cp1x="5.318181818181818" cp1y="11.81818181818182" cp2x="5.318181818181818" cp2y="11.81818181818182"/>
+                                          <point x="5.409090909090909" y="6.954545454545454" cp1x="5.409090909090909" cp1y="6.954545454545454" cp2x="5.409090909090909" cp2y="6.954545454545454"/>
+                                          <point x="13.795454545454543" y="6.931818181818181" cp1x="13.795454545454543" cp1y="6.931818181818181" cp2x="13.795454545454543" cp2y="6.931818181818181"/>
+                                          <point x="13.727272727272734" y="5.2272727272727275" cp1x="13.727272727272734" cp1y="5.2272727272727275" cp2x="13.727272727272734" cp2y="5.2272727272727275"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="187" green="193" blue="120" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009822637" saturationOffset="-0.34243205" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="141" green="151" blue="27" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009564877" saturationOffset="0.100521624" brightnessOffset="-0.109803915" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="138" green="149" blue="22" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="0.13167858" brightnessOffset="-0.11764705" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="165" green="176" blue="49" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="9.2053413E-4" brightnessOffset="-0.011764705" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="0" green="19" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.1627907" saturationOffset="0.2793296" brightnessOffset="-0.627451" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="59" green="84" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.04572721" saturationOffset="0.2793296" brightnessOffset="-0.37254903" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="204" green="211" blue="227" alpha="154" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.004830897" saturationOffset="-0.00920473" brightnessOffset="0.14509803" alphaOffset="-101"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc0c6be3.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Pressed">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>6</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 5">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="19" green="48" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="3.636363636363636" y="5.25" cp1x="3.636363636363636" cp1y="5.25" cp2x="3.636363636363636" cp2y="5.25"/>
+                                          <point x="3.6590909090909083" y="13.431818181818185" cp1x="3.6590909090909083" cp1y="13.431818181818185" cp2x="3.6590909090909083" cp2y="13.431818181818185"/>
+                                          <point x="15.500000000000004" y="13.40909090909091" cp1x="15.500000000000004" cp1y="13.40909090909091" cp2x="15.500000000000004" cp2y="13.40909090909091"/>
+                                          <point x="15.56818181818182" y="5.25" cp1x="15.56818181818182" cp1y="5.25" cp2x="15.56818181818182" cp2y="5.25"/>
+                                          <point x="13.727272727272725" y="5.25" cp1x="13.727272727272725" cp1y="5.25" cp2x="13.727272727272725" cp2y="5.25"/>
+                                          <point x="13.90909090909091" y="12.045454545454547" cp1x="13.90909090909091" cp1y="12.045454545454547" cp2x="13.90909090909091" cp2y="12.045454545454547"/>
+                                          <point x="5.318181818181818" y="11.81818181818182" cp1x="5.318181818181818" cp1y="11.81818181818182" cp2x="5.318181818181818" cp2y="11.81818181818182"/>
+                                          <point x="5.409090909090909" y="6.954545454545454" cp1x="5.409090909090909" cp1y="6.954545454545454" cp2x="5.409090909090909" cp2y="6.954545454545454"/>
+                                          <point x="13.795454545454543" y="6.931818181818181" cp1x="13.795454545454543" cp1y="6.931818181818181" cp2x="13.795454545454543" cp2y="6.931818181818181"/>
+                                          <point x="13.727272727272734" y="5.2272727272727275" cp1x="13.727272727272734" cp1y="5.2272727272727275" cp2x="13.727272727272734" cp2y="5.2272727272727275"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="123" green="139" blue="72" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03592503" saturationOffset="-0.23865601" brightnessOffset="-0.15686274" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="74" green="96" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.035979107" saturationOffset="0.23766291" brightnessOffset="-0.3254902" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.79341316" midpoint="0.5">
+                                             <matte red="71" green="94" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03690417" saturationOffset="0.2793296" brightnessOffset="-0.33333334" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="86" green="109" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03129223" saturationOffset="0.2793296" brightnessOffset="-0.27450982" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.17054264" saturationOffset="-0.7206704" brightnessOffset="-0.7019608" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="30" green="59" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.07804492" saturationOffset="0.2793296" brightnessOffset="-0.47058827" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="190" green="197" blue="212" alpha="190" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0025252104" saturationOffset="-0.0067527294" brightnessOffset="0.086274505" alphaOffset="-65"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc1017c9.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Enabled+WindowNotFocused">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>6</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 5">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="102" green="105" blue="111" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.029445238" brightnessOffset="-0.30980393" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="219" green="221" blue="224" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.4294573" saturationOffset="-0.698349" brightnessOffset="0.17647058" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.65913194" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.7185629" midpoint="0.5">
+                                             <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.65913194" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="189" green="193" blue="201" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.6609689" brightnessOffset="0.086274505" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="136" green="141" blue="151" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.62133265" brightnessOffset="-0.109803915" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="95" green="100" blue="110" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.5843068" brightnessOffset="-0.27058825" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc12e4cb.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="MouseOver+WindowNotFocused">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>6</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 5">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="113" green="125" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="3.636363636363636" y="5.25" cp1x="3.636363636363636" cp1y="5.25" cp2x="3.636363636363636" cp2y="5.25"/>
+                                          <point x="3.6590909090909083" y="13.431818181818185" cp1x="3.6590909090909083" cp1y="13.431818181818185" cp2x="3.6590909090909083" cp2y="13.431818181818185"/>
+                                          <point x="15.500000000000004" y="13.40909090909091" cp1x="15.500000000000004" cp1y="13.40909090909091" cp2x="15.500000000000004" cp2y="13.40909090909091"/>
+                                          <point x="15.56818181818182" y="5.25" cp1x="15.56818181818182" cp1y="5.25" cp2x="15.56818181818182" cp2y="5.25"/>
+                                          <point x="13.727272727272725" y="5.25" cp1x="13.727272727272725" cp1y="5.25" cp2x="13.727272727272725" cp2y="5.25"/>
+                                          <point x="13.90909090909091" y="12.045454545454547" cp1x="13.90909090909091" cp1y="12.045454545454547" cp2x="13.90909090909091" cp2y="12.045454545454547"/>
+                                          <point x="5.318181818181818" y="11.81818181818182" cp1x="5.318181818181818" cp1y="11.81818181818182" cp2x="5.318181818181818" cp2y="11.81818181818182"/>
+                                          <point x="5.409090909090909" y="6.954545454545454" cp1x="5.409090909090909" cp1y="6.954545454545454" cp2x="5.409090909090909" cp2y="6.954545454545454"/>
+                                          <point x="13.795454545454543" y="6.931818181818181" cp1x="13.795454545454543" cp1y="6.931818181818181" cp2x="13.795454545454543" cp2y="6.931818181818181"/>
+                                          <point x="13.727272727272734" y="5.2272727272727275" cp1x="13.727272727272734" cp1y="5.2272727272727275" cp2x="13.727272727272734" cp2y="5.2272727272727275"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="187" green="193" blue="120" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009822637" saturationOffset="-0.34243205" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="141" green="151" blue="27" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009564877" saturationOffset="0.100521624" brightnessOffset="-0.109803915" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="138" green="149" blue="22" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="0.13167858" brightnessOffset="-0.11764705" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="165" green="176" blue="49" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="9.2053413E-4" brightnessOffset="-0.011764705" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="0" green="19" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.1627907" saturationOffset="0.2793296" brightnessOffset="-0.627451" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="59" green="84" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.04572721" saturationOffset="0.2793296" brightnessOffset="-0.37254903" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="204" green="211" blue="227" alpha="154" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.004830897" saturationOffset="-0.00920473" brightnessOffset="0.14509803" alphaOffset="-101"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc0c6be3.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Pressed+WindowNotFocused">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>6</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 5">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
+                                          <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
+                                          <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
+                                          <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
+                                          <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
+                                          <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
+                                          <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="19" green="48" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="3.636363636363636" y="5.25" cp1x="3.636363636363636" cp1y="5.25" cp2x="3.636363636363636" cp2y="5.25"/>
+                                          <point x="3.6590909090909083" y="13.431818181818185" cp1x="3.6590909090909083" cp1y="13.431818181818185" cp2x="3.6590909090909083" cp2y="13.431818181818185"/>
+                                          <point x="15.500000000000004" y="13.40909090909091" cp1x="15.500000000000004" cp1y="13.40909090909091" cp2x="15.500000000000004" cp2y="13.40909090909091"/>
+                                          <point x="15.56818181818182" y="5.25" cp1x="15.56818181818182" cp1y="5.25" cp2x="15.56818181818182" cp2y="5.25"/>
+                                          <point x="13.727272727272725" y="5.25" cp1x="13.727272727272725" cp1y="5.25" cp2x="13.727272727272725" cp2y="5.25"/>
+                                          <point x="13.90909090909091" y="12.045454545454547" cp1x="13.90909090909091" cp1y="12.045454545454547" cp2x="13.90909090909091" cp2y="12.045454545454547"/>
+                                          <point x="5.318181818181818" y="11.81818181818182" cp1x="5.318181818181818" cp1y="11.81818181818182" cp2x="5.318181818181818" cp2y="11.81818181818182"/>
+                                          <point x="5.409090909090909" y="6.954545454545454" cp1x="5.409090909090909" cp1y="6.954545454545454" cp2x="5.409090909090909" cp2y="6.954545454545454"/>
+                                          <point x="13.795454545454543" y="6.931818181818181" cp1x="13.795454545454543" cp1y="6.931818181818181" cp2x="13.795454545454543" cp2y="6.931818181818181"/>
+                                          <point x="13.727272727272734" y="5.2272727272727275" cp1x="13.727272727272734" cp1y="5.2272727272727275" cp2x="13.727272727272734" cp2y="5.2272727272727275"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="123" green="139" blue="72" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03592503" saturationOffset="-0.23865601" brightnessOffset="-0.15686274" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="74" green="96" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.035979107" saturationOffset="0.23766291" brightnessOffset="-0.3254902" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.79341316" midpoint="0.5">
+                                             <matte red="71" green="94" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03690417" saturationOffset="0.2793296" brightnessOffset="-0.33333334" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="86" green="109" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03129223" saturationOffset="0.2793296" brightnessOffset="-0.27450982" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.17054264" saturationOffset="-0.7206704" brightnessOffset="-0.7019608" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="30" green="59" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.07804492" saturationOffset="0.2793296" brightnessOffset="-0.47058827" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="190" green="197" blue="212" alpha="190" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0025252104" saturationOffset="-0.0067527294" brightnessOffset="0.086274505" alphaOffset="-65"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc1017c9.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                     </backgroundStates>
+                     <foregroundStates/>
+                     <borderStates/>
+                     <regions/>
+                  </uiComponent>
+                  <uiComponent opaque="false" componentName="InternalFrameTitlePane.closeButton" type="javax.swing.JButton" name="Button" ui="ButtonUI" subregion="true">
+                     <stateTypes>
+                        <stateType key="Enabled"/>
+                        <stateType key="MouseOver"/>
+                        <stateType key="Pressed"/>
+                        <stateType key="Disabled"/>
+                        <stateType key="Focused"/>
+                        <stateType key="Selected"/>
+                        <stateType key="WindowNotFocused">
+                           <codeSnippet><![CDATA[
+                               Component parent = c;
+                               while (parent.getParent() != null) {
+                                   if (parent instanceof JInternalFrame) {
+                                       break;
+                                   }
+                                   parent = parent.getParent();
+                               }
+                               if (parent instanceof JInternalFrame) {
+                                   return !(((JInternalFrame)parent).isSelected());
+                               }
+                               return false;]]></codeSnippet>
+                        </stateType>
+                     </stateTypes>
+                     <contentMargins top="9" bottom="9" left="9" right="9"/>
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheSettingsInherited>false</cacheSettingsInherited>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <backgroundStates>
+                        <state stateKeys="Disabled">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>4</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 3">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="198" green="201" blue="208" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.062449392" brightnessOffset="0.07058823" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
+                                          <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
+                                          <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
+                                          <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
+                                          <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
+                                          <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
+                                          <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
+                                          <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
+                                          <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
+                                          <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
+                                          <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
+                                          <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="152" green="156" blue="165" alpha="133" uiDefaultParentName="nimbusRed" hueOffset="0.6005698" saturationOffset="-0.7200287" brightnessOffset="-0.015686274" alphaOffset="-122"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.749999999999998" y="13.27272727272728" cp1x="4.749999999999998" cp1y="13.27272727272728" cp2x="4.749999999999998" cp2y="13.27272727272728"/>
+                                          <point x="5.704545454545453" y="14.295454545454552" cp1x="5.704545454545453" cp1y="14.295454545454552" cp2x="5.704545454545453" cp2y="14.295454545454552"/>
+                                          <point x="9.590909090909095" y="10.636363636363644" cp1x="9.590909090909095" cp1y="10.636363636363644" cp2x="9.590909090909095" cp2y="10.636363636363644"/>
+                                          <point x="13.000000000000005" y="14.318181818181825" cp1x="13.000000000000005" cp1y="14.318181818181825" cp2x="13.000000000000005" cp2y="14.318181818181825"/>
+                                          <point x="14.431818181818185" y="12.954545454545462" cp1x="14.431818181818185" cp1y="12.954545454545462" cp2x="14.431818181818185" cp2y="12.954545454545462"/>
+                                          <point x="11.318181818181822" y="9.431818181818189" cp1x="11.318181818181822" cp1y="9.431818181818189" cp2x="11.318181818181822" cp2y="9.431818181818189"/>
+                                          <point x="14.318181818181822" y="6.136363636363636" cp1x="14.318181818181822" cp1y="6.136363636363636" cp2x="14.318181818181822" cp2y="6.136363636363636"/>
+                                          <point x="12.977272727272732" y="4.5681818181818175" cp1x="12.977272727272732" cp1y="4.5681818181818175" cp2x="12.977272727272732" cp2y="4.5681818181818175"/>
+                                          <point x="9.659090909090912" y="7.931818181818182" cp1x="9.659090909090912" cp1y="7.931818181818182" cp2x="9.659090909090912" cp2y="7.931818181818182"/>
+                                          <point x="6.272727272727272" y="4.613636363636363" cp1x="6.272727272727272" cp1y="4.613636363636363" cp2x="6.272727272727272" cp2y="4.613636363636363"/>
+                                          <point x="4.886363636363635" y="5.977272727272727" cp1x="4.886363636363635" cp1y="5.977272727272727" cp2x="4.886363636363635" cp2y="5.977272727272727"/>
+                                          <point x="8.113636363636365" y="9.454545454545467" cp1x="8.113636363636365" cp1y="9.454545454545467" cp2x="8.113636363636365" cp2y="9.454545454545467"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="185" green="188" blue="193" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5893519" saturationOffset="-0.75736576" brightnessOffset="0.09411764" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5962963" saturationOffset="-0.71005917" brightnessOffset="0.0" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc2cb661.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Enabled">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>4</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 3">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
+                                          <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
+                                          <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
+                                          <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
+                                          <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
+                                          <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
+                                          <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
+                                          <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
+                                          <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
+                                          <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
+                                          <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
+                                          <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="71" green="21" blue="14" alpha="133" uiDefaultParentName="nimbusRed" hueOffset="0.0056530247" saturationOffset="0.0040003657" brightnessOffset="-0.38431373" alphaOffset="-122"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.749999999999998" y="13.27272727272728" cp1x="4.749999999999998" cp1y="13.27272727272728" cp2x="4.749999999999998" cp2y="13.27272727272728"/>
+                                          <point x="5.704545454545453" y="14.295454545454552" cp1x="5.704545454545453" cp1y="14.295454545454552" cp2x="5.704545454545453" cp2y="14.295454545454552"/>
+                                          <point x="9.590909090909095" y="10.636363636363644" cp1x="9.590909090909095" cp1y="10.636363636363644" cp2x="9.590909090909095" cp2y="10.636363636363644"/>
+                                          <point x="13.000000000000005" y="14.318181818181825" cp1x="13.000000000000005" cp1y="14.318181818181825" cp2x="13.000000000000005" cp2y="14.318181818181825"/>
+                                          <point x="14.431818181818185" y="12.954545454545462" cp1x="14.431818181818185" cp1y="12.954545454545462" cp2x="14.431818181818185" cp2y="12.954545454545462"/>
+                                          <point x="11.318181818181822" y="9.431818181818189" cp1x="11.318181818181822" cp1y="9.431818181818189" cp2x="11.318181818181822" cp2y="9.431818181818189"/>
+                                          <point x="14.318181818181822" y="6.136363636363636" cp1x="14.318181818181822" cp1y="6.136363636363636" cp2x="14.318181818181822" cp2y="6.136363636363636"/>
+                                          <point x="12.977272727272732" y="4.5681818181818175" cp1x="12.977272727272732" cp1y="4.5681818181818175" cp2x="12.977272727272732" cp2y="4.5681818181818175"/>
+                                          <point x="9.659090909090912" y="7.931818181818182" cp1x="9.659090909090912" cp1y="7.931818181818182" cp2x="9.659090909090912" cp2y="7.931818181818182"/>
+                                          <point x="6.272727272727272" y="4.613636363636363" cp1x="6.272727272727272" cp1y="4.613636363636363" cp2x="6.272727272727272" cp2y="4.613636363636363"/>
+                                          <point x="4.886363636363635" y="5.977272727272727" cp1x="4.886363636363635" cp1y="5.977272727272727" cp2x="4.886363636363635" cp2y="5.977272727272727"/>
+                                          <point x="8.113636363636365" y="9.454545454545467" cp1x="8.113636363636365" cp1y="9.454545454545467" cp2x="8.113636363636365" cp2y="9.454545454545467"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="1.0" x2="18.0" y1="0.9545454545454546" y2="15.954545454545455" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="199" green="121" blue="113" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="6.890595E-4" saturationOffset="-0.36665577" brightnessOffset="0.11764705" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="161" green="28" blue="16" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.001021713" saturationOffset="0.101804554" brightnessOffset="-0.031372547" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="160" green="24" blue="11" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="0.13243341" brightnessOffset="-0.035294116" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="186" green="50" blue="37" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="0.002258718" brightnessOffset="0.06666666" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="56" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.4431373" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="159" green="23" blue="10" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="0.13829035" brightnessOffset="-0.039215684" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113e1ff5a78.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="MouseOver">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>4</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 3">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
+                                          <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
+                                          <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
+                                          <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
+                                          <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
+                                          <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
+                                          <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
+                                          <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
+                                          <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
+                                          <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
+                                          <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
+                                          <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="170" green="0" blue="0" alpha="133" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="0.0039215684" alphaOffset="-122"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.749999999999998" y="13.27272727272728" cp1x="4.749999999999998" cp1y="13.27272727272728" cp2x="4.749999999999998" cp2y="13.27272727272728"/>
+                                          <point x="5.704545454545453" y="14.295454545454552" cp1x="5.704545454545453" cp1y="14.295454545454552" cp2x="5.704545454545453" cp2y="14.295454545454552"/>
+                                          <point x="9.590909090909095" y="10.636363636363644" cp1x="9.590909090909095" cp1y="10.636363636363644" cp2x="9.590909090909095" cp2y="10.636363636363644"/>
+                                          <point x="13.000000000000005" y="14.318181818181825" cp1x="13.000000000000005" cp1y="14.318181818181825" cp2x="13.000000000000005" cp2y="14.318181818181825"/>
+                                          <point x="14.431818181818185" y="12.954545454545462" cp1x="14.431818181818185" cp1y="12.954545454545462" cp2x="14.431818181818185" cp2y="12.954545454545462"/>
+                                          <point x="11.318181818181822" y="9.431818181818189" cp1x="11.318181818181822" cp1y="9.431818181818189" cp2x="11.318181818181822" cp2y="9.431818181818189"/>
+                                          <point x="14.318181818181822" y="6.136363636363636" cp1x="14.318181818181822" cp1y="6.136363636363636" cp2x="14.318181818181822" cp2y="6.136363636363636"/>
+                                          <point x="12.977272727272732" y="4.5681818181818175" cp1x="12.977272727272732" cp1y="4.5681818181818175" cp2x="12.977272727272732" cp2y="4.5681818181818175"/>
+                                          <point x="9.659090909090912" y="7.931818181818182" cp1x="9.659090909090912" cp1y="7.931818181818182" cp2x="9.659090909090912" cp2y="7.931818181818182"/>
+                                          <point x="6.272727272727272" y="4.613636363636363" cp1x="6.272727272727272" cp1y="4.613636363636363" cp2x="6.272727272727272" cp2y="4.613636363636363"/>
+                                          <point x="4.886363636363635" y="5.977272727272727" cp1x="4.886363636363635" cp1y="5.977272727272727" cp2x="4.886363636363635" cp2y="5.977272727272727"/>
+                                          <point x="8.113636363636365" y="9.454545454545467" cp1x="8.113636363636365" cp1y="9.454545454545467" cp2x="8.113636363636365" cp2y="9.454545454545467"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="1.0" x2="18.0" y1="0.9318181818181819" y2="15.931818181818182" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="210" green="132" blue="124" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="6.890595E-4" saturationOffset="-0.38929275" brightnessOffset="0.1607843" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="180" green="47" blue="34" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="2.537202E-5" saturationOffset="0.012294531" brightnessOffset="0.043137252" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="179" green="43" blue="30" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="0.033585668" brightnessOffset="0.039215684" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.97904193" midpoint="0.5">
+                                             <matte red="205" green="69" blue="56" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="-0.07198727" brightnessOffset="0.14117646" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="70" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.3882353" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="135" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.13333333" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc301011.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Pressed">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>4</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 3">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
+                                          <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
+                                          <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
+                                          <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
+                                          <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
+                                          <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
+                                          <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
+                                          <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
+                                          <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
+                                          <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
+                                          <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
+                                          <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="88" green="0" blue="0" alpha="133" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.31764707" alphaOffset="-122"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.749999999999998" y="13.27272727272728" cp1x="4.749999999999998" cp1y="13.27272727272728" cp2x="4.749999999999998" cp2y="13.27272727272728"/>
+                                          <point x="5.704545454545453" y="14.295454545454552" cp1x="5.704545454545453" cp1y="14.295454545454552" cp2x="5.704545454545453" cp2y="14.295454545454552"/>
+                                          <point x="9.590909090909095" y="10.636363636363644" cp1x="9.590909090909095" cp1y="10.636363636363644" cp2x="9.590909090909095" cp2y="10.636363636363644"/>
+                                          <point x="13.000000000000005" y="14.318181818181825" cp1x="13.000000000000005" cp1y="14.318181818181825" cp2x="13.000000000000005" cp2y="14.318181818181825"/>
+                                          <point x="14.431818181818185" y="12.954545454545462" cp1x="14.431818181818185" cp1y="12.954545454545462" cp2x="14.431818181818185" cp2y="12.954545454545462"/>
+                                          <point x="11.318181818181822" y="9.431818181818189" cp1x="11.318181818181822" cp1y="9.431818181818189" cp2x="11.318181818181822" cp2y="9.431818181818189"/>
+                                          <point x="14.318181818181822" y="6.136363636363636" cp1x="14.318181818181822" cp1y="6.136363636363636" cp2x="14.318181818181822" cp2y="6.136363636363636"/>
+                                          <point x="12.977272727272732" y="4.5681818181818175" cp1x="12.977272727272732" cp1y="4.5681818181818175" cp2x="12.977272727272732" cp2y="4.5681818181818175"/>
+                                          <point x="9.659090909090912" y="7.931818181818182" cp1x="9.659090909090912" cp1y="7.931818181818182" cp2x="9.659090909090912" cp2y="7.931818181818182"/>
+                                          <point x="6.272727272727272" y="4.613636363636363" cp1x="6.272727272727272" cp1y="4.613636363636363" cp2x="6.272727272727272" cp2y="4.613636363636363"/>
+                                          <point x="4.886363636363635" y="5.977272727272727" cp1x="4.886363636363635" cp1y="5.977272727272727" cp2x="4.886363636363635" cp2y="5.977272727272727"/>
+                                          <point x="8.113636363636365" y="9.454545454545467" cp1x="8.113636363636365" cp1y="9.454545454545467" cp2x="8.113636363636365" cp2y="9.454545454545467"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="1.0" x2="18.0" y1="0.9545454545454546" y2="15.954545454545455" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="174" green="72" blue="72" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="-0.21260965" brightnessOffset="0.019607842" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="144" green="4" blue="4" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.17340565" brightnessOffset="-0.09803921" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="142" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.10588235" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.98203593" midpoint="0.5">
+                                             <matte red="157" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.04705882" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="43" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.49411768" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="117" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.20392159" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="255" green="255" blue="255" alpha="115" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-140"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc32c397.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Enabled+WindowNotFocused">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>4</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 3">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="100" green="103" blue="109" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.027957506" brightnessOffset="-0.31764707" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
+                                          <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
+                                          <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
+                                          <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
+                                          <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
+                                          <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
+                                          <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
+                                          <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
+                                          <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
+                                          <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
+                                          <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
+                                          <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="1.0" x2="18.0" y1="0.9545454545454546" y2="15.954545454545455" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="219" green="221" blue="224" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.58518517" saturationOffset="-0.77649516" brightnessOffset="0.21568626" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.48203593" midpoint="0.5">
+                                             <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5962963" saturationOffset="-0.7372781" brightnessOffset="0.10196078" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6856288" midpoint="0.5">
+                                             <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5962963" saturationOffset="-0.7372781" brightnessOffset="0.10196078" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="189" green="193" blue="201" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5962963" saturationOffset="-0.73911506" brightnessOffset="0.12549019" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="136" green="141" blue="151" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5962963" saturationOffset="-0.6994788" brightnessOffset="-0.07058823" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="95" green="100" blue="110" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5962963" saturationOffset="-0.66245294" brightnessOffset="-0.23137257" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc34f80e.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="MouseOver+WindowNotFocused">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>4</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 3">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
+                                          <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
+                                          <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
+                                          <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
+                                          <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
+                                          <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
+                                          <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
+                                          <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
+                                          <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
+                                          <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
+                                          <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
+                                          <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="170" green="0" blue="0" alpha="133" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="0.0039215684" alphaOffset="-122"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.749999999999998" y="13.27272727272728" cp1x="4.749999999999998" cp1y="13.27272727272728" cp2x="4.749999999999998" cp2y="13.27272727272728"/>
+                                          <point x="5.704545454545453" y="14.295454545454552" cp1x="5.704545454545453" cp1y="14.295454545454552" cp2x="5.704545454545453" cp2y="14.295454545454552"/>
+                                          <point x="9.590909090909095" y="10.636363636363644" cp1x="9.590909090909095" cp1y="10.636363636363644" cp2x="9.590909090909095" cp2y="10.636363636363644"/>
+                                          <point x="13.000000000000005" y="14.318181818181825" cp1x="13.000000000000005" cp1y="14.318181818181825" cp2x="13.000000000000005" cp2y="14.318181818181825"/>
+                                          <point x="14.431818181818185" y="12.954545454545462" cp1x="14.431818181818185" cp1y="12.954545454545462" cp2x="14.431818181818185" cp2y="12.954545454545462"/>
+                                          <point x="11.318181818181822" y="9.431818181818189" cp1x="11.318181818181822" cp1y="9.431818181818189" cp2x="11.318181818181822" cp2y="9.431818181818189"/>
+                                          <point x="14.318181818181822" y="6.136363636363636" cp1x="14.318181818181822" cp1y="6.136363636363636" cp2x="14.318181818181822" cp2y="6.136363636363636"/>
+                                          <point x="12.977272727272732" y="4.5681818181818175" cp1x="12.977272727272732" cp1y="4.5681818181818175" cp2x="12.977272727272732" cp2y="4.5681818181818175"/>
+                                          <point x="9.659090909090912" y="7.931818181818182" cp1x="9.659090909090912" cp1y="7.931818181818182" cp2x="9.659090909090912" cp2y="7.931818181818182"/>
+                                          <point x="6.272727272727272" y="4.613636363636363" cp1x="6.272727272727272" cp1y="4.613636363636363" cp2x="6.272727272727272" cp2y="4.613636363636363"/>
+                                          <point x="4.886363636363635" y="5.977272727272727" cp1x="4.886363636363635" cp1y="5.977272727272727" cp2x="4.886363636363635" cp2y="5.977272727272727"/>
+                                          <point x="8.113636363636365" y="9.454545454545467" cp1x="8.113636363636365" cp1y="9.454545454545467" cp2x="8.113636363636365" cp2y="9.454545454545467"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="1.0" x2="18.0" y1="0.9318181818181819" y2="15.931818181818182" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="210" green="132" blue="124" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="6.890595E-4" saturationOffset="-0.38929275" brightnessOffset="0.1607843" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="180" green="47" blue="34" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="2.537202E-5" saturationOffset="0.012294531" brightnessOffset="0.043137252" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="179" green="43" blue="30" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="0.033585668" brightnessOffset="0.039215684" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.97904193" midpoint="0.5">
+                                             <matte red="205" green="69" blue="56" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="-0.07198727" brightnessOffset="0.14117646" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="70" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.3882353" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="135" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.13333333" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc301011.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Pressed+WindowNotFocused">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="19" height="18"/>
+                              <nextLayerNameIndex>4</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 3">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
+                                          <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
+                                          <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
+                                          <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
+                                          <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
+                                          <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
+                                          <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
+                                          <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
+                                          <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
+                                          <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
+                                          <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
+                                          <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="88" green="0" blue="0" alpha="133" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.31764707" alphaOffset="-122"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="4.749999999999998" y="13.27272727272728" cp1x="4.749999999999998" cp1y="13.27272727272728" cp2x="4.749999999999998" cp2y="13.27272727272728"/>
+                                          <point x="5.704545454545453" y="14.295454545454552" cp1x="5.704545454545453" cp1y="14.295454545454552" cp2x="5.704545454545453" cp2y="14.295454545454552"/>
+                                          <point x="9.590909090909095" y="10.636363636363644" cp1x="9.590909090909095" cp1y="10.636363636363644" cp2x="9.590909090909095" cp2y="10.636363636363644"/>
+                                          <point x="13.000000000000005" y="14.318181818181825" cp1x="13.000000000000005" cp1y="14.318181818181825" cp2x="13.000000000000005" cp2y="14.318181818181825"/>
+                                          <point x="14.431818181818185" y="12.954545454545462" cp1x="14.431818181818185" cp1y="12.954545454545462" cp2x="14.431818181818185" cp2y="12.954545454545462"/>
+                                          <point x="11.318181818181822" y="9.431818181818189" cp1x="11.318181818181822" cp1y="9.431818181818189" cp2x="11.318181818181822" cp2y="9.431818181818189"/>
+                                          <point x="14.318181818181822" y="6.136363636363636" cp1x="14.318181818181822" cp1y="6.136363636363636" cp2x="14.318181818181822" cp2y="6.136363636363636"/>
+                                          <point x="12.977272727272732" y="4.5681818181818175" cp1x="12.977272727272732" cp1y="4.5681818181818175" cp2x="12.977272727272732" cp2y="4.5681818181818175"/>
+                                          <point x="9.659090909090912" y="7.931818181818182" cp1x="9.659090909090912" cp1y="7.931818181818182" cp2x="9.659090909090912" cp2y="7.931818181818182"/>
+                                          <point x="6.272727272727272" y="4.613636363636363" cp1x="6.272727272727272" cp1y="4.613636363636363" cp2x="6.272727272727272" cp2y="4.613636363636363"/>
+                                          <point x="4.886363636363635" y="5.977272727272727" cp1x="4.886363636363635" cp1y="5.977272727272727" cp2x="4.886363636363635" cp2y="5.977272727272727"/>
+                                          <point x="8.113636363636365" y="9.454545454545467" cp1x="8.113636363636365" cp1y="9.454545454545467" cp2x="8.113636363636365" cp2y="9.454545454545467"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="1.0" x2="18.0" y1="0.9545454545454546" y2="15.954545454545455" rounding="6.749999999999993">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="174" green="72" blue="72" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="-0.21260965" brightnessOffset="0.019607842" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.53977275" midpoint="0.5">
+                                             <matte red="144" green="4" blue="4" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.17340565" brightnessOffset="-0.09803921" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.6505682" midpoint="0.5">
+                                             <matte red="142" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.10588235" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.98203593" midpoint="0.5">
+                                             <matte red="157" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.04705882" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="43" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.49411768" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="117" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.20392159" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
+                                       <matte red="255" green="255" blue="255" alpha="115" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-140"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fc32c397.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                        </state>
+                     </backgroundStates>
+                     <foregroundStates/>
+                     <borderStates/>
+                     <regions/>
+                  </uiComponent>
+               </regions>
+            </region>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JInternalFrame.JDesktopIcon" name="DesktopIcon" ui="DesktopIconUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="4" bottom="5" left="6" right="4"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="28" height="26"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="4.0" x2="25.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.24">
+                                 <matte red="227" green="229" blue="232" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.088974595" brightnessOffset="0.16470587" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="170" green="175" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.029445238" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="27.0" y1="1.0" y2="23.0" rounding="3.1000000000000005">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="240" green="241" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.102261856" brightnessOffset="0.20392156" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="204" green="207" blue="213" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0682728" brightnessOffset="0.09019607" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="27.0" y1="0.0" y2="24.0" rounding="4.833333333333331">
+                           <matte red="43" green="46" blue="51" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02551502" saturationOffset="-0.47885156" brightnessOffset="-0.34901965" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JDesktopPane" name="DesktopPane" ui="DesktopPaneUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="300" height="232"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="49" green="81" blue="102" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.012613952" saturationOffset="-0.11610645" brightnessOffset="-0.14901963" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="35" green="62" blue="84" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0038217902" saturationOffset="-0.05238098" brightnessOffset="-0.21960786" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="0.0" y="232.0" cp1x="0.0" cp1y="232.0" cp2x="0.0" cp2y="232.0"/>
+                              <point x="0.0" y="138.5" cp1x="0.0" cp1y="138.5" cp2x="0.0" cp2y="138.5"/>
+                              <point x="22.0" y="185.0" cp1x="12.0" cp1y="165.5" cp2x="32.0" cp2y="204.5"/>
+                              <point x="50.0" y="232.0" cp1x="50.0" cp1y="231.5" cp2x="50.0" cp2y="232.5"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="70" green="110" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.004577577" saturationOffset="-0.12867206" brightnessOffset="0.007843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="35" green="63" blue="86" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0034883022" saturationOffset="-0.042691052" brightnessOffset="-0.21176472" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="82.0" y="232.0" cp1x="82.0" cp1y="232.0" cp2x="82.0" cp2y="232.0"/>
+                              <point x="79.0" y="153.0" cp1x="84.0" cp1y="190.0" cp2x="74.0" cp2y="116.0"/>
+                              <point x="58.0" y="52.0" cp1x="67.0" cp1y="85.5" cp2x="49.0" cp2y="18.5"/>
+                              <point x="40.0" y="0.0" cp1x="40.0" cp1y="0.0" cp2x="40.0" cp2y="0.0"/>
+                              <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                              <point x="0.0" y="142.0" cp1x="0.0" cp1y="142.0" cp2x="0.0" cp2y="142.0"/>
+                              <point x="45.0" y="232.0" cp1x="45.0" cp1y="231.5" cp2x="45.0" cp2y="232.5"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="55" green="88" blue="112" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.008476257" saturationOffset="-0.1267857" brightnessOffset="-0.109803945" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="53" green="85" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.008954704" saturationOffset="-0.12645501" brightnessOffset="-0.12549022" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.35483870967741926" y1="0.1142857142857143" x2="0.4838709677419357" y2="0.980952380952381"/>
+                           <points>
+                              <point x="182.0" y="232.0" cp1x="182.0" cp1y="232.0" cp2x="182.0" cp2y="232.0"/>
+                              <point x="192.0" y="204.5" cp1x="185.0" cp1y="221.5" cp2x="199.0" cp2y="187.5"/>
+                              <point x="203.25" y="179.75" cp1x="203.25" cp1y="179.75" cp2x="203.25" cp2y="179.75"/>
+                              <point x="222.5" y="205.0" cp1x="211.5" cp1y="190.0" cp2x="233.5" cp2y="220.0"/>
+                              <point x="244.0" y="232.0" cp1x="244.0" cp1y="231.5" cp2x="244.0" cp2y="232.5"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="61" green="96" blue="121" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.009207249" saturationOffset="-0.13984653" brightnessOffset="-0.07450983" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="54" green="86" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.010750473" saturationOffset="-0.13571429" brightnessOffset="-0.12549022" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.3511235955056181" y1="0.09326424870466325" x2="0.33426966292134835" y2="0.9846153846153847"/>
+                           <points>
+                              <point x="156.5" y="232.0" cp1x="156.5" cp1y="232.0" cp2x="156.5" cp2y="232.0"/>
+                              <point x="166.5" y="180.5" cp1x="164.5" cp1y="203.0" cp2x="168.5" cp2y="158.0"/>
+                              <point x="170.5" y="133.75" cp1x="170.5" cp1y="133.75" cp2x="170.5" cp2y="133.75"/>
+                              <point x="203.25" y="179.75" cp1x="203.25" cp1y="179.75" cp2x="203.25" cp2y="179.75"/>
+                              <point x="195.25" y="207.0" cp1x="201.25" cp1y="193.0" cp2x="189.25" cp2y="221.0"/>
+                              <point x="182.5" y="232.0" cp1x="182.5" cp1y="232.0" cp2x="182.5" cp2y="232.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="57" green="94" blue="127" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-8.028746E-5" saturationOffset="-0.084533215" brightnessOffset="-0.05098042" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="57" green="92" blue="115" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.012559712" saturationOffset="-0.13136649" brightnessOffset="-0.09803924" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.8659695817490493" y1="0.011049723756906077" x2="0.24809885931558942" y2="0.9502762430939229"/>
+                           <points>
+                              <point x="170.5" y="134.5" cp1x="170.5" cp1y="134.5" cp2x="170.5" cp2y="134.5"/>
+                              <point x="172.5" y="55.5" cp1x="172.5" cp1y="88.5" cp2x="172.5" cp2y="22.5"/>
+                              <point x="168.5" y="0.0" cp1x="168.5" cp1y="0.0" cp2x="168.5" cp2y="0.0"/>
+                              <point x="300.0" y="0.0" cp1x="300.0" cp1y="0.0" cp2x="300.0" cp2y="0.0"/>
+                              <point x="300.0" y="46.0" cp1x="300.0" cp1y="46.0" cp2x="300.0" cp2y="46.0"/>
+                              <point x="242.0" y="117.0" cp1x="269.5" cp1y="78.5" cp2x="214.5" cp2y="155.5"/>
+                              <point x="203.0" y="180.5" cp1x="203.0" cp1y="180.5" cp2x="203.0" cp2y="180.5"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="57" green="94" blue="127" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-8.028746E-5" saturationOffset="-0.084533215" brightnessOffset="-0.05098042" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="56" green="89" blue="115" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0052053332" saturationOffset="-0.12267083" brightnessOffset="-0.09803924" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.8353658536585367" y2="0.9522058823529412"/>
+                           <points>
+                              <point x="101.5" y="0.0" cp1x="101.5" cp1y="0.0" cp2x="101.5" cp2y="0.0"/>
+                              <point x="132.5" y="72.0" cp1x="111.5" cp1y="34.5" cp2x="153.5" cp2y="109.5"/>
+                              <point x="172.0" y="135.5" cp1x="172.0" cp1y="135.5" cp2x="172.0" cp2y="135.5"/>
+                              <point x="182.0" y="56.0" cp1x="183.5" cp1y="85.5" cp2x="180.5" cp2y="26.5"/>
+                              <point x="181.5" y="0.0" cp1x="181.5" cp1y="0.0" cp2x="181.5" cp2y="0.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <matte red="255" green="200" blue="0" alpha="6" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="170.0" y="0.0" cp1x="170.0" cp1y="0.0" cp2x="170.0" cp2y="0.0"/>
+                              <point x="170.0" y="132.0" cp1x="170.0" cp1y="132.0" cp2x="170.0" cp2y="132.0"/>
+                              <point x="202.5" y="179.0" cp1x="202.5" cp1y="179.0" cp2x="202.5" cp2y="179.0"/>
+                              <point x="243.5" y="115.5" cp1x="220.0" cp1y="149.0" cp2x="267.0" cp2y="82.0"/>
+                              <point x="300.0" y="46.5" cp1x="300.0" cp1y="46.5" cp2x="300.0" cp2y="46.5"/>
+                              <point x="300.0" y="0.0" cp1x="300.0" cp1y="0.0" cp2x="300.0" cp2y="0.0"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="48" green="83" blue="114" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.6883354E-4" saturationOffset="-0.056766927" brightnessOffset="-0.10196081" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="53" green="85" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.008954704" saturationOffset="-0.12645501" brightnessOffset="-0.12549022" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.9567307692307692" y1="0.06835443037974684" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="236.5" y="232.0" cp1x="236.5" cp1y="231.5" cp2x="236.5" cp2y="232.5"/>
+                              <point x="196.0" y="179.5" cp1x="196.0" cp1y="179.5" cp2x="196.0" cp2y="179.5"/>
+                              <point x="300.0" y="34.0" cp1x="300.0" cp1y="34.0" cp2x="300.0" cp2y="34.0"/>
+                              <point x="300.0" y="232.0" cp1x="300.0" cp1y="231.5" cp2x="300.5" cp2y="232.5"/>
+                           </points>
+                        </path>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="70" green="110" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.004577577" saturationOffset="-0.12867206" brightnessOffset="0.007843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="43" green="73" blue="96" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0063245893" saturationOffset="-0.08363098" brightnessOffset="-0.17254904" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="81.5" y="232.0" cp1x="81.5" cp1y="231.5" cp2x="81.5" cp2y="232.5"/>
+                              <point x="38.5" y="0.0" cp1x="38.5" cp1y="0.0" cp2x="38.5" cp2y="0.0"/>
+                              <point x="105.5" y="0.0" cp1x="105.5" cp1y="0.0" cp2x="105.5" cp2y="0.0"/>
+                              <point x="176.0" y="133.5" cp1x="176.0" cp1y="133.5" cp2x="176.0" cp2y="133.5"/>
+                              <point x="162.5" y="232.0" cp1x="162.5" cp1y="232.0" cp2x="162.5" cp2y="232.0"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113e0997434.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>true</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JList" name="List" ui="ListUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background>
+               <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+            </background>
+            <inherit-background>false</inherit-background>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties>
+               <uiProperty name="rendererUseListColors" type="BOOLEAN" value="true"/>
+               <uiProperty name="rendererUseUIBorder" type="BOOLEAN" value="true"/>
+               <uiProperty name="cellNoFocusBorder" type="BORDER">
+                   <border type="empty" top="2" left="5" bottom="2" right="5"/>
+               </uiProperty>
+               <uiProperty name="focusCellHighlightBorder" type="BORDER">
+                   <border type="painter" painter="Tree:TreeCell[Enabled+Focused].backgroundPainter" top="2" left="5" bottom="2" right="5" />
+               </uiProperty>
+               <uiProperty name="dropLineColor" type="COLOR">
+                  <matte red="242" green="242" blue="242" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0" alphaOffset="0"/>
+               </uiProperty>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Selected">
+                <style>
+                   <textForeground>
+                      <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+                   </textForeground>
+                   <textBackground>
+                      <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+                   </textBackground>
+                   <background/>
+                   <inherit-textForeground>false</inherit-textForeground>
+                   <inherit-textBackground>false</inherit-textBackground>
+                   <uiproperties/>
+                </style>
+                <canvas>
+                   <size width="100" height="30"/>
+                   <nextLayerNameIndex>2</nextLayerNameIndex>
+                   <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                   <layer name="Layer 1">
+                      <opacity>1.0</opacity>
+                      <fillOpacity>1.0</fillOpacity>
+                      <blendingMode>NORMAL</blendingMode>
+                      <locked>false</locked>
+                      <visible>true</visible>
+                      <shapes/>
+                      <effects/>
+                   </layer>
+                </canvas>
+            </state>
+            <state stateKeys="Disabled+Selected">
+                <style>
+                   <textForeground/>
+                   <textBackground>
+                       <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+                   </textBackground>
+                   <background/>
+                   <inherit-textBackground>false</inherit-textBackground>
+                   <uiproperties/>
+                </style>
+                <canvas>
+                   <size width="100" height="30"/>
+                   <nextLayerNameIndex>2</nextLayerNameIndex>
+                   <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                   <layer name="Layer 1">
+                      <opacity>1.0</opacity>
+                      <fillOpacity>1.0</fillOpacity>
+                      <blendingMode>NORMAL</blendingMode>
+                      <locked>false</locked>
+                      <visible>true</visible>
+                      <shapes/>
+                      <effects/>
+                   </layer>
+                </canvas>
+            </state>
+            <state stateKeys="Disabled">
+                <style>
+                   <textForeground>
+                      <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+                   </textForeground>
+                   <textBackground/>
+                   <background/>
+                   <inherit-textForeground>false</inherit-textForeground>
+                   <uiproperties/>
+                </style>
+                <canvas>
+                   <size width="100" height="30"/>
+                   <nextLayerNameIndex>2</nextLayerNameIndex>
+                   <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                   <layer name="Layer 1">
+                      <opacity>1.0</opacity>
+                      <fillOpacity>1.0</fillOpacity>
+                      <blendingMode>NORMAL</blendingMode>
+                      <locked>false</locked>
+                      <visible>true</visible>
+                      <shapes/>
+                      <effects/>
+                   </layer>
+                </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiComponent opaque="true" componentName="List.cellRenderer" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground>
+                           <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background>
+                           <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+                        </background>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <inherit-background>false</inherit-background>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JMenuBar" name="MenuBar" ui="MenuBarUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="2" bottom="2" left="6" right="6"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="18" height="22"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="1" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="18.0" y1="0.0" y2="22.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="249" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.10255819" brightnessOffset="0.23921567" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.03" midpoint="0.28">
+                                 <matte red="250" green="251" blue="251" alpha="226" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.10654225" brightnessOffset="0.23921567" alphaOffset="-29"/>
+                              </stop>
+                              <stop position="0.7569444" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="0" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-255"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.0" x2="18.0" y1="0.0" y2="21.0" rounding="0.0">
+                           <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                           <paintPoints x1="0.0" y1="0.0" x2="0.0" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113c675ba35.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>true</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="30" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="1" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="30.0" y1="29.0" y2="30.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </borderStates>
+         <regions>
+            <uiComponent opaque="false" type="javax.swing.JMenu" name="Menu" ui="MenuUI" subregion="false">
+               <stateTypes/>
+               <contentMargins top="1" bottom="2" left="4" right="4"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NO_CACHING</cacheMode>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground>
+                           <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground>
+                           <matte red="35" green="35" blue="36" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                                 <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.010750473" saturationOffset="-0.04875779" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                 <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions>
+                  <region name="MenuItemAccelerator" subregion="true">
+                     <contentMargins top="0" bottom="0" left="0" right="0"/>
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <backgroundStates>
+                        <state stateKeys="Disabled">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="80" height="30"/>
+                              <nextLayerNameIndex>2</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes/>
+                                 <effects/>
+                              </layer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="Enabled">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="80" height="30"/>
+                              <nextLayerNameIndex>2</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes/>
+                                 <effects/>
+                              </layer>
+                           </canvas>
+                        </state>
+                        <state stateKeys="MouseOver">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="80" height="30"/>
+                              <nextLayerNameIndex>2</nextLayerNameIndex>
+                              <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes/>
+                                 <effects/>
+                              </layer>
+                           </canvas>
+                        </state>
+                     </backgroundStates>
+                     <foregroundStates/>
+                     <borderStates/>
+                     <regions/>
+                  </region>
+               </regions>
+            </uiComponent>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JMenuItem" name="MenuItem" ui="MenuItemUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="1" bottom="2" left="12" right="13"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties>
+               <uiProperty name="textIconGap" type="INT" value="5"/>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground>
+                     <matte red="35" green="35" blue="36" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="3.0" rounding="0.0">
+                           <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelection" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <region name="MenuItemAccelerator" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground>
+                           <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="80" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheSettingsInherited>false</cacheSettingsInherited>
+                        <cacheMode>NO_CACHING</cacheMode>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="80" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="80" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </region>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JRadioButtonMenuItem" name="RadioButtonMenuItem" ui="RadioButtonMenuItemUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="1" bottom="2" left="12" right="13"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties>
+               <uiProperty name="textIconGap" type="INT" value="5"/>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground>
+                     <matte red="35" green="35" blue="36" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="3.0" rounding="0.0">
+                           <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelection" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Selected+MouseOver">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="3.0" rounding="0.0">
+                           <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelection" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiIconRegion name="checkIcon" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="9" height="10"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08983666" brightnessOffset="-0.17647058" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.487804878048781" cp1x="0.0" cp1y="5.487804878048781" cp2x="0.0" cp2y="5.487804878048781"/>
+                                    <point x="4.548780487804878" y="1.0121951219512197" cp1x="4.548780487804878" cp1y="1.0121951219512197" cp2x="4.548780487804878" cp2y="1.0121951219512197"/>
+                                    <point x="9.0" y="5.51219512195122" cp1x="9.0" cp1y="5.51219512195122" cp2x="9.0" cp2y="5.51219512195122"/>
+                                    <point x="4.536585365853659" y="10.0" cp1x="4.536585365853659" cp1y="10.0" cp2x="4.536585365853659" cp2y="10.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="9" height="10"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="71" green="71" blue="72" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.09663743" brightnessOffset="-0.4627451" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.012195121951219523" y="5.487804878048781" cp1x="0.012195121951219523" cp1y="5.487804878048781" cp2x="0.012195121951219523" cp2y="5.487804878048781"/>
+                                    <point x="4.548780487804878" y="1.0121951219512197" cp1x="4.548780487804878" cp1y="1.0121951219512197" cp2x="4.548780487804878" cp2y="1.0121951219512197"/>
+                                    <point x="9.0" y="5.51219512195122" cp1x="9.0" cp1y="5.51219512195122" cp2x="9.0" cp2y="5.51219512195122"/>
+                                    <point x="4.536585365853659" y="10.0" cp1x="4.536585365853659" cp1y="10.0" cp2x="4.536585365853659" cp2y="10.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113e58e00fd.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="9" height="10"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.012195121951219523" y="5.487804878048781" cp1x="0.012195121951219523" cp1y="5.487804878048781" cp2x="0.012195121951219523" cp2y="5.487804878048781"/>
+                                    <point x="4.548780487804878" y="1.0121951219512197" cp1x="4.548780487804878" cp1y="1.0121951219512197" cp2x="4.548780487804878" cp2y="1.0121951219512197"/>
+                                    <point x="9.0" y="5.51219512195122" cp1x="9.0" cp1y="5.51219512195122" cp2x="9.0" cp2y="5.51219512195122"/>
+                                    <point x="4.536585365853659" y="10.0" cp1x="4.536585365853659" cp1y="10.0" cp2x="4.536585365853659" cp2y="10.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113e593f3d0.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <region name="MenuItemAccelerator" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="80" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="80" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="80" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </region>
+            <uiIconRegion name="Icon" subregion="true" key="icon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NO_CACHING</cacheMode>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheSettingsInherited>false</cacheSettingsInherited>
+                        <cacheMode>NO_CACHING</cacheMode>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="14" height="15"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheSettingsInherited>false</cacheSettingsInherited>
+                        <cacheMode>NO_CACHING</cacheMode>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="14" height="15"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheSettingsInherited>false</cacheSettingsInherited>
+                        <cacheMode>NO_CACHING</cacheMode>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="14" height="15"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JCheckBoxMenuItem" name="CheckBoxMenuItem" ui="CheckBoxMenuItemUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="1" bottom="2" left="12" right="13"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties>
+               <uiProperty name="textIconGap" type="INT" value="5"/>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground>
+                     <matte red="35" green="35" blue="36" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="3.0" rounding="0.0">
+                           <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelection" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Selected+MouseOver">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="3.0" rounding="0.0">
+                           <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelection" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiIconRegion name="checkIcon" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="9" height="10"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08983666" brightnessOffset="-0.17647058" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="5.0" cp2x="0.0" cp2y="5.0"/>
+                                    <point x="2.1463414634146343" y="5.0" cp1x="2.1463414634146343" cp1y="5.0" cp2x="2.1463414634146343" cp2y="5.0"/>
+                                    <point x="3.560975609756098" y="7.390243902439032" cp1x="3.560975609756098" cp1y="7.390243902439032" cp2x="3.560975609756098" cp2y="7.390243902439032"/>
+                                    <point x="6.963414634146344" y="0.0" cp1x="6.963414634146344" cp1y="0.0" cp2x="6.963414634146344" cp2y="0.0"/>
+                                    <point x="9.0" y="0.0" cp1x="9.0" cp1y="0.0" cp2x="9.0" cp2y="0.0"/>
+                                    <point x="9.0" y="0.9999999999999998" cp1x="9.0" cp1y="0.9999999999999998" cp2x="9.0" cp2y="0.9999999999999998"/>
+                                    <point x="8.158536585365859" y="1.9756097560975614" cp1x="8.158536585365859" cp1y="1.9756097560975614" cp2x="8.158536585365859" cp2y="1.9756097560975614"/>
+                                    <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
+                                    <point x="2.8658536585365852" y="10.0" cp1x="2.8658536585365852" cp1y="10.0" cp2x="2.8658536585365852" cp2y="10.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="9" height="10"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="72" green="72" blue="73" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.096827686" brightnessOffset="-0.45882353" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="5.0" cp2x="0.0" cp2y="5.0"/>
+                                    <point x="2.1463414634146343" y="5.0" cp1x="2.1463414634146343" cp1y="5.0" cp2x="2.1463414634146343" cp2y="5.0"/>
+                                    <point x="3.560975609756098" y="7.390243902439032" cp1x="3.560975609756098" cp1y="7.390243902439032" cp2x="3.560975609756098" cp2y="7.390243902439032"/>
+                                    <point x="6.963414634146344" y="0.0" cp1x="6.963414634146344" cp1y="0.0" cp2x="6.963414634146344" cp2y="0.0"/>
+                                    <point x="9.0" y="0.0" cp1x="9.0" cp1y="0.0" cp2x="9.0" cp2y="0.0"/>
+                                    <point x="9.0" y="0.9999999999999998" cp1x="9.0" cp1y="0.9999999999999998" cp2x="9.0" cp2y="0.9999999999999998"/>
+                                    <point x="8.158536585365859" y="1.9756097560975614" cp1x="8.158536585365859" cp1y="1.9756097560975614" cp2x="8.158536585365859" cp2y="1.9756097560975614"/>
+                                    <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
+                                    <point x="2.8658536585365852" y="10.0" cp1x="2.8658536585365852" cp1y="10.0" cp2x="2.8658536585365852" cp2y="10.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113e58b199e.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="9" height="10"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="5.0" cp2x="0.0" cp2y="5.0"/>
+                                    <point x="2.1463414634146343" y="5.0" cp1x="2.1463414634146343" cp1y="5.0" cp2x="2.1463414634146343" cp2y="5.0"/>
+                                    <point x="3.560975609756098" y="7.390243902439032" cp1x="3.560975609756098" cp1y="7.390243902439032" cp2x="3.560975609756098" cp2y="7.390243902439032"/>
+                                    <point x="6.963414634146344" y="0.0" cp1x="6.963414634146344" cp1y="0.0" cp2x="6.963414634146344" cp2y="0.0"/>
+                                    <point x="9.0" y="0.0" cp1x="9.0" cp1y="0.0" cp2x="9.0" cp2y="0.0"/>
+                                    <point x="9.0" y="0.9999999999999998" cp1x="9.0" cp1y="0.9999999999999998" cp2x="9.0" cp2y="0.9999999999999998"/>
+                                    <point x="8.158536585365859" y="1.9756097560975614" cp1x="8.158536585365859" cp1y="1.9756097560975614" cp2x="8.158536585365859" cp2y="1.9756097560975614"/>
+                                    <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
+                                    <point x="2.8658536585365852" y="10.0" cp1x="2.8658536585365852" cp1y="10.0" cp2x="2.8658536585365852" cp2y="10.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113e5925910.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <region name="MenuItemAccelerator" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="80" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="80" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="80" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </region>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JMenu" name="Menu" ui="MenuUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="1" bottom="2" left="12" right="5"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground>
+                     <matte red="35" green="35" blue="36" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled+Selected">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                           <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelection" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiIconRegion name="arrowIcon" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="9" height="10"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08983666" brightnessOffset="-0.17647058" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="1.0"/>
+                                    <point x="7.756097560975589" y="5.512195121951206" cp1x="7.756097560975589" cp1y="5.512195121951206" cp2x="7.756097560975589" cp2y="5.512195121951206"/>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="9" height="10"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="71" green="71" blue="72" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.09663743" brightnessOffset="-0.4627451" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="1.0"/>
+                                    <point x="7.756097560975589" y="5.512195121951206" cp1x="7.756097560975589" cp1y="5.512195121951206" cp2x="7.756097560975589" cp2y="5.512195121951206"/>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113e57f255e.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="9" height="10"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="1" bottom="1" left="1" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="1.0"/>
+                                    <point x="7.670731707317066" y="5.499999999999998" cp1x="7.670731707317066" cp1y="5.499999999999998" cp2x="7.670731707317066" cp2y="5.499999999999998"/>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113e58a275a.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <region name="MenuItemAccelerator" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="80" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="80" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="80" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </region>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JPopupMenu" name="PopupMenu" ui="PopupMenuUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="6" bottom="6" left="1" right="1"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+            <uiproperties>
+               <uiProperty name="consumeEventOnClose" type="BOOLEAN" value="true"/>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NO_CACHING</cacheMode>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="220" height="313"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="9" bottom="11" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="1.0" x2="219.0" y1="1.0" y2="312.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.15">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.02" midpoint="0.5">
+                                 <matte red="237" green="239" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.6150531" brightnessOffset="0.39999998" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.98" midpoint="0.8">
+                                 <matte red="237" green="239" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.6150531" brightnessOffset="0.39999998" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.72">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.0" x2="220.0" y1="0.0" y2="313.0" rounding="0.0">
+                           <matte red="89" green="89" blue="89" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.39607844" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NO_CACHING</cacheMode>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="220" height="313"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="11" bottom="11" left="2" right="2"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="1.0" x2="219.0" y1="1.0" y2="312.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.15">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.02" midpoint="0.5">
+                                 <matte red="237" green="239" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.6150531" brightnessOffset="0.39999998" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.98" midpoint="0.8">
+                                 <matte red="237" green="239" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.6150531" brightnessOffset="0.39999998" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.72">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.0" x2="220.0" y1="0.0" y2="313.0" rounding="0.0">
+                           <matte red="89" green="89" blue="89" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.39607844" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="113dbeb51c2.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>true</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JPopupMenu$Separator" name="PopupMenuSeparator" ui="PopupMenuSeparatorUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="1" bottom="2" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled" inverted="true">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NO_CACHING</cacheMode>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="3" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="1" bottom="1" left="1" right="1"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="3.0" y1="1.0" y2="2.0" rounding="0.0">
+                           <matte red="167" green="172" blue="180" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.03830409" brightnessOffset="-0.039215684" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="1.0" x2="0.75" y2="2.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JOptionPane" name="OptionPane" ui="OptionPaneUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="15" bottom="15" left="15" right="15"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background>
+               <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="control" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+            </background>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties>
+               <uiProperty name="buttonOrientation" type="INT" value="4"/>
+               <uiProperty name="messageAnchor" type="INT" value="17"/>
+               <uiProperty name="separatorPadding" type="INT" value="0"/>
+               <uiProperty name="sameSizeButtons" type="BOOLEAN" value="false"/>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiComponent opaque="false" componentName="OptionPane.separator" type="javax.swing.JSeparator" name="Separator" ui="SeparatorUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="1" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NO_CACHING</cacheMode>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheSettingsInherited>false</cacheSettingsInherited>
+                        <cacheMode>NO_CACHING</cacheMode>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+            <uiComponent opaque="false" componentName="OptionPane.messageArea" type="javax.swing.JPanel" name="Panel" ui="PanelUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="0" bottom="10" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions>
+                  <uiComponent opaque="false" componentName="OptionPane.label" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
+                     <stateTypes/>
+                     <contentMargins top="0" bottom="10" left="10" right="10"/>
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <backgroundStates>
+                        <state stateKeys="Enabled">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="100" height="30"/>
+                              <nextLayerNameIndex>2</nextLayerNameIndex>
+                              <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                              <layer name="Layer 1">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                                       <matte red="0" green="0" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                           </canvas>
+                        </state>
+                     </backgroundStates>
+                     <foregroundStates/>
+                     <borderStates/>
+                     <regions/>
+                  </uiComponent>
+               </regions>
+            </uiComponent>
+            <uiIconRegion name="ErrorIcon" subregion="true" key="errorIcon" basicKey="OptionPane.errorIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="48" height="48"/>
+                        <nextLayerNameIndex>5</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 4">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="68" uiDefaultParentName="nimbusRed" hueOffset="0.0" saturationOffset="-0.79881656" brightnessOffset="0.33725488" alphaOffset="-187"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="13.6875" cp1x="1.0" cp1y="13.6875" cp2x="1.0" cp2y="13.6875"/>
+                                    <point x="13.4375" y="1.0" cp1x="13.4375" cp1y="1.0" cp2x="13.4375" cp2y="1.0"/>
+                                    <point x="32.5625" y="1.0" cp1x="32.5625" cp1y="1.0" cp2x="32.5625" cp2y="1.0"/>
+                                    <point x="45.0" y="13.5" cp1x="45.0" cp1y="13.5" cp2x="45.0" cp2y="13.5"/>
+                                    <point x="45.0" y="32.0" cp1x="45.0" cp1y="32.0" cp2x="45.0" cp2y="32.0"/>
+                                    <point x="32.0" y="45.0" cp1x="32.0" cp1y="45.0" cp2x="32.0" cp2y="45.0"/>
+                                    <point x="13.6875" y="44.9375" cp1x="13.6875" cp1y="44.9375" cp2x="13.6875" cp2y="44.9375"/>
+                                    <point x="1.0625" y="32.3125" cp1x="1.0625" cp1y="32.3125" cp2x="1.0625" cp2y="32.3125"/>
+                                    <point x="1.0" y="24.0" cp1x="1.0" cp1y="24.0" cp2x="1.0" cp2y="24.0"/>
+                                    <point x="2.0" y="24.0" cp1x="2.0" cp1y="24.0" cp2x="2.0" cp2y="24.0"/>
+                                    <point x="2.0" y="32.0" cp1x="2.0" cp1y="32.0" cp2x="2.0" cp2y="32.0"/>
+                                    <point x="14.0" y="44.0" cp1x="14.0" cp1y="44.0" cp2x="14.0" cp2y="44.0"/>
+                                    <point x="32.0" y="44.0" cp1x="32.0" cp1y="44.0" cp2x="32.0" cp2y="44.0"/>
+                                    <point x="44.0" y="32.0" cp1x="44.0" cp1y="32.0" cp2x="44.0" cp2y="32.0"/>
+                                    <point x="44.0" y="14.0" cp1x="44.0" cp1y="14.0" cp2x="44.0" cp2y="14.0"/>
+                                    <point x="32.0" y="2.0" cp1x="32.0" cp1y="2.0" cp2x="32.0" cp2y="2.0"/>
+                                    <point x="14.0" y="2.0" cp1x="14.0" cp1y="2.0" cp2x="14.0" cp2y="2.0"/>
+                                    <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
+                                    <point x="2.0" y="24.0" cp1x="2.0" cp1y="24.0" cp2x="2.0" cp2y="24.0"/>
+                                    <point x="1.0" y="24.0" cp1x="1.0" cp1y="24.0" cp2x="1.0" cp2y="24.0"/>
+                                 </points>
+                              </path>
+                              <ellipse x1="20.0" x2="26.0" y1="32.0" y2="38.0">
+                                 <matte red="250" green="250" blue="250" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="0.22745097" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                              <path>
+                                 <matte red="250" green="250" blue="250" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="0.22745097" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="20.0" y="11.0" cp1x="20.0" cp1y="13.0" cp2x="20.0" cp2y="9.0"/>
+                                    <point x="23.0" y="8.0" cp1x="21.0" cp1y="8.0" cp2x="25.0" cp2y="8.0"/>
+                                    <point x="26.0" y="11.0" cp1x="26.0" cp1y="9.0" cp2x="26.0" cp2y="13.0"/>
+                                    <point x="24.0" y="29.0" cp1x="24.0" cp1y="29.0" cp2x="24.0" cp2y="29.0"/>
+                                    <point x="22.0" y="29.0" cp1x="22.0" cp1y="29.0" cp2x="22.0" cp2y="29.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 3">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="225" green="136" blue="136" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="-0.403261" brightnessOffset="0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.3451613" midpoint="0.5">
+                                       <matte red="198" green="54" blue="54" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="-0.07154381" brightnessOffset="0.11372548" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.683871" midpoint="0.68367344">
+                                       <matte red="187" green="17" blue="17" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.110274374" brightnessOffset="0.07058823" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="235" green="60" blue="60" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="-0.05413574" brightnessOffset="0.2588235" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
+                                    <point x="14.0" y="1.0" cp1x="14.0" cp1y="1.0" cp2x="14.0" cp2y="1.0"/>
+                                    <point x="32.0" y="1.0" cp1x="32.0" cp1y="1.0" cp2x="32.0" cp2y="1.0"/>
+                                    <point x="45.0" y="14.0" cp1x="45.0" cp1y="14.0" cp2x="45.0" cp2y="14.0"/>
+                                    <point x="45.0" y="32.0" cp1x="45.0" cp1y="32.0" cp2x="45.0" cp2y="32.0"/>
+                                    <point x="32.0" y="45.0" cp1x="32.0" cp1y="45.0" cp2x="32.0" cp2y="45.0"/>
+                                    <point x="14.0" y="45.0" cp1x="14.0" cp1y="45.0" cp2x="14.0" cp2y="45.0"/>
+                                    <point x="1.0" y="32.0" cp1x="1.0" cp1y="32.0" cp2x="1.0" cp2y="32.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="173" green="3" blue="3" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.18384242" brightnessOffset="0.015686274" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="13.0" cp1x="0.0" cp1y="13.0" cp2x="0.0" cp2y="13.0"/>
+                                    <point x="13.0" y="0.0" cp1x="13.0" cp1y="0.0" cp2x="13.0" cp2y="0.0"/>
+                                    <point x="33.0" y="0.0" cp1x="33.0" cp1y="0.0" cp2x="33.0" cp2y="0.0"/>
+                                    <point x="46.0" y="13.0" cp1x="46.0" cp1y="13.0" cp2x="46.0" cp2y="13.0"/>
+                                    <point x="46.0" y="33.0" cp1x="46.0" cp1y="33.0" cp2x="46.0" cp2y="33.0"/>
+                                    <point x="33.0" y="46.0" cp1x="33.0" cp1y="46.0" cp2x="33.0" cp2y="46.0"/>
+                                    <point x="13.0" y="46.0" cp1x="13.0" cp1y="46.0" cp2x="13.0" cp2y="46.0"/>
+                                    <point x="0.0" y="33.0" cp1x="0.0" cp1y="33.0" cp2x="0.0" cp2y="33.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects>
+                              <dropShadow blendingMode="NORMAL" opacity="0.28" angle="135" distance="2" spread="0" size="3">
+                                 <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </dropShadow>
+                           </effects>
+                        </layer>
+                        <templateLayer fileName="11406393ebc.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="InformationIcon" subregion="true" key="informationIcon" basicKey="OptionPane.informationIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="48" height="48"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 3">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="20.0" x2="26.0" y1="8.0" y2="14.0">
+                                 <matte red="250" green="250" blue="250" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="0.2235294" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                              <path>
+                                 <matte red="250" green="250" blue="250" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="0.21960783" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="18.0" y="18.0" cp1x="15.5" cp1y="18.0" cp2x="20.5" cp2y="18.0"/>
+                                    <point x="24.0" y="18.0" cp1x="22.8125" cp1y="18.0" cp2x="25.1875" cp2y="18.0"/>
+                                    <point x="26.0" y="21.0" cp1x="26.0" cp1y="19.0" cp2x="26.0" cp2y="23.0"/>
+                                    <point x="26.0" y="33.0" cp1x="26.0" cp1y="33.0" cp2x="26.0" cp2y="33.0"/>
+                                    <point x="28.9375" y="33.0" cp1x="26.375" cp1y="33.0625" cp2x="31.5" cp2y="32.9375"/>
+                                    <point x="29.0" y="37.0" cp1x="31.5625" cp1y="37.0" cp2x="26.4375" cp2y="37.0"/>
+                                    <point x="17.125" y="37.0" cp1x="19.625" cp1y="37.0625" cp2x="14.625" cp2y="36.9375"/>
+                                    <point x="17.0" y="33.0" cp1x="14.5625" cp1y="33.0" cp2x="19.4375" cp2y="33.0"/>
+                                    <point x="20.0" y="33.0" cp1x="20.0" cp1y="33.0" cp2x="20.0" cp2y="33.0"/>
+                                    <point x="20.0" y="22.0" cp1x="20.0" cp1y="22.0" cp2x="20.0" cp2y="22.0"/>
+                                    <point x="18.0" y="22.0" cp1x="20.75" cp1y="22.0" cp2x="15.25" cp2y="22.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="2.0" x2="44.0" y1="2.0" y2="44.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="150" green="175" blue="222" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="-0.0014793873" saturationOffset="-0.41456455" brightnessOffset="0.16470587" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.28424656" midpoint="0.5">
+                                       <matte red="78" green="116" blue="191" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="3.437996E-4" saturationOffset="-0.14726585" brightnessOffset="0.043137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.5" midpoint="0.5">
+                                       <matte red="48" green="93" blue="180" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="-4.271865E-4" saturationOffset="-0.0055555105" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7191781" midpoint="0.5">
+                                       <matte red="47" green="92" blue="180" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="87" green="134" blue="224" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="-7.866621E-4" saturationOffset="-0.12728173" brightnessOffset="0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="1.0" x2="45.0" y1="1.0" y2="45.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="162" green="185" blue="229" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="-8.2296133E-4" saturationOffset="-0.44631243" brightnessOffset="0.19215685" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.48287672" midpoint="0.5">
+                                       <matte red="64" green="106" blue="191" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="0.0012729168" saturationOffset="-0.0739674" brightnessOffset="0.043137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="93" green="139" blue="231" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="8.354187E-4" saturationOffset="-0.14148629" brightnessOffset="0.19999999" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="0.0" x2="46.0" y1="0.0" y2="46.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="33" green="78" blue="166" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="0.0" saturationOffset="0.06231594" brightnessOffset="-0.054901958" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="24" green="60" blue="131" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="3.1620264E-4" saturationOffset="0.07790506" brightnessOffset="-0.19215685" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="0.0" x2="0.0" y1="0.0" y2="0.0">
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="0.0" x2="0.0" y1="0.0" y2="0.0">
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="0.0" x2="0.0" y1="0.0" y2="0.0">
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects>
+                              <dropShadow blendingMode="NORMAL" opacity="0.35" angle="135" distance="2" spread="0" size="4">
+                                 <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </dropShadow>
+                           </effects>
+                        </layer>
+                        <templateLayer fileName="11409fd0ae1.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="QuestionIcon" subregion="true" key="questionIcon" basicKey="OptionPane.questionIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="48" height="48"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 3">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="20.0" x2="26.0" y1="32.0" y2="38.0">
+                                 <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="15.0" y="17.875" cp1x="13.5" cp1y="16.5" cp2x="16.5" cp2y="19.25"/>
+                                    <point x="19.1875" y="17.1875" cp1x="18.4375" cp1y="18.375" cp2x="19.9375" cp2y="16.0"/>
+                                    <point x="22.5" y="13.9375" cp1x="20.6875" cp1y="13.9375" cp2x="24.3125" cp2y="13.9375"/>
+                                    <point x="25.6875" y="16.8125" cp1x="25.6875" cp1y="15.25" cp2x="25.6875" cp2y="18.375"/>
+                                    <point x="22.5625" y="20.5625" cp1x="23.8125" cp1y="19.375" cp2x="21.3125" cp2y="21.75"/>
+                                    <point x="20.0625" y="26.125" cp1x="20.0" cp1y="24.625" cp2x="20.125" cp2y="27.625"/>
+                                    <point x="22.875" y="28.9375" cp1x="21.5625" cp1y="28.9375" cp2x="24.1875" cp2y="28.9375"/>
+                                    <point x="25.9375" y="26.25" cp1x="25.9375" cp1y="27.875" cp2x="25.9375" cp2y="24.625"/>
+                                    <point x="29.4375" y="22.3125" cp1x="28.25" cp1y="23.5625" cp2x="30.625" cp2y="21.0625"/>
+                                    <point x="32.0" y="16.625" cp1x="32.0625" cp1y="19.9375" cp2x="31.9375" cp2y="13.3125"/>
+                                    <point x="23.1875" y="8.0625" cp1x="29.3125" cp1y="8.0" cp2x="17.0625" cp2y="8.125"/>
+                                    <point x="14.625" y="13.875" cp1x="15.0625" cp1y="12.625" cp2x="14.1875" cp2y="15.125"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="2.0" x2="44.0" y1="2.0" y2="44.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="159" green="163" blue="168" alpha="255" hueOffset="-0.018518567" saturationOffset="-0.056954887" brightnessOffset="-0.086274505" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.30479452" midpoint="0.5">
+                                       <matte red="116" green="122" blue="130" alpha="255" hueOffset="-0.015872955" saturationOffset="-0.0028340071" brightnessOffset="-0.2352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6541096" midpoint="0.5">
+                                       <matte red="96" green="104" blue="112" alpha="255" hueOffset="-0.027777791" saturationOffset="0.032330833" brightnessOffset="-0.30588236" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="118" green="128" blue="138" alpha="255" hueOffset="-0.027777791" saturationOffset="0.034401216" brightnessOffset="-0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="1.0" x2="45.0" y1="1.0" y2="45.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="168" green="173" blue="178" alpha="255" hueOffset="-0.027777791" saturationOffset="-0.05434654" brightnessOffset="-0.04705882" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="101" green="109" blue="118" alpha="255" hueOffset="-0.022875786" saturationOffset="0.03354148" brightnessOffset="-0.28235295" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="0.0" x2="46.0" y1="0.0" y2="46.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="115" green="120" blue="126" alpha="255" hueOffset="-0.02020204" saturationOffset="-0.023224726" brightnessOffset="-0.2509804" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="26" green="34" blue="43" alpha="255" hueOffset="-0.022875786" saturationOffset="0.28482252" brightnessOffset="-0.5764706" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects>
+                              <dropShadow blendingMode="NORMAL" opacity="0.43" angle="135" distance="2" spread="0" size="3">
+                                 <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </dropShadow>
+                           </effects>
+                        </layer>
+                        <templateLayer fileName="11409f1bdec.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="WarningIcon" subregion="true" key="warningIcon" basicKey="OptionPane.warningIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="48" height="48"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Layer 3">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="21.0" x2="27.0" y1="35.0" y2="41.0">
+                                 <matte red="16" green="16" blue="16" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.68235296" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="69" green="69" blue="69" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.4745098" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="24.0" y="11.0" cp1x="22.0" cp1y="11.0" cp2x="26.0" cp2y="11.0"/>
+                                    <point x="27.0" y="15.0" cp1x="27.0" cp1y="13.0" cp2x="27.0" cp2y="17.0"/>
+                                    <point x="24.0" y="32.0" cp1x="25.3125" cp1y="32.0" cp2x="22.6875" cp2y="32.0"/>
+                                    <point x="21.0" y="15.0" cp1x="21.0" cp1y="17.0" cp2x="21.0" cp2y="13.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="255" green="237" blue="139" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="6.530881E-4" saturationOffset="-0.40784314" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.3458904" midpoint="0.5">
+                                       <matte red="255" green="224" blue="63" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="-3.9456785E-4" saturationOffset="-0.109803915" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64041096" midpoint="0.5">
+                                       <matte red="255" green="220" blue="35" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.8253425" midpoint="0.5">
+                                       <matte red="255" green="232" blue="47" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="0.008085668" saturationOffset="-0.04705882" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="82" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="0.026515156" saturationOffset="-0.18431371" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="23.9375" y="2.0625" cp1x="22.1875" cp1y="2.0625" cp2x="25.6875" cp2y="2.0625"/>
+                                    <point x="26.625" y="4.5625" cp1x="26.625" cp1y="4.5625" cp2x="26.625" cp2y="4.5625"/>
+                                    <point x="44.75" y="38.4375" cp1x="44.75" cp1y="38.4375" cp2x="44.75" cp2y="38.4375"/>
+                                    <point x="45.9375" y="42.0" cp1x="45.9375" cp1y="40.5625" cp2x="45.9375" cp2y="43.4375"/>
+                                    <point x="42.4375" y="44.0" cp1x="42.4375" cp1y="44.0" cp2x="42.4375" cp2y="44.0"/>
+                                    <point x="4.8125" y="44.0" cp1x="4.8125" cp1y="44.0" cp2x="4.8125" cp2y="44.0"/>
+                                    <point x="2.1875" y="41.875" cp1x="2.25" cp1y="43.5" cp2x="2.125" cp2y="40.25"/>
+                                    <point x="3.625" y="37.9375" cp1x="3.625" cp1y="37.9375" cp2x="3.625" cp2y="37.9375"/>
+                                    <point x="21.1875" y="4.9375" cp1x="21.1875" cp1y="4.9375" cp2x="21.1875" cp2y="4.9375"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="216" green="181" blue="0" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="-4.9102306E-4" saturationOffset="0.1372549" brightnessOffset="-0.15294117" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="166" green="138" blue="0" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="-0.0015973002" saturationOffset="0.1372549" brightnessOffset="-0.3490196" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="24.0" y="1.0" cp1x="22.0" cp1y="1.0" cp2x="26.0" cp2y="1.0"/>
+                                    <point x="27.1875" y="3.9375" cp1x="27.1875" cp1y="3.9375" cp2x="27.1875" cp2y="3.9375"/>
+                                    <point x="45.25" y="37.4375" cp1x="45.25" cp1y="37.4375" cp2x="45.25" cp2y="37.4375"/>
+                                    <point x="46.8125" y="42.25" cp1x="46.8125" cp1y="39.875" cp2x="46.8125" cp2y="44.625"/>
+                                    <point x="44.0" y="45.0" cp1x="44.0" cp1y="45.0" cp2x="44.0" cp2y="45.0"/>
+                                    <point x="4.0" y="45.0" cp1x="4.0" cp1y="45.0" cp2x="4.0" cp2y="45.0"/>
+                                    <point x="1.1875" y="42.3125" cp1x="1.3125" cp1y="44.5625" cp2x="1.0625" cp2y="40.0625"/>
+                                    <point x="2.875" y="37.5" cp1x="2.875" cp1y="37.5" cp2x="2.875" cp2y="37.5"/>
+                                    <point x="21.0" y="4.0" cp1x="21.0" cp1y="4.0" cp2x="21.0" cp2y="4.0"/>
+                                 </points>
+                              </path>
+                              <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects>
+                              <dropShadow blendingMode="NORMAL" opacity="0.22" angle="135" distance="2" spread="0" size="3">
+                                 <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </dropShadow>
+                           </effects>
+                        </layer>
+                        <templateLayer fileName="1140a08420a.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JPanel" name="Panel" ui="PanelUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JProgressBar" name="ProgressBar" ui="ProgressBarUI" subregion="false">
+         <stateTypes>
+            <stateType key="Enabled"/>
+            <stateType key="Disabled"/>
+            <stateType key="Indeterminate">
+               <codeSnippet><![CDATA[
+                        return ((JProgressBar)c).isIndeterminate();
+               ]]></codeSnippet>
+            </stateType>
+            <stateType key="Finished">
+               <codeSnippet><![CDATA[
+                        return ((JProgressBar)c).getPercentComplete() == 1.0;
+                ]]></codeSnippet>
+            </stateType>
+         </stateTypes>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+            <uiproperties>
+               <uiProperty name="tileWhenIndeterminate" type="BOOLEAN" value="true"/>
+               <uiProperty name="tileWidth" type="INT" value="27"/>
+               <uiProperty name="paintOutsideClip" type="BOOLEAN" value="true"/>
+               <uiProperty name="rotateText" type="BOOLEAN" value="true"/>
+               <uiProperty name="vertictalSize" type="DIMENSION">
+                  <dimension width="19" height="150"/>
+               </uiProperty>
+               <uiProperty name="horizontalSize" type="DIMENSION">
+                  <dimension width="150" height="19"/>
+               </uiProperty>
+               <uiProperty name="cycleTime" type="INT" value="250"/>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="29" height="19"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="26.0" y1="3.0" y2="16.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.038709678" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.08064516" midpoint="0.5">
+                                 <matte red="235" green="236" blue="238" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.097921275" brightnessOffset="0.18823528" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.3935484" midpoint="0.5">
+                                 <matte red="218" green="219" blue="222" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.0925083" brightnessOffset="0.12549019" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.43870968" midpoint="0.5">
+                                 <matte red="206" green="208" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08222443" brightnessOffset="0.086274505" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.90967745" midpoint="0.5">
+                                 <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08477524" brightnessOffset="0.16862744" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.91935486" midpoint="0.5">
+                                 <matte red="249" green="251" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.086996906" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="27.0" y1="2.0" y2="17.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="136" green="139" blue="145" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.04845735" brightnessOffset="-0.17647058" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="174" green="177" blue="183" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061345987" brightnessOffset="-0.027450979" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1140514801d.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>true</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                      <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="29" height="19"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="26.0" y1="3.0" y2="16.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.038709678" midpoint="0.5">
+                                 <matte red="235" green="236" blue="239" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.09378991" brightnessOffset="0.19215685" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.08064516" midpoint="0.5">
+                                 <matte red="225" green="227" blue="231" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08455229" brightnessOffset="0.1607843" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.3935484" midpoint="0.5">
+                                 <matte red="217" green="220" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.08362049" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.43870968" midpoint="0.5">
+                                 <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.90967745" midpoint="0.5">
+                                 <matte red="221" green="223" blue="228" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07982456" brightnessOffset="0.1490196" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.92258066" midpoint="0.5">
+                                 <matte red="230" green="232" blue="237" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.08099045" brightnessOffset="0.18431371" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="27.0" y1="2.0" y2="17.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.05483871" midpoint="0.5">
+                                 <matte red="175" green="178" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061613273" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9516129" midpoint="0.5">
+                                 <matte red="193" green="197" blue="203" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.061265234" brightnessOffset="0.05098039" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1141fe7dbd7.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="27" height="19"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="26.0" y1="3.0" y2="16.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.038709678" midpoint="0.5">
+                                 <matte red="236" green="209" blue="179" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.003940329" saturationOffset="-0.7375322" brightnessOffset="0.17647058" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.08387097" midpoint="0.5">
+                                 <matte red="219" green="167" blue="107" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.005506739" saturationOffset="-0.46764207" brightnessOffset="0.109803915" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.46129033" midpoint="0.5">
+                                 <matte red="203" green="127" blue="42" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0042127445" saturationOffset="-0.18595415" brightnessOffset="0.04705882" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.5193548" midpoint="0.5">
+                                 <matte red="192" green="102" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0047626942" saturationOffset="0.02094239" brightnessOffset="0.0039215684" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.91612905" midpoint="0.5">
+                                 <matte red="232" green="142" blue="40" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0047626942" saturationOffset="-0.15147138" brightnessOffset="0.1607843" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.93225807" midpoint="0.5">
+                                 <matte red="255" green="177" blue="75" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.010665476" saturationOffset="-0.27317524" brightnessOffset="0.25098038" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="27.0" y1="2.0" y2="17.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.038709678" midpoint="0.5">
+                                 <matte red="152" green="62" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.015796512" saturationOffset="0.02094239" brightnessOffset="-0.15294117" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.07096774" midpoint="0.5">
+                                 <matte red="172" green="82" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.004321605" saturationOffset="0.02094239" brightnessOffset="-0.0745098" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4903226" midpoint="0.5">
+                                 <matte red="165" green="75" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.008021399" saturationOffset="0.02094239" brightnessOffset="-0.10196078" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9032258" midpoint="0.5">
+                                 <matte red="185" green="101" blue="37" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.011706904" saturationOffset="-0.1790576" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9451613" midpoint="0.5">
+                                 <matte red="114" green="24" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.048691254" saturationOffset="0.02094239" brightnessOffset="-0.3019608" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <path>
+                           <matte red="191" green="98" blue="4" alpha="99" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-156"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="3.0" y="0.6333333333333334" cp1x="5.0" cp1y="0.6333333333333334" cp2x="1.0" cp2y="0.6333333333333334"/>
+                              <point x="0.6333333333333334" y="3.0" cp1x="0.6333333333333334" cp1y="1.0" cp2x="0.6333333333333334" cp2y="5.0"/>
+                              <point x="0.6333333333333334" y="16.0" cp1x="0.6333333333333334" cp1y="14.0" cp2x="0.6333333333333334" cp2y="18.0"/>
+                              <point x="3.0" y="18.46666666666669" cp1x="1.0" cp1y="18.46666666666669" cp2x="5.0" cp2y="18.46666666666669"/>
+                              <point x="27.0" y="18.46666666666669" cp1x="27.0" cp1y="18.46666666666669" cp2x="27.0" cp2y="18.46666666666669"/>
+                              <point x="27.0" y="17.0" cp1x="27.0" cp1y="17.0" cp2x="27.0" cp2y="17.0"/>
+                              <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="17.0"/>
+                              <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
+                              <point x="27.0" y="2.0" cp1x="27.0" cp1y="2.0" cp2x="27.0" cp2y="2.0"/>
+                              <point x="27.0" y="0.6000000000000001" cp1x="27.0" cp1y="0.6000000000000001" cp2x="27.0" cp2y="0.6000000000000001"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1140518fed0.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>true</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled+Finished">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="27" height="19"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="24.0" y1="3.0" y2="16.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.038709678" midpoint="0.5">
+                                 <matte red="236" green="209" blue="179" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.003940329" saturationOffset="-0.7375322" brightnessOffset="0.17647058" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.08387097" midpoint="0.5">
+                                 <matte red="219" green="167" blue="107" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.005506739" saturationOffset="-0.46764207" brightnessOffset="0.109803915" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.46129033" midpoint="0.5">
+                                 <matte red="203" green="127" blue="42" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0042127445" saturationOffset="-0.18595415" brightnessOffset="0.04705882" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.5193548" midpoint="0.5">
+                                 <matte red="192" green="102" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0047626942" saturationOffset="0.02094239" brightnessOffset="0.0039215684" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.91612905" midpoint="0.5">
+                                 <matte red="232" green="142" blue="40" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0047626942" saturationOffset="-0.15147138" brightnessOffset="0.1607843" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.93225807" midpoint="0.5">
+                                 <matte red="255" green="177" blue="75" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.010665476" saturationOffset="-0.27317524" brightnessOffset="0.25098038" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="25.0" y1="2.0" y2="17.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.038709678" midpoint="0.5">
+                                 <matte red="152" green="62" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.015796512" saturationOffset="0.02094239" brightnessOffset="-0.15294117" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.07096774" midpoint="0.5">
+                                 <matte red="172" green="82" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.004321605" saturationOffset="0.02094239" brightnessOffset="-0.0745098" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4903226" midpoint="0.5">
+                                 <matte red="165" green="75" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.008021399" saturationOffset="0.02094239" brightnessOffset="-0.10196078" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9032258" midpoint="0.5">
+                                 <matte red="185" green="101" blue="37" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.011706904" saturationOffset="-0.1790576" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9451613" midpoint="0.5">
+                                 <matte red="114" green="24" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.048691254" saturationOffset="0.02094239" brightnessOffset="-0.3019608" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <path>
+                           <matte red="191" green="98" blue="4" alpha="99" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-156"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.7333333333333343" y="0.6333333333333334" cp1x="2.7333333333333343" cp1y="0.6333333333333334" cp2x="0.7333333333333334" cp2y="0.6333333333333334"/>
+                              <point x="0.6000000000000001" y="3.033333333333333" cp1x="0.6000000000000001" cp1y="1.0333333333333334" cp2x="0.6000000000000001" cp2y="3.033333333333333"/>
+                              <point x="0.6000000000000001" y="16.13333333333334" cp1x="0.6000000000000001" cp1y="16.13333333333334" cp2x="0.6000000000000001" cp2y="18.13333333333334"/>
+                              <point x="2.9" y="18.400000000000016" cp1x="0.9" cp1y="18.400000000000016" cp2x="2.9" cp2y="18.400000000000016"/>
+                              <point x="23.999999999999986" y="18.366666666666678" cp1x="23.999999999999986" cp1y="18.366666666666678" cp2x="25.970929244126516" cp2y="18.386523706031824"/>
+                              <point x="26.33333333333335" y="16.166666666666664" cp1x="26.300000000000015" cp1y="18.10000000000005" cp2x="26.33333333333335" cp2y="16.166666666666664"/>
+                              <point x="26.366666666666678" y="13.46666666666666" cp1x="26.366666666666678" cp1y="13.46666666666666" cp2x="26.366666666666678" cp2y="13.46666666666666"/>
+                              <point x="26.333333333333343" y="6.633333333333332" cp1x="26.333333333333343" cp1y="6.633333333333332" cp2x="26.333333333333343" cp2y="6.633333333333332"/>
+                              <point x="26.33333333333332" y="3.0333333333333328" cp1x="26.33333333333332" cp1y="3.0333333333333328" cp2x="26.337550663750736" cp2y="1.0829955749951623"/>
+                              <point x="24.300000000000004" y="0.6666666666666667" cp1x="26.265946019413946" cp1y="0.6837889338880168" cp2x="24.300000000000004" cp2y="0.6666666666666667"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled+Indeterminate">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties>
+                     <uiProperty name="progressPadding" type="INT" value="3"/>
+                  </uiproperties>
+               </style>
+               <canvas>
+                  <size width="30" height="13"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="20.0" x2="21.0" y1="0.0" y2="13.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="85" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-170"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="10.0" x2="11.0" y1="0.0" y2="13.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="82" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-173"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="219" green="167" blue="107" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.005506739" saturationOffset="-0.46764207" brightnessOffset="0.109803915" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.41290322" midpoint="0.5">
+                                 <matte red="203" green="127" blue="42" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0042127445" saturationOffset="-0.18595415" brightnessOffset="0.04705882" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.47096774" midpoint="0.5">
+                                 <matte red="192" green="102" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0047626942" saturationOffset="0.02094239" brightnessOffset="0.0039215684" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="252" green="162" blue="60" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0047626942" saturationOffset="-0.21715283" brightnessOffset="0.23921567" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="0.0" y="6.0" cp1x="0.0" cp1y="6.0" cp2x="2.678571428571433" cp2y="6.000000000000001"/>
+                              <point x="12.357142857142872" y="1.0357142857142834" cp1x="6.142857142857157" cp1y="1.0000000000000004" cp2x="12.357142857142872" cp2y="1.0357142857142834"/>
+                              <point x="16.28571428571428" y="1.0357142857142858" cp1x="16.28571428571428" cp1y="1.0357142857142858" cp2x="24.615384615384638" cp2y="1.0384615384615354"/>
+                              <point x="28.0" y="6.0" cp1x="22.71428571428573" cp1y="6.035714285714286" cp2x="28.0" cp2y="6.0"/>
+                              <point x="30.0" y="6.0" cp1x="30.0" cp1y="6.0" cp2x="30.0" cp2y="6.0"/>
+                              <point x="30.0" y="7.0" cp1x="30.0" cp1y="7.0" cp2x="30.0" cp2y="7.0"/>
+                              <point x="28.0" y="7.0" cp1x="28.0" cp1y="7.0" cp2x="22.67857142857143" cp2y="7.035714285714285"/>
+                              <point x="16.285714285714295" y="12.000000000000007" cp1x="25.26923076923079" cp1y="12.038461538461538" cp2x="16.285714285714295" cp2y="12.000000000000007"/>
+                              <point x="12.785714285714295" y="12.0" cp1x="12.785714285714295" cp1y="12.0" cp2x="6.071428571428592" cp2y="12.0"/>
+                              <point x="0.0" y="7.0" cp1x="2.6071428571428568" cp1y="7.035714285714286" cp2x="0.0" cp2y="7.0"/>
+                           </points>
+                        </path>
+                        <rectangle x1="0.0" x2="30.0" y1="0.0" y2="13.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.051612902" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.08064516" midpoint="0.5">
+                                 <matte red="235" green="236" blue="238" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.097921275" brightnessOffset="0.18823528" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.5064516" midpoint="0.5">
+                                 <matte red="217" green="214" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.54444444" saturationOffset="-0.08748484" brightnessOffset="0.10588235" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.87419355" midpoint="0.5">
+                                 <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08477524" brightnessOffset="0.16862744" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9032258" midpoint="0.5">
+                                 <matte red="249" green="251" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.086996906" brightnessOffset="0.25490195" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11405266ab0.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>true</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="27" height="19"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="26.0" y1="3.0" y2="16.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.038709678" midpoint="0.5">
+                                 <matte red="220" green="215" blue="211" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.009704903" saturationOffset="-0.9381485" brightnessOffset="0.11372548" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.08387097" midpoint="0.5">
+                                 <matte red="215" green="203" blue="191" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.86742973" brightnessOffset="0.09411764" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.46129033" midpoint="0.5">
+                                 <matte red="211" green="192" blue="173" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.79896283" brightnessOffset="0.07843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.5193548" midpoint="0.5">
+                                 <matte red="208" green="185" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0013274103" saturationOffset="-0.7530961" brightnessOffset="0.06666666" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.91612905" midpoint="0.5">
+                                 <matte red="219" green="196" blue="172" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0013274103" saturationOffset="-0.7644457" brightnessOffset="0.109803915" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.93225807" midpoint="0.5">
+                                 <matte red="225" green="206" blue="182" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.009244293" saturationOffset="-0.78794646" brightnessOffset="0.13333333" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="27.0" y1="2.0" y2="17.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.038709678" midpoint="0.5">
+                                 <matte red="197" green="174" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.023593787" saturationOffset="-0.7963165" brightnessOffset="0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.07096774" midpoint="0.5">
+                                 <matte red="202" green="179" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.010608241" saturationOffset="-0.7760873" brightnessOffset="0.043137252" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4903226" midpoint="0.5">
+                                 <matte red="200" green="177" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.015402906" saturationOffset="-0.7840576" brightnessOffset="0.035294116" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9032258" midpoint="0.5">
+                                 <matte red="206" green="185" blue="171" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.017112307" saturationOffset="-0.8091547" brightnessOffset="0.058823526" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9451613" midpoint="0.5">
+                                 <matte red="186" green="163" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.07044564" saturationOffset="-0.844649" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <path>
+                           <matte red="218" green="211" blue="198" alpha="99" uiDefaultParentName="nimbusOrange" hueOffset="0.024554357" saturationOffset="-0.8873145" brightnessOffset="0.10588235" alphaOffset="-156"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="3.0" y="0.6333333333333334" cp1x="5.0" cp1y="0.6333333333333334" cp2x="1.0" cp2y="0.6333333333333334"/>
+                              <point x="0.6333333333333334" y="3.0" cp1x="0.6333333333333334" cp1y="1.0" cp2x="0.6333333333333334" cp2y="5.0"/>
+                              <point x="0.6333333333333334" y="16.0" cp1x="0.6333333333333334" cp1y="14.0" cp2x="0.6333333333333334" cp2y="18.0"/>
+                              <point x="3.0" y="18.46666666666669" cp1x="1.0" cp1y="18.46666666666669" cp2x="5.0" cp2y="18.46666666666669"/>
+                              <point x="27.0" y="18.46666666666669" cp1x="27.0" cp1y="18.46666666666669" cp2x="27.0" cp2y="18.46666666666669"/>
+                              <point x="27.0" y="17.0" cp1x="27.0" cp1y="17.0" cp2x="27.0" cp2y="17.0"/>
+                              <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="17.0"/>
+                              <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
+                              <point x="27.0" y="2.0" cp1x="27.0" cp1y="2.0" cp2x="27.0" cp2y="2.0"/>
+                              <point x="27.0" y="0.6000000000000001" cp1x="27.0" cp1y="0.6000000000000001" cp2x="27.0" cp2y="0.6000000000000001"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Disabled+Finished">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="27" height="19"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="24.0" y1="3.0" y2="16.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.038709678" midpoint="0.5">
+                                 <matte red="220" green="215" blue="211" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.009704903" saturationOffset="-0.9381485" brightnessOffset="0.11372548" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.08387097" midpoint="0.5">
+                                 <matte red="215" green="203" blue="191" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.86742973" brightnessOffset="0.09411764" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.46129033" midpoint="0.5">
+                                 <matte red="211" green="192" blue="173" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.79896283" brightnessOffset="0.07843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.5193548" midpoint="0.5">
+                                 <matte red="208" green="185" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0013274103" saturationOffset="-0.7530961" brightnessOffset="0.06666666" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.91612905" midpoint="0.5">
+                                 <matte red="219" green="196" blue="172" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0013274103" saturationOffset="-0.7644457" brightnessOffset="0.109803915" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.93225807" midpoint="0.5">
+                                 <matte red="225" green="206" blue="182" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.009244293" saturationOffset="-0.78794646" brightnessOffset="0.13333333" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="25.0" y1="2.0" y2="17.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.038709678" midpoint="0.5">
+                                 <matte red="197" green="174" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.023593787" saturationOffset="-0.7963165" brightnessOffset="0.02352941" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.07096774" midpoint="0.5">
+                                 <matte red="202" green="179" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.010608241" saturationOffset="-0.7760873" brightnessOffset="0.043137252" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.4903226" midpoint="0.5">
+                                 <matte red="200" green="177" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.015402906" saturationOffset="-0.7840576" brightnessOffset="0.035294116" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9032258" midpoint="0.5">
+                                 <matte red="206" green="185" blue="171" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.017112307" saturationOffset="-0.8091547" brightnessOffset="0.058823526" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9451613" midpoint="0.5">
+                                 <matte red="186" green="163" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.07044564" saturationOffset="-0.844649" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <path>
+                           <matte red="218" green="211" blue="198" alpha="99" uiDefaultParentName="nimbusOrange" hueOffset="0.024554357" saturationOffset="-0.8873145" brightnessOffset="0.10588235" alphaOffset="-156"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.9666666666666637" y="0.5999999999999999" cp1x="4.966666666666667" cp1y="0.5999999999999999" cp2x="0.9666666666666643" cp2y="0.5999999999999999"/>
+                              <point x="0.5999999999999989" y="2.966666666666667" cp1x="0.5999999999999989" cp1y="0.9666666666666661" cp2x="0.5999999999999989" cp2y="4.966666666666666"/>
+                              <point x="0.5999999999999989" y="15.966666666666676" cp1x="0.5999999999999989" cp1y="13.96666666666667" cp2x="0.5999999999999989" cp2y="17.966666666666683"/>
+                              <point x="2.9666666666666637" y="18.433333333333373" cp1x="0.9666666666666643" cp1y="18.433333333333373" cp2x="4.966666666666667" cp2y="18.433333333333373"/>
+                              <point x="25.500000000000025" y="18.400000000000038" cp1x="25.500000000000025" cp1y="18.400000000000038" cp2x="25.500000000000025" cp2y="18.400000000000038"/>
+                              <point x="26.23333333333335" y="17.466666666666697" cp1x="26.23333333333335" cp1y="17.466666666666697" cp2x="26.23333333333335" cp2y="17.466666666666697"/>
+                              <point x="26.266666666666662" y="10.53333333333335" cp1x="26.266666666666662" cp1y="10.53333333333335" cp2x="26.266666666666662" cp2y="10.53333333333335"/>
+                              <point x="26.299999999999997" y="8.666666666666663" cp1x="26.299999999999997" cp1y="8.666666666666663" cp2x="26.299999999999997" cp2y="8.666666666666663"/>
+                              <point x="26.299999999999986" y="1.8666666666666663" cp1x="26.299999999999986" cp1y="1.8666666666666663" cp2x="26.299999999999986" cp2y="1.8666666666666663"/>
+                              <point x="25.799999999999983" y="0.6666666666666657" cp1x="25.799999999999983" cp1y="0.6666666666666657" cp2x="25.799999999999983" cp2y="0.6666666666666657"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Disabled+Indeterminate">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties>
+                     <uiProperty name="progressPadding" type="INT" value="3"/>
+                  </uiproperties>
+               </style>
+               <canvas>
+                  <size width="30" height="13"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="215" green="203" blue="191" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.86742973" brightnessOffset="0.09411764" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.41290322" midpoint="0.5">
+                                 <matte red="211" green="192" blue="173" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.79896283" brightnessOffset="0.07843137" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.47096774" midpoint="0.5">
+                                 <matte red="208" green="185" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0013274103" saturationOffset="-0.7530961" brightnessOffset="0.06666666" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="224" green="202" blue="179" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0014062226" saturationOffset="-0.77816474" brightnessOffset="0.12941176" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                           <points>
+                              <point x="0.0" y="6.0" cp1x="0.0" cp1y="6.0" cp2x="2.678571428571433" cp2y="6.000000000000001"/>
+                              <point x="12.357142857142872" y="1.0357142857142834" cp1x="6.0" cp1y="1.0" cp2x="12.357142857142872" cp2y="1.0357142857142834"/>
+                              <point x="16.28571428571428" y="1.0357142857142858" cp1x="16.28571428571428" cp1y="1.0357142857142858" cp2x="20.285714285714278" cp2y="1.0357142857142858"/>
+                              <point x="28.0" y="6.0" cp1x="22.71428571428573" cp1y="6.035714285714286" cp2x="28.0" cp2y="6.0"/>
+                              <point x="30.0" y="6.0" cp1x="30.0" cp1y="6.0" cp2x="30.0" cp2y="6.0"/>
+                              <point x="30.0" y="7.0" cp1x="30.0" cp1y="7.0" cp2x="30.0" cp2y="7.0"/>
+                              <point x="28.0" y="7.0" cp1x="28.0" cp1y="7.0" cp2x="22.67857142857143" cp2y="7.035714285714285"/>
+                              <point x="16.285714285714295" y="12.000000000000007" cp1x="20.28571428571428" cp1y="12.000000000000007" cp2x="16.285714285714295" cp2y="12.000000000000007"/>
+                              <point x="12.785714285714295" y="12.0" cp1x="12.785714285714295" cp1y="12.0" cp2x="6.214285714285712" cp2y="11.964285714285714"/>
+                              <point x="0.0" y="7.0" cp1x="2.6071428571428568" cp1y="7.035714285714286" cp2x="0.0" cp2y="7.0"/>
+                           </points>
+                        </path>
+                        <rectangle x1="0.0" x2="30.0" y1="0.0" y2="13.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.051612902" midpoint="0.5">
+                                 <matte red="225" green="228" blue="232" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.0803539" brightnessOffset="0.16470587" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.08064516" midpoint="0.5">
+                                 <matte red="220" green="222" blue="227" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07968931" brightnessOffset="0.14509803" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.5064516" midpoint="0.5">
+                                 <matte red="215" green="216" blue="220" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.02222228" saturationOffset="-0.08779904" brightnessOffset="0.11764705" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.87419355" midpoint="0.5">
+                                 <matte red="218" green="220" blue="226" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.075128086" brightnessOffset="0.14117646" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9032258" midpoint="0.5">
+                                 <matte red="224" green="226" blue="232" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.07604356" brightnessOffset="0.16470587" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1141fee46ff.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </foregroundStates>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JSeparator" name="Separator" ui="SeparatorUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled" inverted="true">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="3"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="0" left="40" right="40"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="1.0" y2="2.0" rounding="0.0">
+                           <matte red="167" green="172" blue="180" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.03830409" brightnessOffset="-0.039215684" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JScrollBar" name="ScrollBar" ui="ScrollBarUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <uiproperties>
+               <uiProperty name="incrementButtonGap" type="INT" value="-8"/>
+               <uiProperty name="decrementButtonGap" type="INT" value="-8"/>
+               <uiProperty name="thumbHeight" type="INT" value="15"/>
+               <uiProperty name="minimumThumbSize" type="DIMENSION">
+                  <dimension width="29" height="29"/>
+               </uiProperty>
+               <uiProperty name="maximumThumbSize" type="DIMENSION">
+                  <dimension width="1000" height="1000"/>
+               </uiProperty>
+            </uiproperties>
+         </style>
+         <backgroundStates/>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiComponent opaque="false" componentName="ScrollBar.button" type="javax.swing.plaf.synth.SynthArrowButton" name="ArrowButton" ui="SynthArrowButtonUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties>
+                     <uiProperty name="size" type="INT" value="25"/>
+                  </uiproperties>
+               </style>
+               <backgroundStates/>
+               <foregroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="25" height="15"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="1" bottom="1" left="1" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="90" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-165"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="16.441176470588236" y="2.0" cp1x="15.705882352941176" cp1y="2.0" cp2x="17.176470588235297" cp2y="2.0"/>
+                                    <point x="17.52941176470588" y="6.323529411764706" cp1x="16.617647058823525" cp1y="4.117647058823527" cp2x="18.441176470588236" cp2y="8.529411764705884"/>
+                                    <point x="20.41176470588234" y="11.323529411764707" cp1x="18.05882352941175" cp1y="9.47058823529412" cp2x="22.76470588235293" cp2y="13.176470588235293"/>
+                                    <point x="24.499999999999993" y="14.235294117647056" cp1x="24.499999999999993" cp1y="14.235294117647056" cp2x="24.499999999999993" cp2y="14.235294117647056"/>
+                                    <point x="24.352941176470587" y="14.823529411764707" cp1x="24.352941176470587" cp1y="14.823529411764707" cp2x="24.352941176470587" cp2y="14.823529411764707"/>
+                                    <point x="19.823529411764667" y="11.970588235294116" cp1x="21.382352941176432" cp1y="13.352941176470583" cp2x="18.264705882352903" cp2y="10.588235294117649"/>
+                                    <point x="16.970588235294116" y="7.294117647058823" cp1x="17.76470588235294" cp1y="9.294117647058822" cp2x="16.176470588235293" cp2y="5.294117647058824"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="45" green="45" blue="46" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.08878718" brightnessOffset="-0.5647059" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.5928144" midpoint="0.5">
+                                       <matte red="64" green="65" blue="66" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.080223285" brightnessOffset="-0.4862745" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.994012" midpoint="0.5">
+                                       <matte red="129" green="131" blue="131" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.09525914" brightnessOffset="-0.23137254" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.924999994635583" y1="0.9285714285714283" x2="0.9249999986092253" y2="0.004201680672268871"/>
+                                 <points>
+                                    <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
+                                    <point x="12.0" y="11.0" cp1x="12.0" cp1y="11.0" cp2x="12.0" cp2y="11.0"/>
+                                    <point x="4.9411764705882355" y="7.499999999999999" cp1x="4.9411764705882355" cp1y="7.499999999999999" cp2x="4.9411764705882355" cp2y="7.499999999999999"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="112" green="114" blue="115" alpha="119" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.08443936" brightnessOffset="-0.29411766" alphaOffset="-136"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="252" green="254" blue="255" alpha="77" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.09876161" brightnessOffset="0.25490195" alphaOffset="-178"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.0" y1="0.5" x2="0.573529411764707" y2="0.5"/>
+                                 <points>
+                                    <point x="-0.058823529411764705" y="1.0294117647058822" cp1x="-0.058823529411764705" cp1y="1.0294117647058822" cp2x="-0.058823529411764705" cp2y="1.0294117647058822"/>
+                                    <point x="0.9705882352941175" y="1.4999999999999987" cp1x="0.9705882352941175" cp1y="1.4999999999999987" cp2x="0.9705882352941175" cp2y="1.4999999999999987"/>
+                                    <point x="1.9411764705882355" y="2.0294117647058822" cp1x="1.9411764705882355" cp1y="2.0294117647058822" cp2x="1.9411764705882355" cp2y="2.0294117647058822"/>
+                                    <point x="1.9411764705882355" y="15.029411764705882" cp1x="1.9411764705882355" cp1y="15.029411764705882" cp2x="1.9411764705882355" cp2y="15.029411764705882"/>
+                                    <point x="-0.058823529411764705" y="15.029411764705882" cp1x="-0.058823529411764705" cp1y="15.029411764705882" cp2x="-0.058823529411764705" cp2y="15.029411764705882"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="147" green="149" blue="152" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.07763158" brightnessOffset="-0.1490196" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.065868266" midpoint="0.5">
+                                       <matte red="211" green="212" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.10580933" brightnessOffset="0.086274505" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11377245" midpoint="0.5">
+                                       <matte red="240" green="241" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.102261856" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.3473054" midpoint="0.5">
+                                       <matte red="217" green="221" blue="224" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.039682567" saturationOffset="-0.079276316" brightnessOffset="0.13333333" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6407186" midpoint="0.5">
+                                       <matte red="210" green="214" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07382907" brightnessOffset="0.109803915" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.92814374" midpoint="0.5">
+                                       <matte red="242" green="246" blue="249" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.039682567" saturationOffset="-0.08241387" brightnessOffset="0.23137254" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
+                                    <point x="17.0" y="5.0" cp1x="16.294117647058837" cp1y="1.9705882352941178" cp2x="17.705882352941163" cp2y="8.029411764705882"/>
+                                    <point x="20.0" y="11.0" cp1x="18.0" cp1y="9.058823529411764" cp2x="22.0" cp2y="12.941176470588236"/>
+                                    <point x="25.0" y="14.0" cp1x="25.0" cp1y="14.0" cp2x="25.0" cp2y="14.0"/>
+                                    <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
+                                    <point x="0.0" y="15.0" cp1x="0.0" cp1y="15.0" cp2x="0.0" cp2y="15.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113e702fdf8.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="25" height="15"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="1" bottom="1" left="1" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="25" height="15"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="1" bottom="1" left="1" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="90" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-165"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="16.441176470588236" y="2.0" cp1x="15.705882352941176" cp1y="2.0" cp2x="17.176470588235297" cp2y="2.0"/>
+                                    <point x="17.52941176470588" y="6.323529411764706" cp1x="16.617647058823525" cp1y="4.117647058823527" cp2x="18.441176470588236" cp2y="8.529411764705884"/>
+                                    <point x="20.41176470588234" y="11.323529411764707" cp1x="18.05882352941175" cp1y="9.47058823529412" cp2x="22.76470588235293" cp2y="13.176470588235293"/>
+                                    <point x="24.499999999999993" y="14.235294117647056" cp1x="24.499999999999993" cp1y="14.235294117647056" cp2x="24.499999999999993" cp2y="14.235294117647056"/>
+                                    <point x="24.352941176470587" y="14.823529411764707" cp1x="24.352941176470587" cp1y="14.823529411764707" cp2x="24.352941176470587" cp2y="14.823529411764707"/>
+                                    <point x="19.823529411764667" y="11.970588235294116" cp1x="21.382352941176432" cp1y="13.352941176470583" cp2x="18.264705882352903" cp2y="10.588235294117649"/>
+                                    <point x="16.970588235294116" y="7.294117647058823" cp1x="17.76470588235294" cp1y="9.294117647058822" cp2x="16.176470588235293" cp2y="5.294117647058824"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="64" green="64" blue="65" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.0951417" brightnessOffset="-0.49019608" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.5928144" midpoint="0.5">
+                                       <matte red="83" green="84" blue="85" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.086996906" brightnessOffset="-0.4117647" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.994012" midpoint="0.5">
+                                       <matte red="148" green="150" blue="150" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.09719298" brightnessOffset="-0.15686274" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.924999994635583" y1="0.9285714285714283" x2="0.9249999986092253" y2="0.004201680672268871"/>
+                                 <points>
+                                    <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
+                                    <point x="12.0" y="11.0" cp1x="12.0" cp1y="11.0" cp2x="12.0" cp2y="11.0"/>
+                                    <point x="4.9411764705882355" y="7.499999999999999" cp1x="4.9411764705882355" cp1y="7.499999999999999" cp2x="4.9411764705882355" cp2y="7.499999999999999"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.19518717" midpoint="0.5">
+                                       <matte red="160" green="163" blue="165" alpha="186" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.04444444" saturationOffset="-0.080223285" brightnessOffset="-0.09803921" alphaOffset="-69"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="252" green="254" blue="255" alpha="215" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.09876161" brightnessOffset="0.25490195" alphaOffset="-39"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.0" y1="0.5" x2="0.573529411764707" y2="0.5"/>
+                                 <points>
+                                    <point x="-0.058823529411764705" y="1.0294117647058822" cp1x="-0.058823529411764705" cp1y="1.0294117647058822" cp2x="-0.058823529411764705" cp2y="1.0294117647058822"/>
+                                    <point x="0.9705882352941175" y="1.4999999999999987" cp1x="0.9705882352941175" cp1y="1.4999999999999987" cp2x="0.9705882352941175" cp2y="1.4999999999999987"/>
+                                    <point x="1.9411764705882355" y="2.0294117647058822" cp1x="1.9411764705882355" cp1y="2.0294117647058822" cp2x="1.9411764705882355" cp2y="2.0294117647058822"/>
+                                    <point x="1.9411764705882355" y="15.029411764705882" cp1x="1.9411764705882355" cp1y="15.029411764705882" cp2x="1.9411764705882355" cp2y="15.029411764705882"/>
+                                    <point x="-0.058823529411764705" y="15.029411764705882" cp1x="-0.058823529411764705" cp1y="15.029411764705882" cp2x="-0.058823529411764705" cp2y="15.029411764705882"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="160" green="163" blue="165" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.04444444" saturationOffset="-0.080223285" brightnessOffset="-0.09803921" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.065868266" midpoint="0.5">
+                                       <matte red="217" green="217" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="0.10588235" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11377245" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.3473054" midpoint="0.5">
+                                       <matte red="236" green="240" blue="243" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.039682567" saturationOffset="-0.081719734" brightnessOffset="0.20784312" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6407186" midpoint="0.5">
+                                       <matte red="229" green="233" blue="237" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07677104" brightnessOffset="0.18431371" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.92814374" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
+                                    <point x="17.0" y="5.0" cp1x="16.294117647058837" cp1y="1.9705882352941178" cp2x="17.705882352941163" cp2y="8.029411764705882"/>
+                                    <point x="20.0" y="11.0" cp1x="18.0" cp1y="9.058823529411764" cp2x="22.0" cp2y="12.941176470588236"/>
+                                    <point x="25.0" y="14.0" cp1x="25.0" cp1y="14.0" cp2x="25.0" cp2y="14.0"/>
+                                    <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
+                                    <point x="0.0" y="15.0" cp1x="0.0" cp1y="15.0" cp2x="0.0" cp2y="15.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114d988b120.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="25" height="15"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="1" bottom="1" left="1" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="90" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-165"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="16.441176470588236" y="2.0" cp1x="15.705882352941176" cp1y="2.0" cp2x="17.176470588235297" cp2y="2.0"/>
+                                    <point x="17.52941176470588" y="6.323529411764706" cp1x="16.617647058823525" cp1y="4.117647058823527" cp2x="18.441176470588236" cp2y="8.529411764705884"/>
+                                    <point x="20.41176470588234" y="11.323529411764707" cp1x="18.05882352941175" cp1y="9.47058823529412" cp2x="22.76470588235293" cp2y="13.176470588235293"/>
+                                    <point x="24.499999999999993" y="14.235294117647056" cp1x="24.499999999999993" cp1y="14.235294117647056" cp2x="24.499999999999993" cp2y="14.235294117647056"/>
+                                    <point x="24.352941176470587" y="14.823529411764707" cp1x="24.352941176470587" cp1y="14.823529411764707" cp2x="24.352941176470587" cp2y="14.823529411764707"/>
+                                    <point x="19.823529411764667" y="11.970588235294116" cp1x="21.382352941176432" cp1y="13.352941176470583" cp2x="18.264705882352903" cp2y="10.588235294117649"/>
+                                    <point x="16.970588235294116" y="7.294117647058823" cp1x="17.76470588235294" cp1y="9.294117647058822" cp2x="16.176470588235293" cp2y="5.294117647058824"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
+                                 <paintPoints x1="0.924999994635583" y1="0.9285714285714283" x2="0.9249999986092253" y2="0.004201680672268871"/>
+                                 <points>
+                                    <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
+                                    <point x="12.0" y="11.0" cp1x="12.0" cp1y="11.0" cp2x="12.0" cp2y="11.0"/>
+                                    <point x="4.9411764705882355" y="7.499999999999999" cp1x="4.9411764705882355" cp1y="7.499999999999999" cp2x="4.9411764705882355" cp2y="7.499999999999999"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="126" green="131" blue="135" alpha="211" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.037037015" saturationOffset="-0.043859646" brightnessOffset="-0.21568626" alphaOffset="-44"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="252" green="254" blue="255" alpha="77" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.09876161" brightnessOffset="0.25490195" alphaOffset="-178"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.0" y1="0.5" x2="0.573529411764707" y2="0.5"/>
+                                 <points>
+                                    <point x="-0.058823529411764705" y="1.0294117647058822" cp1x="-0.058823529411764705" cp1y="1.0294117647058822" cp2x="-0.058823529411764705" cp2y="1.0294117647058822"/>
+                                    <point x="0.9705882352941175" y="1.4999999999999987" cp1x="0.9705882352941175" cp1y="1.4999999999999987" cp2x="0.9705882352941175" cp2y="1.4999999999999987"/>
+                                    <point x="1.9411764705882355" y="2.0294117647058822" cp1x="1.9411764705882355" cp1y="2.0294117647058822" cp2x="1.9411764705882355" cp2y="2.0294117647058822"/>
+                                    <point x="1.9411764705882355" y="15.029411764705882" cp1x="1.9411764705882355" cp1y="15.029411764705882" cp2x="1.9411764705882355" cp2y="15.029411764705882"/>
+                                    <point x="-0.058823529411764705" y="15.029411764705882" cp1x="-0.058823529411764705" cp1y="15.029411764705882" cp2x="-0.058823529411764705" cp2y="15.029411764705882"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="126" green="131" blue="135" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.037037015" saturationOffset="-0.043859646" brightnessOffset="-0.21568626" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.065868266" midpoint="0.5">
+                                       <matte red="180" green="185" blue="187" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.06349206" saturationOffset="-0.07309316" brightnessOffset="-0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11377245" midpoint="0.5">
+                                       <matte red="205" green="210" blue="213" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.048611104" saturationOffset="-0.07296763" brightnessOffset="0.09019607" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.3473054" midpoint="0.5">
+                                       <matte red="187" green="193" blue="198" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.03535354" saturationOffset="-0.05497076" brightnessOffset="0.031372547" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6407186" midpoint="0.5">
+                                       <matte red="180" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.034188032" saturationOffset="-0.043168806" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.92814374" midpoint="0.5">
+                                       <matte red="207" green="213" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.03535354" saturationOffset="-0.0600676" brightnessOffset="0.109803915" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
+                                    <point x="17.0" y="5.0" cp1x="16.294117647058837" cp1y="1.9705882352941178" cp2x="17.705882352941163" cp2y="8.029411764705882"/>
+                                    <point x="20.0" y="11.0" cp1x="18.0" cp1y="9.058823529411764" cp2x="22.0" cp2y="12.941176470588236"/>
+                                    <point x="25.0" y="14.0" cp1x="25.0" cp1y="14.0" cp2x="25.0" cp2y="14.0"/>
+                                    <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
+                                    <point x="0.0" y="15.0" cp1x="0.0" cp1y="15.0" cp2x="0.0" cp2y="15.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114d98aee62.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </foregroundStates>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+            <region name="ScrollBarThumb" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="38" height="15"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="15" right="15"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="104" green="125" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="104" green="125" blue="143" alpha="0" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="-255"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.940909090909089" y1="0.03592814412291934" x2="0.5954545454545457" y2="0.26347304548015776"/>
+                                 <points>
+                                    <point x="37.04545454545455" y="0.0" cp1x="37.04545454545455" cp1y="0.0" cp2x="37.04545454545455" cp2y="0.0"/>
+                                    <point x="32.04545454545455" y="0.0" cp1x="32.04545454545455" cp1y="0.0" cp2x="32.04545454545455" cp2y="0.0"/>
+                                    <point x="34.681818181818194" y="2.0" cp1x="34.00000000000002" cp1y="0.7727272727272729" cp2x="35.36363636363637" cp2y="3.227272727272727"/>
+                                    <point x="35.59090909090908" y="7.590909090909094" cp1x="35.59090909090908" cp1y="7.590909090909094" cp2x="35.59090909090908" cp2y="7.590909090909094"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="29.363636363636367" y="7.681818181818182" cp1x="29.363636363636367" cp1y="7.681818181818182" cp2x="29.363636363636367" cp2y="7.681818181818182"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="104" green="125" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="129" green="148" blue="165" alpha="33" uiDefaultParentName="nimbusBase" hueOffset="5.2034855E-5" saturationOffset="-0.41753247" brightnessOffset="0.09803921" alphaOffset="-222"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.06818181818181814" y1="-0.005952381053749398" x2="0.36890908871182554" y2="0.23929171756874906"/>
+                                 <points>
+                                    <point x="6.0" y="0.0" cp1x="6.0" cp1y="0.0" cp2x="6.0" cp2y="0.0"/>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="2.4090909090909083" y="7.636363636363642" cp1x="2.4090909090909083" cp1y="7.636363636363642" cp2x="2.4090909090909083" cp2y="7.636363636363642"/>
+                                    <point x="3.0000000000000004" y="2.0454545454545503" cp1x="2.045454545454544" cp1y="3.5909090909090975" cp2x="3.954545454545457" cp2y="0.5000000000000031"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.038922157" midpoint="0.5">
+                                       <matte red="183" green="194" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.53277314" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.06287425" midpoint="0.5">
+                                       <matte red="252" green="253" blue="253" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.07865167" saturationOffset="-0.6317617" brightnessOffset="0.44313723" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.32934132" midpoint="0.5">
+                                       <matte red="168" green="189" blue="208" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44340658" brightnessOffset="0.26666665" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6497006" midpoint="0.5">
+                                       <matte red="197" green="218" blue="237" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4669379" brightnessOffset="0.38039213" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="237" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.07865167" saturationOffset="-0.56512606" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="1.0" y="1.0" cp1x="1.0" cp1y="1.0" cp2x="0.9545454545454546" cp2y="9.45454545454545"/>
+                                    <point x="15.0" y="14.0" cp1x="9.136363636363646" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
+                                    <point x="23.0" y="14.0" cp1x="23.0" cp1y="14.0" cp2x="28.909090909090935" cp2y="13.999999999999996"/>
+                                    <point x="37.0" y="1.0" cp1x="36.95454545454545" cp1y="9.36363636363636" cp2x="37.0" cp2y="1.0"/>
+                                    <point x="37.0" y="0.0" cp1x="37.0" cp1y="0.0" cp2x="37.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="9" green="30" blue="49" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="0.18061227" brightnessOffset="-0.35686278" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="54" green="75" blue="94" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.21018237" brightnessOffset="-0.18039218" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="7.0"/>
+                                    <point x="15.0" y="15.0" cp1x="5.0" cp1y="15.0" cp2x="15.0" cp2y="15.0"/>
+                                    <point x="23.0" y="15.0" cp1x="23.0" cp1y="15.0" cp2x="33.0" cp2y="15.0"/>
+                                    <point x="38.0" y="1.0" cp1x="38.0" cp1y="7.0" cp2x="38.0" cp2y="1.0"/>
+                                    <point x="38.0" y="0.0" cp1x="38.0" cp1y="0.0" cp2x="38.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113e6a24589.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="38" height="15"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="15" right="15"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="104" green="125" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="104" green="125" blue="143" alpha="0" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="-255"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.940909090909089" y1="0.03592814412291934" x2="0.5954545454545457" y2="0.26347304548015776"/>
+                                 <points>
+                                    <point x="37.04545454545455" y="0.0" cp1x="37.04545454545455" cp1y="0.0" cp2x="37.04545454545455" cp2y="0.0"/>
+                                    <point x="32.04545454545455" y="0.0" cp1x="32.04545454545455" cp1y="0.0" cp2x="32.04545454545455" cp2y="0.0"/>
+                                    <point x="34.681818181818194" y="2.0" cp1x="34.00000000000002" cp1y="0.7727272727272729" cp2x="35.36363636363637" cp2y="3.227272727272727"/>
+                                    <point x="35.59090909090908" y="7.590909090909094" cp1x="35.59090909090908" cp1y="7.590909090909094" cp2x="35.59090909090908" cp2y="7.590909090909094"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="29.363636363636367" y="7.681818181818182" cp1x="29.363636363636367" cp1y="7.681818181818182" cp2x="29.363636363636367" cp2y="7.681818181818182"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="104" green="125" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="129" green="148" blue="165" alpha="33" uiDefaultParentName="nimbusBase" hueOffset="5.2034855E-5" saturationOffset="-0.41753247" brightnessOffset="0.09803921" alphaOffset="-222"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.06818181818181814" y1="-0.005952381053749398" x2="0.36890908871182554" y2="0.23929171756874906"/>
+                                 <points>
+                                    <point x="6.0" y="0.0" cp1x="6.0" cp1y="0.0" cp2x="6.0" cp2y="0.0"/>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="2.4090909090909083" y="7.636363636363642" cp1x="2.4090909090909083" cp1y="7.636363636363642" cp2x="2.4090909090909083" cp2y="7.636363636363642"/>
+                                    <point x="3.0000000000000004" y="2.0454545454545503" cp1x="2.045454545454544" cp1y="3.5909090909090975" cp2x="3.954545454545457" cp2y="0.5000000000000031"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.038922157" midpoint="0.5">
+                                       <matte red="189" green="196" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.5621849" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.06287425" midpoint="0.5">
+                                       <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6317773" brightnessOffset="0.4470588" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.32934132" midpoint="0.5">
+                                       <matte red="187" green="208" blue="227" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.45950285" brightnessOffset="0.34117645" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6497006" midpoint="0.5">
+                                       <matte red="216" green="237" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.48277313" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="1.0" y="1.0" cp1x="1.0" cp1y="1.0" cp2x="0.9545454545454546" cp2y="9.45454545454545"/>
+                                    <point x="15.0" y="14.0" cp1x="9.136363636363646" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
+                                    <point x="23.0" y="14.0" cp1x="23.0" cp1y="14.0" cp2x="28.909090909090935" cp2y="13.999999999999996"/>
+                                    <point x="37.0" y="1.0" cp1x="36.95454545454545" cp1y="9.36363636363636" cp2x="37.0" cp2y="1.0"/>
+                                    <point x="37.0" y="0.0" cp1x="37.0" cp1y="0.0" cp2x="37.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="9" green="30" blue="49" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="0.18061227" brightnessOffset="-0.35686278" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="54" green="75" blue="94" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.21018237" brightnessOffset="-0.18039218" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="7.0"/>
+                                    <point x="15.0" y="15.0" cp1x="5.0" cp1y="15.0" cp2x="15.0" cp2y="15.0"/>
+                                    <point x="23.0" y="15.0" cp1x="23.0" cp1y="15.0" cp2x="33.0" cp2y="15.0"/>
+                                    <point x="38.0" y="1.0" cp1x="38.0" cp1y="7.0" cp2x="38.0" cp2y="1.0"/>
+                                    <point x="38.0" y="0.0" cp1x="38.0" cp1y="0.0" cp2x="38.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1141ec296f1.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="38" height="15"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="15" right="15"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="36" green="42" blue="48" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.3857143" brightnessOffset="-0.36078435" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="104" green="125" blue="143" alpha="0" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="-255"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.940909090909089" y1="0.03592814412291934" x2="0.3761563291933634" y2="0.3491017889731149"/>
+                                 <points>
+                                    <point x="37.04545454545455" y="0.0" cp1x="37.04545454545455" cp1y="0.0" cp2x="37.04545454545455" cp2y="0.0"/>
+                                    <point x="31.34545454545454" y="0.0" cp1x="31.34545454545454" cp1y="0.0" cp2x="31.34545454545454" cp2y="0.0"/>
+                                    <point x="34.38181818181821" y="2.0999999999999996" cp1x="33.70000000000004" cp1y="0.872727272727273" cp2x="35.063636363636384" cp2y="3.3272727272727267"/>
+                                    <point x="35.59090909090908" y="7.590909090909094" cp1x="35.59090909090908" cp1y="7.590909090909094" cp2x="35.59090909090908" cp2y="7.590909090909094"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="29.363636363636367" y="7.681818181818182" cp1x="29.363636363636367" cp1y="7.681818181818182" cp2x="29.363636363636367" cp2y="7.681818181818182"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="39" green="47" blue="54" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-8.738637E-4" saturationOffset="-0.3579365" brightnessOffset="-0.33725494" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="129" green="148" blue="165" alpha="33" uiDefaultParentName="nimbusBase" hueOffset="5.2034855E-5" saturationOffset="-0.41753247" brightnessOffset="0.09803921" alphaOffset="-222"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.06818181818181814" y1="-0.005952381053749398" x2="0.36890908871182554" y2="0.23929171756874906"/>
+                                 <points>
+                                    <point x="6.0" y="0.0" cp1x="6.0" cp1y="0.0" cp2x="6.0" cp2y="0.0"/>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="2.4090909090909083" y="7.636363636363642" cp1x="2.4090909090909083" cp1y="7.636363636363642" cp2x="2.4090909090909083" cp2y="7.636363636363642"/>
+                                    <point x="3.0000000000000004" y="2.0454545454545503" cp1x="2.045454545454544" cp1y="3.5909090909090975" cp2x="3.954545454545457" cp2y="0.5000000000000031"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.038922157" midpoint="0.5">
+                                       <matte red="89" green="113" blue="136" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.002908647" saturationOffset="-0.29012606" brightnessOffset="-0.015686274" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.06287425" midpoint="0.5">
+                                       <matte red="151" green="175" blue="196" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-8.738637E-4" saturationOffset="-0.40612245" brightnessOffset="0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.32934132" midpoint="0.5">
+                                       <matte red="55" green="102" blue="144" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.01765871" brightnessOffset="0.015686274" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6497006" midpoint="0.5">
+                                       <matte red="86" green="133" blue="175" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.12714285" brightnessOffset="0.1372549" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="131" green="177" blue="220" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0018727183" saturationOffset="-0.23116884" brightnessOffset="0.31372547" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="1.0" y="1.0" cp1x="1.0" cp1y="1.0" cp2x="0.9545454545454546" cp2y="9.45454545454545"/>
+                                    <point x="15.0" y="14.0" cp1x="9.136363636363646" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
+                                    <point x="23.0" y="14.0" cp1x="23.0" cp1y="14.0" cp2x="28.909090909090935" cp2y="13.999999999999996"/>
+                                    <point x="37.0" y="1.0" cp1x="36.95454545454545" cp1y="9.36363636363636" cp2x="37.0" cp2y="1.0"/>
+                                    <point x="37.0" y="0.0" cp1x="37.0" cp1y="0.0" cp2x="37.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="4" green="30" blue="54" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="0.29021162" brightnessOffset="-0.33725494" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="7.0"/>
+                                    <point x="15.0" y="15.0" cp1x="5.0" cp1y="15.0" cp2x="15.0" cp2y="15.0"/>
+                                    <point x="23.0" y="15.0" cp1x="23.0" cp1y="15.0" cp2x="33.0" cp2y="15.0"/>
+                                    <point x="38.0" y="1.0" cp1x="38.0" cp1y="7.0" cp2x="38.0" cp2y="1.0"/>
+                                    <point x="38.0" y="0.0" cp1x="38.0" cp1y="0.0" cp2x="38.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114d984fa41.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </region>
+            <region name="ScrollBarTrack" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="15"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="18.0" y1="0.0" y2="15.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.016129032" midpoint="0.5">
+                                       <matte red="191" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.10016362" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.061290324" midpoint="0.49019608">
+                                       <matte red="197" green="198" blue="199" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.100476064" brightnessOffset="0.035294116" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.26451612" midpoint="0.27979276">
+                                       <matte red="223" green="223" blue="224" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10606203" brightnessOffset="0.13333333" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.88387096" midpoint="0.5">
+                                       <matte red="253" green="253" blue="253" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140138e9be.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheSettingsInherited>false</cacheSettingsInherited>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="34" height="15"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="10" right="9"/>
+                        <layer name="Layer 2">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="160" green="163" blue="167" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.06861015" brightnessOffset="-0.09019607" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06766917" brightnessOffset="0.07843137" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.8645834554400952" y1="0.20952380952380953" x2="0.020833188460903894" y2="0.9523809523809526"/>
+                                 <points>
+                                    <point x="25.99999999999998" y="13.499999999999998" cp1x="25.571428571428548" cp1y="12.85714285714286" cp2x="26.42857142857141" cp2y="14.142857142857137"/>
+                                    <point x="30.642857142857142" y="10.999999999999996" cp1x="29.07142857142857" cp1y="12.642857142857135" cp2x="32.214285714285715" cp2y="9.357142857142858"/>
+                                    <point x="32.57142857142857" y="6.928571428571431" cp1x="33.28571428571429" cp1y="7.5714285714285765" cp2x="31.857142857142847" cp2y="6.285714285714285"/>
+                                    <point x="29.71428571428571" y="10.285714285714285" cp1x="30.428571428571423" cp1y="9.42857142857143" cp2x="29.0" cp2y="11.142857142857139"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="155" green="158" blue="162" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.06731644" brightnessOffset="-0.109803915" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="209" green="212" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06924191" brightnessOffset="0.109803915" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.12719298862023998" y1="0.1315789407640286" x2="0.907894728916834" y2="0.8771929886202403"/>
+                                 <points>
+                                    <point x="1.1428571428571428" y="6.857142857142858" cp1x="0.3571428571428572" cp1y="7.428571428571431" cp2x="1.9285714285714284" cp2y="6.285714285714285"/>
+                                    <point x="4.642857142857142" y="10.35714285714286" cp1x="3.285714285714285" cp1y="8.78571428571429" cp2x="6.0" cp2y="11.928571428571429"/>
+                                    <point x="8.714285714285712" y="13.64285714285714" cp1x="8.928571428571425" cp1y="12.64285714285714" cp2x="8.499999999999998" cp2y="14.64285714285714"/>
+                                    <point x="3.5714285714285707" y="11.571428571428573" cp1x="5.071428571428571" cp1y="13.214285714285719" cp2x="2.0714285714285703" cp2y="9.928571428571427"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.87096775">
+                                       <matte red="60" green="61" blue="62" alpha="0" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07826825" brightnessOffset="-0.5019608" alphaOffset="-255"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="56" green="57" blue="59" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.05967886" brightnessOffset="-0.5137255" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="-0.045918367346938736" y1="0.1833642539170922" x2="0.8724489795918368" y2="0.040507111059949225"/>
+                                 <points>
+                                    <point x="34.0" y="0.0" cp1x="34.0" cp1y="0.0" cp2x="34.0" cp2y="0.0"/>
+                                    <point x="27.0" y="0.0" cp1x="27.0" cp1y="0.0" cp2x="27.0" cp2y="0.0"/>
+                                    <point x="27.0" y="14.0" cp1x="27.0" cp1y="14.0" cp2x="27.0" cp2y="14.0"/>
+                                    <point x="31.07142857142855" y="10.928571428571425" cp1x="30.07142857142855" cp1y="11.928571428571425" cp2x="32.071428571428555" cp2y="9.928571428571425"/>
+                                    <point x="34.0" y="6.0" cp1x="34.0" cp1y="6.0" cp2x="34.0" cp2y="6.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.1">
+                                       <matte red="56" green="57" blue="59" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.05967886" brightnessOffset="-0.5137255" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="56" green="57" blue="59" alpha="0" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.05967886" brightnessOffset="-0.5137255" alphaOffset="-255"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.0" y1="0.0" x2="0.9285714285714282" y2="0.12244897959183673"/>
+                                 <points>
+                                    <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="6.0" cp1x="0.0" cp1y="6.0" cp2x="0.0" cp2y="6.0"/>
+                                    <point x="3.0" y="11.0" cp1x="2.0" cp1y="10.0" cp2x="4.0" cp2y="12.0"/>
+                                    <point x="6.785714285714284" y="13.999999999999995" cp1x="6.785714285714284" cp1y="13.999999999999995" cp2x="6.785714285714284" cp2y="13.999999999999995"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="34.0" y1="0.0" y2="15.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="104" green="105" blue="109" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.02222228" saturationOffset="-0.06465475" brightnessOffset="-0.31764707" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.061290324" midpoint="0.5">
+                                       <matte red="134" green="136" blue="140" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06766917" brightnessOffset="-0.19607842" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.13225806" midpoint="0.5">
+                                       <matte red="170" green="173" blue="178" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0655825" brightnessOffset="-0.04705882" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.30967742" midpoint="0.32105264">
+                                       <matte red="195" green="197" blue="203" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.071117446" brightnessOffset="0.05098039" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.82258064" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140122fb90.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </region>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JScrollPane" name="ScrollPane" ui="ScrollPaneUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="3" bottom="3" left="3" right="3"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties>
+               <uiProperty name="useChildTextComponentFocus" type="BOOLEAN" value="true"/>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates>
+            <state stateKeys="Enabled+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
+                              <point x="2.0" y="22.0" cp1x="2.0" cp1y="22.0" cp2x="2.0" cp2y="22.0"/>
+                              <point x="120.0" y="22.0" cp1x="120.0" cp1y="22.0" cp2x="120.0" cp2y="22.0"/>
+                              <point x="120.0" y="2.0" cp1x="120.0" cp1y="2.0" cp2x="120.0" cp2y="2.0"/>
+                              <point x="121.4" y="2.0" cp1x="121.5" cp1y="2.0" cp2x="121.5" cp2y="2.0"/>
+                              <point x="121.4" y="23.4" cp1x="121.4" cp1y="23.4" cp2x="121.4" cp2y="23.4"/>
+                              <point x="0.6" y="23.4" cp1x="0.6" cp1y="23.4" cp2x="0.6" cp2y="23.4"/>
+                              <point x="0.6" y="0.6" cp1x="0.6" cp1y="0.6" cp2x="0.6" cp2y="0.6"/>
+                              <point x="121.4" y="0.6" cp1x="121.4" cp1y="0.6" cp2x="121.4" cp2y="0.6"/>
+                              <point x="121.4" y="2.0" cp1x="121.4" cp1y="2.0" cp2x="121.4" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="119.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="2.0" y2="3.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="119.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="2.0" y2="3.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </borderStates>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JViewport" name="Viewport" ui="ViewportUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates/>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JSlider" name="Slider" ui="SliderUI" subregion="false">
+         <stateTypes>
+            <stateType key="Enabled"/>
+            <stateType key="MouseOver"/>
+            <stateType key="Pressed"/>
+            <stateType key="Disabled"/>
+            <stateType key="Focused"/>
+            <stateType key="Selected"/>
+            <stateType key="ArrowShape">
+               <codeSnippet><![CDATA[ return c.getClientProperty("Slider.paintThumbArrowShape") == Boolean.TRUE; ]]></codeSnippet>
+            </stateType>
+         </stateTypes>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <uiproperties>
+               <uiProperty name="thumbWidth" type="INT" value="17"/>
+               <uiProperty name="thumbHeight" type="INT" value="17"/>
+               <uiProperty name="trackBorder" type="INT" value="0"/>
+               <uiProperty name="paintValue" type="BOOLEAN" value="false"/>
+               <uiProperty name="tickColor" type="COLOR">
+                  <matte red="35" green="40" blue="48" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+               </uiProperty>
+            </uiproperties>
+         </style>
+         <backgroundStates/>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <region name="SliderThumb" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="221" green="225" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.5924243" brightnessOffset="0.35686272" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.42513368" midpoint="0.5">
+                                       <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="208" green="214" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56844974" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5023510971786834" y1="0.0015673981191222587" x2="0.5023510971786838" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="190" green="196" blue="205" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.5625436" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="173" green="180" blue="189" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.015098333" saturationOffset="-0.55105823" brightnessOffset="0.19215685" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.510610079575597" y1="-4.553649124439119E-18" x2="0.4993368700265251" y2="1.0039787798408488"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1139ea2c125.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="249" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.023096085" saturationOffset="-0.6238095" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.42513368" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.69786096" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="184" green="205" blue="224" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.45714286" brightnessOffset="0.32941175" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0015673981191222587" x2="0.5" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="36" green="57" blue="75" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.11571431" brightnessOffset="-0.25490198" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.51" y1="-4.553649124439119E-18" x2="0.51" y2="1.0039787798408488"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="15.0" y1="3.0" y2="16.0">
+                                 <matte red="111" green="116" blue="125" alpha="99" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.003968239" saturationOffset="0.0014736876" brightnessOffset="-0.25490198" alphaOffset="-156"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1139e25a3ea.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="249" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.023096085" saturationOffset="-0.6238095" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.42513368" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.69786096" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="184" green="205" blue="224" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.45714286" brightnessOffset="0.32941175" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0015673981191222587" x2="0.5" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="36" green="57" blue="75" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.11571431" brightnessOffset="-0.25490198" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.51" y1="-4.553649124439119E-18" x2="0.51" y2="1.0039787798408488"/>
+                              </ellipse>
+                              <ellipse x1="0.6" x2="16.4" y1="0.6" y2="16.4">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused+MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="251" green="252" blue="253" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.62780917" brightnessOffset="0.44313723" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.42513368" midpoint="0.5">
+                                       <matte red="185" green="205" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.4653107" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.69786096" midpoint="0.5">
+                                       <matte red="183" green="204" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4563421" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="201" green="222" blue="240" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4732143" brightnessOffset="0.39215684" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5023510971786834" y1="0.0015673981191222587" x2="0.5023510971786838" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="53" green="80" blue="102" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0038217902" saturationOffset="-0.15532213" brightnessOffset="-0.14901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.510610079575597" y1="-4.553649124439119E-18" x2="0.4993368700265251" y2="1.0039787798408488"/>
+                              </ellipse>
+                              <ellipse x1="0.6" x2="16.4" y1="0.6" y2="16.4">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1139ea4a6e6.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused+Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="166" green="186" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.44943976" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.47593582" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.5962567" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="83" green="129" blue="171" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.121094406" brightnessOffset="0.12156862" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5023510971786834" y1="0.0015673981191222587" x2="0.5023510971786838" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="38" green="66" blue="92" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.04875779" brightnessOffset="-0.18823531" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.510610079575597" y1="-4.553649124439119E-18" x2="0.4993368700265251" y2="1.0039787798408488"/>
+                              </ellipse>
+                              <ellipse x1="0.6" x2="16.4" y1="0.6" y2="16.4">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1139ea77546.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="251" green="252" blue="253" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.62780917" brightnessOffset="0.44313723" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.42513368" midpoint="0.5">
+                                       <matte red="185" green="205" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.4653107" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.69786096" midpoint="0.5">
+                                       <matte red="183" green="204" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4563421" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="201" green="222" blue="240" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4732143" brightnessOffset="0.39215684" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5023510971786834" y1="0.0015673981191222587" x2="0.5023510971786838" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="53" green="80" blue="102" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0038217902" saturationOffset="-0.15532213" brightnessOffset="-0.14901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.510610079575597" y1="-4.553649124439119E-18" x2="0.4993368700265251" y2="1.0039787798408488"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="15.0" y1="3.0" y2="16.0">
+                                 <matte red="111" green="116" blue="125" alpha="99" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.003968239" saturationOffset="0.0014736876" brightnessOffset="-0.25490198" alphaOffset="-156"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1139ea4a6e6.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="166" green="186" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.44943976" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.47593582" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.5962567" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="83" green="129" blue="171" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.121094406" brightnessOffset="0.12156862" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5023510971786834" y1="0.0015673981191222587" x2="0.5023510971786838" y2="1.0"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="38" green="66" blue="92" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.04875779" brightnessOffset="-0.18823531" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.510610079575597" y1="-4.553649124439119E-18" x2="0.4993368700265251" y2="1.0039787798408488"/>
+                              </ellipse>
+                              <ellipse x1="2.0" x2="15.0" y1="3.0" y2="16.0">
+                                 <matte red="255" green="255" blue="255" alpha="134" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-121"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </ellipse>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1139ea77546.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+ArrowShape">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.061290324" midpoint="0.5">
+                                       <matte red="248" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.023096085" saturationOffset="-0.62376213" brightnessOffset="0.4352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.14193548" midpoint="0.5">
+                                       <matte red="232" green="237" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.594392" brightnessOffset="0.39999998" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.46129033" midpoint="0.5">
+                                       <matte red="166" green="187" blue="205" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4454704" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7354839" midpoint="0.5">
+                                       <matte red="191" green="212" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.8516129" midpoint="0.5">
+                                       <matte red="208" green="229" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47442397" brightnessOffset="0.4235294" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
+                                    <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
+                                    <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="104" green="121" blue="135" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0033828616" saturationOffset="-0.40608466" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.48064515" midpoint="0.5">
+                                       <matte red="47" green="68" blue="87" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.17594418" brightnessOffset="-0.20784315" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="32" green="50" blue="67" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0023007393" saturationOffset="-0.11332625" brightnessOffset="-0.28627452" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
+                                    <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
+                                    <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="150" green="156" blue="168" alpha="146" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="4.083333333333332" y="2.503787878787879" cp1x="2.2198078146656997" cp1y="2.872783314232221" cp2x="5.647660212943894" cp2y="2.194036564766758"/>
+                                    <point x="15.962727272727284" y="9.281818181818181" cp1x="16.020900857276246" cp1y="8.817054690620388" cp2x="15.621858714169313" cp2y="12.005103372910728"/>
+                                    <point x="3.5031818181818175" y="15.846818181818183" cp1x="8.071309735244107" cp1y="15.840803266669884" cp2x="-0.020213740918331703" cp2y="15.85145748389261"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Disabled+ArrowShape">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="221" green="225" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.5924243" brightnessOffset="0.35686272" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.42513368" midpoint="0.5">
+                                       <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="208" green="214" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56844974" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
+                                    <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
+                                    <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="190" green="196" blue="205" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.5625436" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="173" green="180" blue="189" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.015098333" saturationOffset="-0.55105823" brightnessOffset="0.19215685" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
+                                    <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
+                                    <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+ArrowShape">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="251" green="252" blue="253" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.62780917" brightnessOffset="0.44313723" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.42513368" midpoint="0.5">
+                                       <matte red="185" green="205" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.4653107" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.69786096" midpoint="0.5">
+                                       <matte red="183" green="204" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4563421" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="201" green="222" blue="240" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4732143" brightnessOffset="0.39215684" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
+                                    <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
+                                    <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="53" green="80" blue="102" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0038217902" saturationOffset="-0.15532213" brightnessOffset="-0.14901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
+                                    <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
+                                    <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="150" green="156" blue="168" alpha="146" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="4.083333333333332" y="2.503787878787879" cp1x="2.2198078146656997" cp1y="2.872783314232221" cp2x="5.647660212943894" cp2y="2.194036564766758"/>
+                                    <point x="15.962727272727284" y="9.281818181818181" cp1x="16.020900857276246" cp1y="8.817054690620388" cp2x="15.621858714169313" cp2y="12.005103372910728"/>
+                                    <point x="3.5031818181818175" y="15.846818181818183" cp1x="8.071309735244107" cp1y="15.840803266669884" cp2x="-0.020213740918331703" cp2y="15.85145748389261"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+ArrowShape">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="166" green="186" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.44943976" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.47593582" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.5962567" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="83" green="129" blue="171" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.121094406" brightnessOffset="0.12156862" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
+                                    <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
+                                    <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="38" green="66" blue="92" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.04875779" brightnessOffset="-0.18823531" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
+                                    <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
+                                    <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="150" green="156" blue="168" alpha="146" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="4.083333333333332" y="2.503787878787879" cp1x="2.2198078146656997" cp1y="2.872783314232221" cp2x="5.647660212943894" cp2y="2.194036564766758"/>
+                                    <point x="15.962727272727284" y="9.281818181818181" cp1x="16.020900857276246" cp1y="8.817054690620388" cp2x="15.621858714169313" cp2y="12.005103372910728"/>
+                                    <point x="3.5031818181818175" y="15.846818181818183" cp1x="8.071309735244107" cp1y="15.840803266669884" cp2x="-0.020213740918331703" cp2y="15.85145748389261"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused+ArrowShape">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.061290324" midpoint="0.5">
+                                       <matte red="248" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.023096085" saturationOffset="-0.62376213" brightnessOffset="0.4352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.14193548" midpoint="0.5">
+                                       <matte red="232" green="237" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.594392" brightnessOffset="0.39999998" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.46129033" midpoint="0.5">
+                                       <matte red="166" green="187" blue="205" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4454704" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7354839" midpoint="0.5">
+                                       <matte red="191" green="212" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.8516129" midpoint="0.5">
+                                       <matte red="208" green="229" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47442397" brightnessOffset="0.4235294" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.4925773044082732" y1="0.08201986267797506" x2="0.4925773044082731" y2="0.9179801373220249"/>
+                                 <points>
+                                    <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
+                                    <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
+                                    <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="104" green="121" blue="135" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0033828616" saturationOffset="-0.40608466" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.48064515" midpoint="0.5">
+                                       <matte red="47" green="68" blue="87" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.17594418" brightnessOffset="-0.20784315" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="32" green="50" blue="67" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0023007393" saturationOffset="-0.11332625" brightnessOffset="-0.28627452" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
+                                    <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
+                                    <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="3.0029761904761894" y="0.5863771645021645" cp1x="1.139450671808557" cp1y="0.9553725999465068" cp2x="4.5673030700867505" cp2y="0.27662585048104366"/>
+                                    <point x="15.962727272727284" y="9.281818181818181" cp1x="15.967133116737259" cp1y="8.093702027571416" cp2x="15.955362732066009" cp2y="11.267800824067251"/>
+                                    <point x="3.5031818181818175" y="16.34681818181818" cp1x="6.274868164827076" cp1y="16.33784359983059" cp2x="-0.25171732582327255" cp2y="16.358976357747352"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused+MouseOver+ArrowShape">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="251" green="252" blue="253" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.62780917" brightnessOffset="0.44313723" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.42513368" midpoint="0.5">
+                                       <matte red="185" green="205" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.4653107" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.69786096" midpoint="0.5">
+                                       <matte red="183" green="204" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4563421" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="201" green="222" blue="240" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4732143" brightnessOffset="0.39215684" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
+                                    <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
+                                    <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="53" green="80" blue="102" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0038217902" saturationOffset="-0.15532213" brightnessOffset="-0.14901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
+                                    <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
+                                    <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="3.0029761904761894" y="0.5863771645021645" cp1x="1.139450671808557" cp1y="0.9553725999465068" cp2x="4.5673030700867505" cp2y="0.27662585048104366"/>
+                                    <point x="15.962727272727284" y="9.281818181818181" cp1x="15.967133116737259" cp1y="8.093702027571416" cp2x="15.955362732066009" cp2y="11.267800824067251"/>
+                                    <point x="3.5031818181818175" y="16.34681818181818" cp1x="6.274868164827076" cp1y="16.33784359983059" cp2x="-0.25171732582327255" cp2y="16.358976357747352"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused+Pressed+ArrowShape">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="17" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="166" green="186" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.44943976" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.47593582" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.5962567" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="83" green="129" blue="171" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.121094406" brightnessOffset="0.12156862" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
+                                    <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
+                                    <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="38" green="66" blue="92" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.04875779" brightnessOffset="-0.18823531" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
+                                    <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
+                                    <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="3.0029761904761894" y="0.5863771645021645" cp1x="1.139450671808557" cp1y="0.9553725999465068" cp2x="4.5673030700867505" cp2y="0.27662585048104366"/>
+                                    <point x="15.962727272727284" y="9.281818181818181" cp1x="15.967133116737259" cp1y="8.093702027571416" cp2x="15.955362732066009" cp2y="11.267800824067251"/>
+                                    <point x="3.5031818181818175" y="16.34681818181818" cp1x="6.274868164827076" cp1y="16.33784359983059" cp2x="-0.25171732582327255" cp2y="16.358976357747352"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </region>
+            <region name="SliderTrack" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="23" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="6" bottom="6" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="1.4705882352941173" x2="21.529411764705873" y1="7.0" y2="11.0" rounding="3.999999999999999">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="196" green="200" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.061982628" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.27540106" midpoint="0.5">
+                                       <matte red="201" green="205" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.058639523" brightnessOffset="0.086274505" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="206" green="209" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="-0.059835073" brightnessOffset="0.10588235" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="23.0" y1="6.0" y2="11.0" rounding="4.941176470588243">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="193" green="196" blue="203" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.061265234" brightnessOffset="0.05098039" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="206" green="209" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="-0.059835073" brightnessOffset="0.10588235" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.07647058823529412" x2="0.25" y2="0.9117647058823533"/>
+                              </rectangle>
+                              <rectangle x1="1.0" x2="22.0" y1="9.0" y2="16.0" rounding="8.705882352941174">
+                                 <matte red="255" green="255" blue="255" alpha="10" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-245"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1139e90e32c.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheSettingsInherited>false</cacheSettingsInherited>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="23" height="17"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="6" bottom="6" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="1.441176470588235" x2="21.49999999999999" y1="7.0" y2="11.0" rounding="3.999999999999999">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="155" green="160" blue="168" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.03314536" brightnessOffset="-0.086274505" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.27540106" midpoint="0.5">
+                                       <matte red="172" green="176" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.004273474" saturationOffset="-0.040256046" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7058824" midpoint="0.5">
+                                       <matte red="187" green="192" blue="202" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.03626889" brightnessOffset="0.04705882" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="23.0" y1="6.0" y2="11.0" rounding="4.941176470588243">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="145" green="149" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.034093194" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="158" green="162" blue="173" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01111114" saturationOffset="-0.023821115" brightnessOffset="-0.06666666" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.07647058823529412" x2="0.25" y2="0.9117647058823533"/>
+                              </rectangle>
+                              <rectangle x1="1.0" x2="22.0" y1="9.0" y2="12.0" rounding="8.705882352941174">
+                                 <matte red="255" green="255" blue="255" alpha="144" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-111"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1139e0a2168.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </region>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JSpinner" name="Spinner" ui="SpinnerUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiComponent opaque="false" componentName="Spinner.editor" type="javax.swing.JPanel" name="Panel" ui="PanelUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates/>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+            <uiComponent opaque="false" type="javax.swing.JFormattedTextField" name="FormattedTextField" ui="FormattedTextFieldUI" subregion="true" key="Panel:&quot;Spinner.formattedTextField&quot;">
+               <stateTypes/>
+               <contentMargins top="6" bottom="5" left="6" right="6"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground>
+                           <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="64" height="24"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="3" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
+                                 <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.016586483" saturationOffset="-0.6051466" brightnessOffset="0.3490196" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
+                                 <matte red="208" green="210" blue="215" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.040395975" saturationOffset="-0.60315615" brightnessOffset="0.29411763" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="220" green="222" blue="227" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07968931" brightnessOffset="0.14509803" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="212" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07856284" brightnessOffset="0.11372548" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="1.0" x2="0.5" y2="0.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="199" green="202" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07187897" brightnessOffset="0.06666666" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="202" green="204" blue="209" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07703349" brightnessOffset="0.0745098" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="22.0" y2="23.0" rounding="0.0">
+                                 <matte red="0" green="0" blue="0" alpha="18" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-237"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="64" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="3" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
+                                 <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.1684492">
+                                       <matte red="203" green="203" blue="204" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105624355" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.99147725" midpoint="0.5">
+                                       <matte red="196" green="196" blue="194" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.08" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="22.0" y2="23.0" rounding="0.0">
+                                 <matte red="0" green="0" blue="0" alpha="18" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-237"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="64" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="3" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
+                                 <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.1684492">
+                                       <matte red="203" green="203" blue="204" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105624355" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.99147725" midpoint="0.5">
+                                       <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.6666666666666666" x2="63.91666666666666" y1="0.6666666666666666" y2="23.249999999999996" rounding="0.0">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="64" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="3" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
+                                 <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.1684492">
+                                       <matte red="203" green="203" blue="204" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105624355" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.99147725" midpoint="0.5">
+                                       <matte red="196" green="196" blue="194" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.08" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="22.0" y2="23.0" rounding="0.0">
+                                 <matte red="0" green="0" blue="0" alpha="18" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-237"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+Focused">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="64" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="3" right="1"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
+                                 <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.1684492">
+                                       <matte red="203" green="203" blue="204" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105624355" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.99147725" midpoint="0.5">
+                                       <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.6666666666666666" x2="63.91666666666666" y1="0.6666666666666666" y2="23.249999999999996" rounding="0.0">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+            <uiComponent opaque="false" componentName="Spinner.previousButton" type="javax.swing.plaf.synth.SynthArrowButton" name="ArrowButton" ui="SynthArrowButtonUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties>
+                     <uiProperty name="size" type="INT" value="20"/>
+                  </uiproperties>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="6" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="212" green="217" blue="224" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.018570602" saturationOffset="-0.5821429" brightnessOffset="0.32941175" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11497326" midpoint="0.5">
+                                       <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="206" green="212" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.567841" brightnessOffset="0.31764704" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
+                                    <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
+                                    <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
+                                    <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="184" green="191" blue="200" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.015098333" saturationOffset="-0.5557143" brightnessOffset="0.2352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="178" green="185" blue="193" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.55799407" brightnessOffset="0.20784312" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                    <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
+                                    <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
+                                    <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113a3d47f23.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="6" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="204" green="215" blue="226" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5383692" brightnessOffset="0.33725488" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11497326" midpoint="0.5">
+                                       <matte red="165" green="186" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.44453782" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.36898395" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="191" green="212" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
+                                    <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
+                                    <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
+                                    <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="66" green="87" blue="106" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.2583558" brightnessOffset="-0.13333336" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                    <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
+                                    <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
+                                    <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="100" green="104" blue="112" alpha="107" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0033834577" brightnessOffset="-0.30588236" alphaOffset="-148"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                    <point x="0.0" y="11.0" cp1x="0.0" cp1y="11.0" cp2x="0.0" cp2y="11.0"/>
+                                    <point x="13.227272727272727" y="11.0" cp1x="13.227272727272727" cp1y="11.0" cp2x="15.340909090909106" cp2y="11.0"/>
+                                    <point x="18.0" y="6.0" cp1x="18.0" cp1y="9.0" cp2x="18.0" cp2y="6.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113a3b7c40b.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="6" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="204" green="215" blue="226" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5383692" brightnessOffset="0.33725488" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11497326" midpoint="0.5">
+                                       <matte red="165" green="186" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.44453782" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.36898395" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="191" green="212" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
+                                    <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
+                                    <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
+                                    <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="66" green="87" blue="106" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.2583558" brightnessOffset="-0.13333336" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                    <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
+                                    <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
+                                    <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="11.4" cp1x="0.0" cp1y="11.4" cp2x="0.0" cp2y="11.4"/>
+                                    <point x="14.4" y="11.4" cp1x="14.4" cp1y="11.4" cp2x="17.4" cp2y="11.4"/>
+                                    <point x="19.4" y="7.4" cp1x="19.4" cp1y="10.4" cp2x="19.4" cp2y="7.4"/>
+                                    <point x="19.4" y="0.0" cp1x="19.4" cp1y="0.0" cp2x="19.4" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="6" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="221" green="233" blue="244" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0010585189" saturationOffset="-0.541452" brightnessOffset="0.4078431" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11497326" midpoint="0.5">
+                                       <matte red="184" green="204" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.00254488" saturationOffset="-0.4608264" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.36898395" midpoint="0.5">
+                                       <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="210" green="231" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4757143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
+                                    <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
+                                    <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
+                                    <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="19" green="45" blue="69" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="0.088923395" brightnessOffset="-0.2784314" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                    <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
+                                    <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
+                                    <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="11.4" cp1x="0.0" cp1y="11.4" cp2x="0.0" cp2y="11.4"/>
+                                    <point x="14.4" y="11.4" cp1x="14.4" cp1y="11.4" cp2x="17.4" cp2y="11.4"/>
+                                    <point x="19.4" y="7.4" cp1x="19.4" cp1y="10.4" cp2x="19.4" cp2y="7.4"/>
+                                    <point x="19.4" y="0.0" cp1x="19.4" cp1y="0.0" cp2x="19.4" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="6" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="107" green="141" blue="172" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.354783E-4" saturationOffset="-0.2578073" brightnessOffset="0.12549019" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11497326" midpoint="0.5">
+                                       <matte red="54" green="100" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.01599598" brightnessOffset="0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.36898395" midpoint="0.5">
+                                       <matte red="53" green="100" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="89" green="135" blue="177" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.13853917" brightnessOffset="0.14509803" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
+                                    <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
+                                    <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
+                                    <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="5" blue="31" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.061133325" saturationOffset="0.3642857" brightnessOffset="-0.427451" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                    <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
+                                    <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
+                                    <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="11.4" cp1x="0.0" cp1y="11.4" cp2x="0.0" cp2y="11.4"/>
+                                    <point x="14.4" y="11.4" cp1x="14.4" cp1y="11.4" cp2x="17.4" cp2y="11.4"/>
+                                    <point x="19.4" y="7.4" cp1x="19.4" cp1y="10.4" cp2x="19.4" cp2y="7.4"/>
+                                    <point x="19.4" y="0.0" cp1x="19.4" cp1y="0.0" cp2x="19.4" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="6" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="221" green="233" blue="244" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0010585189" saturationOffset="-0.541452" brightnessOffset="0.4078431" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11497326" midpoint="0.5">
+                                       <matte red="184" green="204" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.00254488" saturationOffset="-0.4608264" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.36898395" midpoint="0.5">
+                                       <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="210" green="231" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4757143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
+                                    <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
+                                    <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
+                                    <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="19" green="45" blue="69" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="0.088923395" brightnessOffset="-0.2784314" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                    <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
+                                    <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
+                                    <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="28" green="28" blue="28" alpha="76" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.63529414" alphaOffset="-179"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                    <point x="0.0" y="11.0" cp1x="0.0" cp1y="11.0" cp2x="0.0" cp2y="11.0"/>
+                                    <point x="13.227272727272727" y="11.0" cp1x="13.227272727272727" cp1y="11.0" cp2x="15.340909090909106" cp2y="11.0"/>
+                                    <point x="18.0" y="6.0" cp1x="18.0" cp1y="9.0" cp2x="18.0" cp2y="6.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113a3d6c675.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="6" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="107" green="141" blue="172" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.354783E-4" saturationOffset="-0.2578073" brightnessOffset="0.12549019" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.11497326" midpoint="0.5">
+                                       <matte red="54" green="100" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.01599598" brightnessOffset="0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.36898395" midpoint="0.5">
+                                       <matte red="53" green="100" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="89" green="135" blue="177" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.13853917" brightnessOffset="0.14509803" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                    <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
+                                    <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
+                                    <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
+                                    <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="5" blue="31" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.061133325" saturationOffset="0.3642857" brightnessOffset="-0.427451" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                    <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
+                                    <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
+                                    <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="69" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-186"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
+                                    <point x="0.0" y="11.0" cp1x="0.0" cp1y="11.0" cp2x="0.0" cp2y="11.0"/>
+                                    <point x="13.227272727272727" y="11.0" cp1x="11.113636363636347" cp1y="11.0" cp2x="15.340909090909106" cp2y="11.0"/>
+                                    <point x="18.0" y="6.0" cp1x="18.0" cp1y="9.0" cp2x="18.0" cp2y="6.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113a3d7e1c5.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates>
+                  <state stateKeys="Disabled" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="5" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="163" green="168" blue="175" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.018570602" saturationOffset="-0.56714284" brightnessOffset="0.1372549" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
+                                    <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
+                                    <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="5" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
+                                    <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
+                                    <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="5" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
+                                    <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
+                                    <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Focused" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="5" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
+                                    <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
+                                    <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Focused" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="5" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
+                                    <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
+                                    <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="5" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
+                                    <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
+                                    <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="5" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
+                                    <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
+                                    <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </foregroundStates>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+            <uiComponent opaque="false" componentName="Spinner.nextButton" type="javax.swing.plaf.synth.SynthArrowButton" name="ArrowButton" ui="SynthArrowButtonUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties>
+                     <uiProperty name="size" type="INT" value="20"/>
+                  </uiproperties>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="1" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
+                                 <matte red="188" green="194" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56182265" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="220" green="224" blue="230" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.59223604" brightnessOffset="0.35294116" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.033333335">
+                                       <matte red="207" green="213" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.016586483" saturationOffset="-0.5723659" brightnessOffset="0.31764704" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="13.0" y="3.0" cp1x="10.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
+                                    <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="9.0"/>
+                                    <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="191" green="197" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56289876" brightnessOffset="0.2588235" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="185" green="192" blue="200" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.5607143" brightnessOffset="0.2352941" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="13.0" y="2.0" cp1x="9.36363636363636" cp1y="2.0" cp2x="16.63636363636364" cp2y="2.0"/>
+                                    <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.250000000000001" cp2x="18.022727272727273" cp2y="10.75"/>
+                                    <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113a3cf2041.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="1" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
+                                 <matte red="93" green="111" blue="128" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0023007393" saturationOffset="-0.3622768" brightnessOffset="-0.04705882" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.72994655" midpoint="0.5">
+                                       <matte red="191" green="206" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0012707114" saturationOffset="-0.5078604" brightnessOffset="0.3098039" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.033333335">
+                                       <matte red="179" green="197" blue="212" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.4800539" brightnessOffset="0.28235292" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
+                                    <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="7.0"/>
+                                    <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="70" green="91" blue="110" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.27207792" brightnessOffset="-0.11764708" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.63636363636364" cp2y="2.0"/>
+                                    <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.250000000000001" cp2x="18.0" cp2y="7.0"/>
+                                    <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113a3c06513.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="1" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
+                                 <matte red="93" green="111" blue="128" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0023007393" saturationOffset="-0.3622768" brightnessOffset="-0.04705882" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7513369" midpoint="0.5">
+                                       <matte red="191" green="206" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0012707114" saturationOffset="-0.5078604" brightnessOffset="0.3098039" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.033333335">
+                                       <matte red="179" green="197" blue="212" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.4800539" brightnessOffset="0.28235292" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
+                                    <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="7.0"/>
+                                    <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="70" green="91" blue="110" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.27207792" brightnessOffset="-0.11764708" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.63636363636364" cp2y="2.0"/>
+                                    <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.250000000000001" cp2x="18.0" cp2y="7.0"/>
+                                    <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
+                                    <point x="0.0" y="0.6" cp1x="0.0" cp1y="0.6" cp2x="0.0" cp2y="0.6"/>
+                                    <point x="14.0" y="0.6" cp1x="14.0" cp1y="0.6" cp2x="17.4" cp2y="0.6"/>
+                                    <point x="19.4" y="7.0" cp1x="19.4" cp1y="3.6" cp2x="19.4" cp2y="7.0"/>
+                                    <point x="19.4" y="12.0" cp1x="19.4" cp1y="12.0" cp2x="19.4" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="1" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
+                                 <matte red="109" green="128" blue="145" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.2034855E-5" saturationOffset="-0.38743842" brightnessOffset="0.019607842" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7593583" midpoint="0.5">
+                                       <matte red="204" green="219" blue="232" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0012707114" saturationOffset="-0.51502466" brightnessOffset="0.3607843" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.033333335">
+                                       <matte red="195" green="212" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0021564364" saturationOffset="-0.49097747" brightnessOffset="0.34509802" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
+                                    <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="7.0"/>
+                                    <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="24" green="50" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="0.039961398" brightnessOffset="-0.25882354" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.63636363636364" cp2y="2.0"/>
+                                    <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.250000000000001" cp2x="18.0" cp2y="7.0"/>
+                                    <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
+                                    <point x="0.0" y="0.6" cp1x="0.0" cp1y="0.6" cp2x="0.0" cp2y="0.6"/>
+                                    <point x="14.0" y="0.6" cp1x="14.0" cp1y="0.6" cp2x="17.4" cp2y="0.6"/>
+                                    <point x="19.4" y="7.0" cp1x="19.4" cp1y="3.6" cp2x="19.4" cp2y="7.0"/>
+                                    <point x="19.4" y="12.0" cp1x="19.4" cp1y="12.0" cp2x="19.4" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="1" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
+                                 <matte red="15" green="43" blue="82" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.018363237" saturationOffset="0.18135887" brightnessOffset="-0.227451" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7433155" midpoint="0.5">
+                                       <matte red="82" green="122" blue="158" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.15470162" brightnessOffset="0.07058823" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.033333335">
+                                       <matte red="69" green="112" blue="150" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.6235323E-4" saturationOffset="-0.09571427" brightnessOffset="0.039215684" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
+                                    <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="7.0"/>
+                                    <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="24" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.454902" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.454545454545453" cp2y="2.0"/>
+                                    <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.5227272727272734" cp2x="18.0" cp2y="7.0"/>
+                                    <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
+                                    <point x="0.0" y="0.6" cp1x="0.0" cp1y="0.6" cp2x="0.0" cp2y="0.6"/>
+                                    <point x="14.0" y="0.6" cp1x="14.0" cp1y="0.6" cp2x="17.4" cp2y="0.6"/>
+                                    <point x="19.4" y="7.0" cp1x="19.4" cp1y="3.6" cp2x="19.4" cp2y="7.0"/>
+                                    <point x="19.4" y="12.0" cp1x="19.4" cp1y="12.0" cp2x="19.4" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="1" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
+                                 <matte red="109" green="128" blue="145" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.2034855E-5" saturationOffset="-0.38743842" brightnessOffset="0.019607842" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7941176" midpoint="0.5">
+                                       <matte red="204" green="219" blue="232" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0012707114" saturationOffset="-0.51502466" brightnessOffset="0.3607843" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.033333335">
+                                       <matte red="195" green="212" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0021564364" saturationOffset="-0.49097747" brightnessOffset="0.34509802" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
+                                    <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="7.0"/>
+                                    <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="24" green="50" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="0.039961398" brightnessOffset="-0.25882354" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.63636363636364" cp2y="2.0"/>
+                                    <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.250000000000001" cp2x="18.0" cp2y="7.0"/>
+                                    <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113a3d0fda8.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="1" left="1" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
+                                 <matte red="15" green="43" blue="82" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.018363237" saturationOffset="0.18135887" brightnessOffset="-0.227451" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.8636364" midpoint="0.5">
+                                       <matte red="82" green="122" blue="158" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.15470162" brightnessOffset="0.07058823" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.033333335">
+                                       <matte red="69" green="112" blue="150" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.6235323E-4" saturationOffset="-0.09571427" brightnessOffset="0.039215684" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
+                                    <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
+                                    <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="7.0"/>
+                                    <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="24" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.454902" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.454545454545453" cp2y="2.0"/>
+                                    <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.5227272727272734" cp2x="18.0" cp2y="7.0"/>
+                                    <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113a3d22070.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates>
+                  <state stateKeys="Disabled" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="173" green="177" blue="183" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.58106947" brightnessOffset="0.16862744" alphaOffset="0"/>
+                                 <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
+                                 <points>
+                                    <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
+                                    <point x="8.454545454545453" y="5.1136363636363615" cp1x="8.454545454545453" cp1y="5.1136363636363615" cp2x="8.454545454545453" cp2y="5.1136363636363615"/>
+                                    <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="129" green="129" blue="129" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.043137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="78" green="78" blue="78" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.24313727" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
+                                 <points>
+                                    <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
+                                    <point x="8.454545454545453" y="5.1136363636363615" cp1x="8.454545454545453" cp1y="5.1136363636363615" cp2x="8.454545454545453" cp2y="5.1136363636363615"/>
+                                    <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="3" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="129" green="129" blue="129" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.043137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="78" green="78" blue="78" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.24313727" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
+                                 <points>
+                                    <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
+                                    <point x="8.454545454545453" y="5.1136363636363615" cp1x="8.454545454545453" cp1y="5.1136363636363615" cp2x="8.454545454545453" cp2y="5.1136363636363615"/>
+                                    <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Focused" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="3" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="129" green="129" blue="129" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.043137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="78" green="78" blue="78" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.24313727" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
+                                 <points>
+                                    <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
+                                    <point x="8.454545454545453" y="5.1136363636363615" cp1x="8.454545454545453" cp1y="5.1136363636363615" cp2x="8.454545454545453" cp2y="5.1136363636363615"/>
+                                    <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Focused" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                 <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
+                                 <points>
+                                    <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
+                                    <point x="8.522727272727273" y="5.318181818181818" cp1x="8.522727272727273" cp1y="5.318181818181818" cp2x="8.522727272727273" cp2y="5.318181818181818"/>
+                                    <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="129" green="129" blue="129" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.043137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="78" green="78" blue="78" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.24313727" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
+                                 <points>
+                                    <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
+                                    <point x="8.454545454545453" y="5.1136363636363615" cp1x="8.454545454545453" cp1y="5.1136363636363615" cp2x="8.454545454545453" cp2y="5.1136363636363615"/>
+                                    <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="20" height="12"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="3" left="6" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
+                                 <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
+                                 <points>
+                                    <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
+                                    <point x="8.522727272727273" y="5.318181818181818" cp1x="8.522727272727273" cp1y="5.318181818181818" cp2x="8.522727272727273" cp2y="5.318181818181818"/>
+                                    <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </foregroundStates>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JSplitPane" name="SplitPane" ui="SplitPaneUI" subregion="false">
+         <stateTypes>
+            <stateType key="Enabled"/>
+            <stateType key="MouseOver"/>
+            <stateType key="Pressed"/>
+            <stateType key="Disabled"/>
+            <stateType key="Focused"/>
+            <stateType key="Selected"/>
+            <stateType key="Vertical">
+               <codeSnippet><![CDATA[
+                        return c instanceof JSplitPane && (((JSplitPane)c).getOrientation() == 1);]]></codeSnippet>
+            </stateType>
+         </stateTypes>
+         <contentMargins top="1" bottom="1" left="1" right="1"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <uiproperties>
+               <uiProperty name="size" type="INT" value="10"/>
+	       <uiProperty name="dividerSize" type="INT" value="10"/>
+               <uiProperty name="centerOneTouchButtons" type="BOOLEAN" value="true"/>
+               <uiProperty name="oneTouchButtonOffset" type="INT" value="30"/>
+               <uiProperty name="oneTouchExpandable" type="BOOLEAN" value="false"/>
+               <uiProperty name="continuousLayout" type="BOOLEAN" value="true"/>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="18" height="15"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <region name="SplitPaneDivider" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="68" height="10"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="3" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="68.0" y1="0.0" y2="10.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.058064517" midpoint="0.5">
+                                       <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.103225805" midpoint="0.5">
+                                       <matte red="244" green="244" blue="246" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.102396235" brightnessOffset="0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.12903225" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7387097" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.81935483" midpoint="0.5">
+                                       <matte red="244" green="244" blue="246" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.102396235" brightnessOffset="0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.8967742" midpoint="0.5">
+                                       <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140562314d.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="68" height="10"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="3" bottom="3" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="68.0" y1="0.0" y2="10.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.058064517" midpoint="0.5">
+                                       <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.103225805" midpoint="0.5">
+                                       <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.13" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.73" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.81935483" midpoint="0.5">
+                                       <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.8967742" midpoint="0.5">
+                                       <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140562314d.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates>
+                  <state stateKeys="Enabled" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="68" height="10"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="24" right="24"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="26.0" x2="42.0" y1="4.0" y2="7.0" rounding="4.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.090322584" midpoint="0.5">
+                                       <matte red="180" green="184" blue="192" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.048026316" brightnessOffset="0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.5" midpoint="0.5">
+                                       <matte red="235" green="238" blue="245" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.06970999" brightnessOffset="0.21568626" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.66451615" midpoint="0.5">
+                                       <matte red="198" green="201" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06704806" brightnessOffset="0.06666666" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="25.0" x2="43.0" y1="3.0" y2="8.0" rounding="3.6666666666666927">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.20645161" midpoint="0.5">
+                                       <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7935484" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140562314d.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Vertical" inverted="true">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="10" height="38"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="0" right="0"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <!--<rectangle x1="3.9545454545454546" x2="6.0" y1="26.49999999999998" y2="10.772727272727275" rounding="2.000000000000001">-->
+                                 
+                              <rectangle x1="4" x2="6.0" y1="10" y2="26.5" rounding="2">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="184" green="188" blue="196" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049301825" brightnessOffset="0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.16129032" midpoint="0.5">
+                                       <matte red="211" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07399663" brightnessOffset="0.11372548" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.86451614" midpoint="0.5">
+                                       <matte red="213" green="217" blue="222" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.018518567" saturationOffset="-0.06998578" brightnessOffset="0.12549019" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.90645164" midpoint="0.5">
+                                       <matte red="188" green="192" blue="200" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.050526317" brightnessOffset="0.039215684" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="3.0" x2="7.0" y1="9.0" y2="28.0" rounding="4.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="150" green="155" blue="165" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.019617222" brightnessOffset="-0.09803921" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.84193546" midpoint="0.5">
+                                       <matte red="166" green="170" blue="179" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.004273474" saturationOffset="-0.03790062" brightnessOffset="-0.043137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.9483871" midpoint="0.5">
+                                       <matte red="252" green="253" blue="253" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.106573746" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114056ef58e.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </foregroundStates>
+               <borderStates/>
+               <regions/>
+            </region>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JTabbedPane" name="TabbedPane" ui="TabbedPaneUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <uiproperties>
+               <uiProperty name="tabAreaStatesMatchSelectedTab" type="BOOLEAN" value="true"/>
+               <uiProperty name="nudgeSelectedLabel" type="BOOLEAN" value="false"/>
+               <uiProperty name="tabRunOverlay" type="INT" value="2"/>
+               <uiProperty name="tabOverlap" type="INT" value="-1"/>
+               <uiProperty name="extendTabsToBase" type="BOOLEAN" value="true"/>
+               <uiProperty name="useBasicArrows" type="BOOLEAN" value="true"/>
+               <uiProperty name="shadow" type="COLOR">
+                  <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+               </uiProperty>
+               <uiProperty name="darkShadow" type="COLOR">
+                  <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="text" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+               </uiProperty>
+               <uiProperty name="highlight" type="COLOR">
+                  <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+               </uiProperty>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="MouseOver">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Pressed">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <region name="TabbedPaneTab" subregion="true">
+               <contentMargins top="2" bottom="3" left="8" right="8"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="44" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="1" left="7" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.63174605" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2" midpoint="0.5">
+                                       <matte red="231" green="232" blue="236" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="-0.6145278" brightnessOffset="0.37647057" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="19.0" cp1x="1.0" cp1y="19.0" cp2x="1.0" cp2y="19.0"/>
+                                    <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
+                                    <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
+                                    <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
+                                    <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
+                                    <point x="43.0" y="19.0" cp1x="43.0" cp1y="19.0" cp2x="43.0" cp2y="19.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="103" green="106" blue="112" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.55535716" brightnessOffset="-0.109803945" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
+                                    <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
+                                    <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
+                                    <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
+                                    <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="11404048a3e.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="44" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="1" left="7" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6317773" brightnessOffset="0.4470588" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2" midpoint="0.5">
+                                       <matte red="242" green="244" blue="247" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.61547136" brightnessOffset="0.41960782" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5985242" brightnessOffset="0.39999998" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="19.0" cp1x="1.0" cp1y="19.0" cp2x="1.0" cp2y="19.0"/>
+                                    <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
+                                    <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
+                                    <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
+                                    <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
+                                    <point x="43.0" y="19.0" cp1x="43.0" cp1y="19.0" cp2x="43.0" cp2y="19.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.54616207" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
+                                    <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
+                                    <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
+                                    <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
+                                    <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114041a814c.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="44" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="1" left="6" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="205" green="209" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5847884" brightnessOffset="0.2980392" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2" midpoint="0.5">
+                                       <matte red="183" green="188" blue="199" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.035931647" saturationOffset="-0.5553123" brightnessOffset="0.23137254" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.64193547" midpoint="0.5">
+                                       <matte red="166" green="173" blue="186" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.5281874" brightnessOffset="0.18039215" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="202" green="208" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.03801495" saturationOffset="-0.5456242" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="19.0" cp1x="1.0" cp1y="19.0" cp2x="1.0" cp2y="19.0"/>
+                                    <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.666666666666664" cp2x="1.0" cp2y="2.3333333333333357"/>
+                                    <point x="6.0" y="1.0" cp1x="2.4444444444444464" cp1y="1.0" cp2x="9.555555555555554" cp2y="1.0"/>
+                                    <point x="38.0" y="1.0" cp1x="34.499999999999986" cp1y="1.0555555555555556" cp2x="41.500000000000014" cp2y="0.9444444444444444"/>
+                                    <point x="43.0" y="6.0" cp1x="43.05555555555556" cp1y="2.3333333333333357" cp2x="42.94444444444444" cp2y="9.666666666666664"/>
+                                    <point x="43.0" y="19.0" cp1x="43.0" cp1y="19.0" cp2x="43.0" cp2y="19.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.52156866" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="-0.05555555555555555" cp1y="2.3888888888888875" cp2x="0.05555555555555555" cp2y="7.6111111111111125"/>
+                                    <point x="5.0" y="0.0" cp1x="2.4999999999999982" cp1y="0.0" cp2x="7.500000000000002" cp2y="0.0"/>
+                                    <point x="39.0" y="0.0" cp1x="36.277777777777786" cp1y="0.0" cp2x="41.722222222222214" cp2y="0.0"/>
+                                    <point x="44.0" y="5.0" cp1x="43.94444444444444" cp1y="2.277777777777777" cp2x="44.05555555555556" cp2y="7.722222222222223"/>
+                                    <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
+                                    <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114041b7f56.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground>
+                           <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="44" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="6" bottom="1" left="7" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="220" green="222" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.046348333" saturationOffset="-0.6006266" brightnessOffset="0.34509802" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2" midpoint="0.5">
+                                       <matte red="217" green="219" blue="225" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.046348333" saturationOffset="-0.60015875" brightnessOffset="0.3333333" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="19.0" cp1x="1.0" cp1y="19.0" cp2x="1.0" cp2y="19.0"/>
+                                    <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
+                                    <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
+                                    <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
+                                    <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
+                                    <point x="43.0" y="19.0" cp1x="43.0" cp1y="19.0" cp2x="43.0" cp2y="19.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="196" green="199" blue="205" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.59181184" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="180" green="182" blue="190" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="-0.58308274" brightnessOffset="0.19607842" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
+                                    <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
+                                    <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
+                                    <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
+                                    <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114041da636.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="44" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="0" left="7" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2483871" midpoint="0.5">
+                                       <matte red="207" green="218" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.543609" brightnessOffset="0.34509802" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6032258" midpoint="0.5">
+                                       <matte red="169" green="189" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0020751357" saturationOffset="-0.45610264" brightnessOffset="0.2588235" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7677419" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="174" green="195" blue="214" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44879842" brightnessOffset="0.29019606" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
+                                    <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
+                                    <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
+                                    <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
+                                    <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
+                                    <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="196" green="199" blue="205" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.59181184" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="180" green="182" blue="190" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="-0.58308274" brightnessOffset="0.19607842" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
+                                    <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
+                                    <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
+                                    <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
+                                    <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114041e82d1.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="44" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="0" left="7" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2483871" midpoint="0.5">
+                                       <matte red="207" green="218" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.543609" brightnessOffset="0.34509802" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6032258" midpoint="0.5">
+                                       <matte red="169" green="189" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0020751357" saturationOffset="-0.45610264" brightnessOffset="0.2588235" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7677419" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="174" green="195" blue="214" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44879842" brightnessOffset="0.29019606" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
+                                    <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
+                                    <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
+                                    <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
+                                    <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
+                                    <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="33" green="54" blue="73" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.08776909" brightnessOffset="-0.2627451" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
+                                    <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
+                                    <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
+                                    <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
+                                    <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114041e82d1.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="44" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="0" left="9" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2483871" midpoint="0.5">
+                                       <matte red="211" green="224" blue="235" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0022627711" saturationOffset="-0.5335866" brightnessOffset="0.372549" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6032258" midpoint="0.5">
+                                       <matte red="184" green="205" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4608264" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7677419" midpoint="0.5">
+                                       <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.9677419" midpoint="0.5">
+                                       <matte red="193" green="214" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.46404046" brightnessOffset="0.36470586" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
+                                    <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
+                                    <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
+                                    <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
+                                    <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
+                                    <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="4" blue="27" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.06332368" saturationOffset="0.3642857" brightnessOffset="-0.4431373" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
+                                    <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
+                                    <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
+                                    <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
+                                    <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="11404247138.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+Pressed">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="44" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="0" left="9" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2483871" midpoint="0.5">
+                                       <matte red="84" green="123" blue="159" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.16401619" brightnessOffset="0.0745098" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6032258" midpoint="0.5">
+                                       <matte red="54" green="101" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0010001659" saturationOffset="-0.01599598" brightnessOffset="0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7677419" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.9419355" midpoint="0.5">
+                                       <matte red="60" green="106" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0018727183" saturationOffset="-0.038398862" brightnessOffset="0.035294116" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
+                                    <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
+                                    <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
+                                    <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
+                                    <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
+                                    <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="4" blue="27" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.06332368" saturationOffset="0.3642857" brightnessOffset="-0.4431373" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
+                                    <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
+                                    <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
+                                    <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
+                                    <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140425bba6.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="44" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="3" left="7" right="7"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="20.916666666666664" y="17.749999999999996" cp1x="20.916666666666664" cp1y="17.749999999999996" cp2x="20.916666666666664" cp2y="17.749999999999996"/>
+                                    <point x="20.958333333333332" y="19.333333333333332" cp1x="20.958333333333332" cp1y="19.333333333333332" cp2x="20.958333333333332" cp2y="19.333333333333332"/>
+                                    <point x="2.6666666666666665" y="19.33333333333334" cp1x="2.6666666666666665" cp1y="19.33333333333334" cp2x="2.6666666666666665" cp2y="19.33333333333334"/>
+                                    <point x="2.6249999999999987" y="6.166666666666665" cp1x="2.6249999999999987" cp1y="6.166666666666665" cp2x="2.6249999999999987" cp2y="3.9166666666666647"/>
+                                    <point x="5.916666666666664" y="2.666666666666665" cp1x="3.9999999999999996" cp1y="2.666666666666665" cp2x="5.916666666666664" cp2y="2.666666666666665"/>
+                                    <point x="37.70833333333333" y="2.6666666666666665" cp1x="37.70833333333333" cp1y="2.6666666666666665" cp2x="39.833333333333314" cp2y="2.6666666666666665"/>
+                                    <point x="41.416666666666664" y="6.041666666666667" cp1x="41.416666666666664" cp1y="3.4583333333333353" cp2x="41.416666666666664" cp2y="6.041666666666667"/>
+                                    <point x="41.37500000000001" y="19.291666666666657" cp1x="41.37500000000001" cp1y="19.291666666666657" cp2x="41.37500000000001" cp2y="19.291666666666657"/>
+                                    <point x="21.000000000000007" y="19.33333333333333" cp1x="21.000000000000007" cp1y="19.33333333333333" cp2x="21.000000000000007" cp2y="19.33333333333333"/>
+                                    <point x="20.916666666666668" y="17.708333333333332" cp1x="20.916666666666668" cp1y="17.708333333333332" cp2x="20.916666666666668" cp2y="17.708333333333332"/>
+                                    <point x="39.70833333333333" y="17.666666666666668" cp1x="39.70833333333333" cp1y="17.666666666666668" cp2x="39.70833333333333" cp2y="17.666666666666668"/>
+                                    <point x="39.625" y="6.083333333333332" cp1x="39.625" cp1y="6.083333333333332" cp2x="39.62499999999999" cp2y="5.166666666666664"/>
+                                    <point x="37.666666666666664" y="4.249999999999999" cp1x="38.75" cp1y="4.249999999999997" cp2x="37.666666666666664" cp2y="4.249999999999999"/>
+                                    <point x="5.833333333333332" y="4.291666666666666" cp1x="5.833333333333332" cp1y="4.291666666666666" cp2x="4.833333333333332" cp2y="4.291666666666666"/>
+                                    <point x="4.374999999999998" y="6.08333333333333" cp1x="4.416666666666665" cp1y="5.1249999999999964" cp2x="4.374999999999998" cp2y="6.08333333333333"/>
+                                    <point x="4.291666666666664" y="17.708333333333334" cp1x="4.291666666666664" cp1y="17.708333333333334" cp2x="4.291666666666664" cp2y="17.708333333333334"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2483871" midpoint="0.5">
+                                       <matte red="207" green="218" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.543609" brightnessOffset="0.34509802" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6032258" midpoint="0.5">
+                                       <matte red="169" green="189" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0020751357" saturationOffset="-0.45610264" brightnessOffset="0.2588235" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7677419" midpoint="0.5">
+                                       <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="174" green="195" blue="214" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44879842" brightnessOffset="0.29019606" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
+                                    <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
+                                    <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
+                                    <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
+                                    <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
+                                    <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="33" green="54" blue="73" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.08776909" brightnessOffset="-0.2627451" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
+                                    <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
+                                    <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
+                                    <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
+                                    <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114041e82d1.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+MouseOver+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="44" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="3" left="9" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="20.916666666666664" y="17.749999999999996" cp1x="20.916666666666664" cp1y="17.749999999999996" cp2x="20.916666666666664" cp2y="17.749999999999996"/>
+                                    <point x="20.958333333333332" y="19.333333333333332" cp1x="20.958333333333332" cp1y="19.333333333333332" cp2x="20.958333333333332" cp2y="19.333333333333332"/>
+                                    <point x="2.6666666666666665" y="19.33333333333334" cp1x="2.6666666666666665" cp1y="19.33333333333334" cp2x="2.6666666666666665" cp2y="19.33333333333334"/>
+                                    <point x="2.6249999999999987" y="6.166666666666665" cp1x="2.6249999999999987" cp1y="6.166666666666665" cp2x="2.6249999999999987" cp2y="3.9166666666666647"/>
+                                    <point x="5.916666666666664" y="2.666666666666665" cp1x="3.9999999999999996" cp1y="2.666666666666665" cp2x="5.916666666666664" cp2y="2.666666666666665"/>
+                                    <point x="37.70833333333333" y="2.6666666666666665" cp1x="37.70833333333333" cp1y="2.6666666666666665" cp2x="39.833333333333314" cp2y="2.6666666666666665"/>
+                                    <point x="41.416666666666664" y="6.041666666666667" cp1x="41.416666666666664" cp1y="3.4583333333333353" cp2x="41.416666666666664" cp2y="6.041666666666667"/>
+                                    <point x="41.37500000000001" y="19.291666666666657" cp1x="41.37500000000001" cp1y="19.291666666666657" cp2x="41.37500000000001" cp2y="19.291666666666657"/>
+                                    <point x="21.000000000000007" y="19.33333333333333" cp1x="21.000000000000007" cp1y="19.33333333333333" cp2x="21.000000000000007" cp2y="19.33333333333333"/>
+                                    <point x="20.916666666666668" y="17.708333333333332" cp1x="20.916666666666668" cp1y="17.708333333333332" cp2x="20.916666666666668" cp2y="17.708333333333332"/>
+                                    <point x="39.70833333333333" y="17.666666666666668" cp1x="39.70833333333333" cp1y="17.666666666666668" cp2x="39.70833333333333" cp2y="17.666666666666668"/>
+                                    <point x="39.625" y="6.083333333333332" cp1x="39.625" cp1y="6.083333333333332" cp2x="39.62499999999999" cp2y="5.166666666666664"/>
+                                    <point x="37.666666666666664" y="4.249999999999999" cp1x="38.75" cp1y="4.249999999999997" cp2x="37.666666666666664" cp2y="4.249999999999999"/>
+                                    <point x="5.833333333333332" y="4.291666666666666" cp1x="5.833333333333332" cp1y="4.291666666666666" cp2x="4.833333333333332" cp2y="4.291666666666666"/>
+                                    <point x="4.374999999999998" y="6.08333333333333" cp1x="4.416666666666665" cp1y="5.1249999999999964" cp2x="4.374999999999998" cp2y="6.08333333333333"/>
+                                    <point x="4.291666666666664" y="17.708333333333334" cp1x="4.291666666666664" cp1y="17.708333333333334" cp2x="4.291666666666664" cp2y="17.708333333333334"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2483871" midpoint="0.5">
+                                       <matte red="211" green="224" blue="235" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0022627711" saturationOffset="-0.5335866" brightnessOffset="0.372549" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6032258" midpoint="0.5">
+                                       <matte red="184" green="205" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4608264" brightnessOffset="0.32549018" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7677419" midpoint="0.5">
+                                       <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.9677419" midpoint="0.5">
+                                       <matte red="193" green="214" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.46404046" brightnessOffset="0.36470586" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
+                                    <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
+                                    <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
+                                    <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
+                                    <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
+                                    <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="4" blue="27" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.06332368" saturationOffset="0.3642857" brightnessOffset="-0.4431373" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
+                                    <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
+                                    <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
+                                    <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
+                                    <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="11404247138.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+Pressed+Focused">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                        <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="44" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="7" bottom="3" left="9" right="9"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="20.916666666666664" y="17.749999999999996" cp1x="20.916666666666664" cp1y="17.749999999999996" cp2x="20.916666666666664" cp2y="17.749999999999996"/>
+                                    <point x="20.958333333333332" y="19.333333333333332" cp1x="20.958333333333332" cp1y="19.333333333333332" cp2x="20.958333333333332" cp2y="19.333333333333332"/>
+                                    <point x="2.6666666666666665" y="19.33333333333334" cp1x="2.6666666666666665" cp1y="19.33333333333334" cp2x="2.6666666666666665" cp2y="19.33333333333334"/>
+                                    <point x="2.6249999999999987" y="6.166666666666665" cp1x="2.6249999999999987" cp1y="6.166666666666665" cp2x="2.6249999999999987" cp2y="3.9166666666666647"/>
+                                    <point x="5.916666666666664" y="2.666666666666665" cp1x="3.9999999999999996" cp1y="2.666666666666665" cp2x="5.916666666666664" cp2y="2.666666666666665"/>
+                                    <point x="37.70833333333333" y="2.6666666666666665" cp1x="37.70833333333333" cp1y="2.6666666666666665" cp2x="39.833333333333314" cp2y="2.6666666666666665"/>
+                                    <point x="41.416666666666664" y="6.041666666666667" cp1x="41.416666666666664" cp1y="3.4583333333333353" cp2x="41.416666666666664" cp2y="6.041666666666667"/>
+                                    <point x="41.37500000000001" y="19.291666666666657" cp1x="41.37500000000001" cp1y="19.291666666666657" cp2x="41.37500000000001" cp2y="19.291666666666657"/>
+                                    <point x="21.000000000000007" y="19.33333333333333" cp1x="21.000000000000007" cp1y="19.33333333333333" cp2x="21.000000000000007" cp2y="19.33333333333333"/>
+                                    <point x="20.916666666666668" y="17.708333333333332" cp1x="20.916666666666668" cp1y="17.708333333333332" cp2x="20.916666666666668" cp2y="17.708333333333332"/>
+                                    <point x="39.70833333333333" y="17.666666666666668" cp1x="39.70833333333333" cp1y="17.666666666666668" cp2x="39.70833333333333" cp2y="17.666666666666668"/>
+                                    <point x="39.625" y="6.083333333333332" cp1x="39.625" cp1y="6.083333333333332" cp2x="39.62499999999999" cp2y="5.166666666666664"/>
+                                    <point x="37.666666666666664" y="4.249999999999999" cp1x="38.75" cp1y="4.249999999999997" cp2x="37.666666666666664" cp2y="4.249999999999999"/>
+                                    <point x="5.833333333333332" y="4.291666666666666" cp1x="5.833333333333332" cp1y="4.291666666666666" cp2x="4.833333333333332" cp2y="4.291666666666666"/>
+                                    <point x="4.374999999999998" y="6.08333333333333" cp1x="4.416666666666665" cp1y="5.1249999999999964" cp2x="4.374999999999998" cp2y="6.08333333333333"/>
+                                    <point x="4.291666666666664" y="17.708333333333334" cp1x="4.291666666666664" cp1y="17.708333333333334" cp2x="4.291666666666664" cp2y="17.708333333333334"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2483871" midpoint="0.5">
+                                       <matte red="84" green="123" blue="159" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.16401619" brightnessOffset="0.0745098" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6032258" midpoint="0.5">
+                                       <matte red="54" green="101" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0010001659" saturationOffset="-0.01599598" brightnessOffset="0.007843137" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7677419" midpoint="0.5">
+                                       <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.9419355" midpoint="0.5">
+                                       <matte red="60" green="106" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0018727183" saturationOffset="-0.038398862" brightnessOffset="0.035294116" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
+                                    <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
+                                    <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
+                                    <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
+                                    <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
+                                    <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="0" green="4" blue="27" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.06332368" saturationOffset="0.3642857" brightnessOffset="-0.4431373" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
+                                    <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
+                                    <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
+                                    <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
+                                    <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140425bba6.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </region>
+            <region name="TabbedPaneTabArea" subregion="true">
+               <contentMargins top="3" bottom="4" left="10" right="10"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="5" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="6" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="5.0" y1="19.0" y2="24.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.08387097" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.10967742" midpoint="0.5">
+                                       <matte red="181" green="202" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.45471883" brightnessOffset="0.31764704" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7645161" midpoint="0.5">
+                                       <matte red="192" green="213" blue="232" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4633005" brightnessOffset="0.3607843" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7870968" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
+                                 <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="11404091c22.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="5" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="6" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="5.0" y1="19.0" y2="24.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.08387097" midpoint="0.5">
+                                       <matte red="180" green="182" blue="190" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="-0.58308274" brightnessOffset="0.19607842" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.10967742" midpoint="0.5">
+                                       <matte red="181" green="202" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.45471883" brightnessOffset="0.31764704" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7645161" midpoint="0.5">
+                                       <matte red="192" green="213" blue="232" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4633005" brightnessOffset="0.3607843" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7870968" midpoint="0.5">
+                                       <matte red="180" green="182" blue="190" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="-0.58308274" brightnessOffset="0.19607842" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="11404091c22.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="5" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="6" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="5.0" y1="19.0" y2="24.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.08387097" midpoint="0.5">
+                                       <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.10967742" midpoint="0.5">
+                                       <matte red="200" green="221" blue="240" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4690476" brightnessOffset="0.39215684" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7645161" midpoint="0.5">
+                                       <matte red="211" green="232" blue="251" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47635174" brightnessOffset="0.4352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7870968" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140418c3be.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="5" height="24"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="6" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="5.0" y1="19.0" y2="24.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.08387097" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.10967742" midpoint="0.5">
+                                       <matte red="64" green="111" blue="153" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.05401492" brightnessOffset="0.05098039" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7645161" midpoint="0.5">
+                                       <matte red="75" green="122" blue="164" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.09303135" brightnessOffset="0.09411764" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7870968" midpoint="0.5">
+                                       <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1140419f9fa.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </region>
+            <region name="TabbedPaneContent" subregion="true">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NO_CACHING</cacheMode>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="15"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </region>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JTable" name="Table" ui="TableUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground>
+               <matte red="35" green="35" blue="36" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+            </textForeground>
+            <textBackground/>
+            <background>
+               <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+            </background>
+            <inherit-textForeground>false</inherit-textForeground>
+            <inherit-background>false</inherit-background>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties>
+               <uiProperty name="showGrid" type="BOOLEAN" value="false"/>
+               <uiProperty name="intercellSpacing" type="DIMENSION">
+                  <dimension width="0" height="0"/>
+               </uiProperty>
+               <uiProperty name="alternateRowColor" type="COLOR">
+                  <matte red="242" green="242" blue="242" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.05098039" alphaOffset="0" uiResource="false"/>
+               </uiProperty>
+               <uiProperty name="rendererUseTableColors" type="BOOLEAN" value="true"/>
+               <uiProperty name="rendererUseUIBorder" type="BOOLEAN" value="true"/>
+               <uiProperty name="cellNoFocusBorder" type="BORDER">
+                   <border type="empty" top="2" left="5" bottom="2" right="5"/>
+               </uiProperty>
+               <uiProperty name="focusCellHighlightBorder" type="BORDER">
+                   <border type="painter" painter="Tree:TreeCell[Enabled+Focused].backgroundPainter" top="2" left="5" bottom="2" right="5" />
+               </uiProperty>
+               <uiProperty name="dropLineColor" type="COLOR">
+                  <matte red="242" green="242" blue="242" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0" alphaOffset="0"/>
+               </uiProperty>
+               <uiProperty name="dropLineShortColor" type="COLOR">
+                  <matte red="242" green="242" blue="242" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0" alphaOffset="0"/>
+               </uiProperty>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled+Selected">
+                <style>
+                   <textForeground>
+                      <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+                   </textForeground>
+                   <textBackground>
+                      <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+                   </textBackground>
+                   <background/>
+                   <inherit-textForeground>false</inherit-textForeground>
+                   <inherit-textBackground>false</inherit-textBackground>
+                   <uiproperties/>
+                </style>
+                <canvas>
+                   <size width="100" height="30"/>
+                   <nextLayerNameIndex>2</nextLayerNameIndex>
+                   <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                   <layer name="Layer 1">
+                      <opacity>1.0</opacity>
+                      <fillOpacity>1.0</fillOpacity>
+                      <blendingMode>NORMAL</blendingMode>
+                      <locked>false</locked>
+                      <visible>true</visible>
+                      <shapes/>
+                      <effects/>
+                   </layer>
+                </canvas>
+            </state>
+            <state stateKeys="Disabled+Selected">
+                <style>
+                   <textForeground/>
+                   <textBackground>
+                       <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+                   </textBackground>
+                   <background/>
+                   <inherit-textBackground>false</inherit-textBackground>
+                   <uiproperties/>
+                </style>
+                <canvas>
+                   <size width="100" height="30"/>
+                   <nextLayerNameIndex>2</nextLayerNameIndex>
+                   <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                   <layer name="Layer 1">
+                      <opacity>1.0</opacity>
+                      <fillOpacity>1.0</fillOpacity>
+                      <blendingMode>NORMAL</blendingMode>
+                      <locked>false</locked>
+                      <visible>true</visible>
+                      <shapes/>
+                      <effects/>
+                   </layer>
+                </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiComponent opaque="true" componentName="Table.cellRenderer" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background>
+                     <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+                  </background>
+                  <inherit-background>false</inherit-background>
+                  <uiproperties/>
+               </style>
+               <backgroundStates/>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.table.JTableHeader" name="TableHeader" ui="TableHeaderUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties>
+                <uiProperty name="rightAlignSortArrow" type="BOOLEAN" value="true"/>
+            </uiproperties>
+         </style>
+         <backgroundStates/>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <uiIconRegion name="AscendingSortIcon" subregion="true" key="ascendingSortIcon" basicKey="Table.ascendingSortIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="7" height="7"/>
+                        <nextLayerNameIndex>5</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="2"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="105" green="142" blue="180" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0057927966" saturationOffset="-0.21904764" brightnessOffset="0.15686274" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="53" green="104" blue="154" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0038565993" saturationOffset="0.02012986" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="7.0" cp1x="0.0" cp1y="7.0" cp2x="0.0" cp2y="7.0"/>
+                                    <point x="3.5350877192982466" y="-0.008771929824561403" cp1x="3.5350877192982466" cp1y="-0.008771929824561403" cp2x="3.5350877192982466" cp2y="-0.008771929824561403"/>
+                                    <point x="7.0" y="7.0" cp1x="7.0" cp1y="7.0" cp2x="7.0" cp2y="7.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="11423a6c52f.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="DescendingSortIcon" subregion="true" key="descendingSortIcon" basicKey="Table.descendingSortIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="7" height="7"/>
+                        <nextLayerNameIndex>5</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="0" right="0"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="105" green="142" blue="180" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0057927966" saturationOffset="-0.21904764" brightnessOffset="0.15686274" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="53" green="104" blue="154" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0038565993" saturationOffset="0.02012986" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
+                                    <point x="3.5175438596491224" y="7.0" cp1x="3.5175438596491224" cp1y="7.0" cp2x="3.5175438596491224" cp2y="7.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="11423ac362a.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiComponent opaque="true" componentName="TableHeader.renderer" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
+               <stateTypes>
+                  <stateType key="Enabled"/>
+                  <stateType key="MouseOver"/>
+                  <stateType key="Pressed"/>
+                  <stateType key="Disabled"/>
+                  <stateType key="Focused"/>
+                  <stateType key="Selected"/>
+                  <stateType key="Sorted">
+                     <codeSnippet><![CDATA[
+                    String sortOrder = (String)c.getClientProperty("Table.sortOrder");
+                    return  sortOrder != null && ("ASCENDING".equals(sortOrder) || "DESCENDING".equals(sortOrder)); ]]></codeSnippet>
+                  </stateType>
+               </stateTypes>
+               <contentMargins top="2" bottom="4" left="5" right="5"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="22" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.24742268">
+                                       <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2888889" midpoint="0.6272727">
+                                       <matte red="225" green="227" blue="231" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08455229" brightnessOffset="0.1607843" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7037037" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="242" green="245" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07466974" brightnessOffset="0.23921567" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.33043477">
+                                       <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.43703705" midpoint="0.5">
+                                       <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.75185186" midpoint="0.5">
+                                       <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
+                                 <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="22" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.24742268">
+                                       <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2888889" midpoint="0.6272727">
+                                       <matte red="225" green="227" blue="231" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08455229" brightnessOffset="0.1607843" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7037037" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="242" green="245" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07466974" brightnessOffset="0.23921567" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.33043477">
+                                       <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.43703705" midpoint="0.5">
+                                       <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.75185186" midpoint="0.5">
+                                       <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
+                                 <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114235956c5.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="22" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                   <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
+                                   <point x="0" y="20" cp1x="0" cp1y="20" cp2x="0" cp2y="20"/>
+                                   <point x="22" y="20" cp1x="22" cp1y="20" cp2x="22" cp2y="20"/>
+                                   <point x="22" y="0" cp1x="22" cp1y="0" cp2x="22" cp2y="0"/>
+                                   <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
+                                   <point x="1.2" y="1.2" cp1x="1.2" cp1y="1.2" cp2x="1.2" cp2y="1.2"/>
+                                   <point x="20.8" y="1.2" cp1x="20.8" cp1y="1.2" cp2x="20.8" cp2y="1.2"/>
+                                   <point x="20.8" y="18.8" cp1x="20.8" cp1y="18.8" cp2x="20.8" cp2y="18.8"/>
+                                   <point x="1.2" y="18.8" cp1x="1.2" cp1y="18.8" cp2x="1.2" cp2y="18.8"/>
+                                   <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
+                                </points>
+                              </path>
+                              <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.24742268">
+                                       <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2888889" midpoint="0.6272727">
+                                       <matte red="225" green="227" blue="231" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08455229" brightnessOffset="0.1607843" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7037037" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="242" green="245" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07466974" brightnessOffset="0.23921567" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.33043477">
+                                       <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.43703705" midpoint="0.5">
+                                       <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.75185186" midpoint="0.5">
+                                       <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
+                                 <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="22" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.24742268">
+                                       <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2888889" midpoint="0.6272727">
+                                       <matte red="240" green="242" blue="246" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08613607" brightnessOffset="0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7037037" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.88013697" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.33043477">
+                                       <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.43703705" midpoint="0.5">
+                                       <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.75185186" midpoint="0.5">
+                                       <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
+                                 <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114235b929b.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="22" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.24742268">
+                                       <matte red="205" green="209" blue="216" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2888889" midpoint="0.6272727">
+                                       <matte red="176" green="182" blue="194" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017742813" brightnessOffset="0.015686274" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7037037" midpoint="0.5">
+                                       <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="202" green="208" blue="222" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.020436227" brightnessOffset="0.12549019" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.33043477">
+                                       <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.43703705" midpoint="0.5">
+                                       <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.75185186" midpoint="0.5">
+                                       <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
+                                 <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="11423668ee0.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Sorted">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="22" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.24742268">
+                                       <matte red="248" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.023096085" saturationOffset="-0.62376213" brightnessOffset="0.4352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.32534248" midpoint="0.6272727">
+                                       <matte red="193" green="208" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0012707114" saturationOffset="-0.50901747" brightnessOffset="0.31764704" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7037037" midpoint="0.5">
+                                       <matte red="178" green="197" blue="213" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.002461195" saturationOffset="-0.47139505" brightnessOffset="0.2862745" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.97602737" midpoint="0.5">
+                                       <matte red="201" green="220" blue="235" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0051222444" saturationOffset="-0.49103343" brightnessOffset="0.372549" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.33043477">
+                                       <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.43703705" midpoint="0.5">
+                                       <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.75185186" midpoint="0.5">
+                                       <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
+                                 <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="11423677dfd.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Focused+Sorted">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="22" height="20"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                   <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
+                                   <point x="0" y="20" cp1x="0" cp1y="20" cp2x="0" cp2y="20"/>
+                                   <point x="22" y="20" cp1x="22" cp1y="20" cp2x="22" cp2y="20"/>
+                                   <point x="22" y="0" cp1x="22" cp1y="0" cp2x="22" cp2y="0"/>
+                                   <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
+                                   <point x="1.2" y="1.2" cp1x="1.2" cp1y="1.2" cp2x="1.2" cp2y="1.2"/>
+                                   <point x="20.8" y="1.2" cp1x="20.8" cp1y="1.2" cp2x="20.8" cp2y="1.2"/>
+                                   <point x="20.8" y="18.8" cp1x="20.8" cp1y="18.8" cp2x="20.8" cp2y="18.8"/>
+                                   <point x="1.2" y="18.8" cp1x="1.2" cp1y="18.8" cp2x="1.2" cp2y="18.8"/>
+                                   <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
+                                </points>
+                              </path>
+                              <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.24742268">
+                                       <matte red="248" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.023096085" saturationOffset="-0.62376213" brightnessOffset="0.4352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2888889" midpoint="0.6272727">
+                                       <matte red="189" green="205" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-8.738637E-4" saturationOffset="-0.49872798" brightnessOffset="0.3098039" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7037037" midpoint="0.5">
+                                       <matte red="178" green="197" blue="213" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.002461195" saturationOffset="-0.47139505" brightnessOffset="0.2862745" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="202" green="220" blue="236" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-2.2029877E-4" saturationOffset="-0.4916465" brightnessOffset="0.37647057" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.33043477">
+                                       <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.43703705" midpoint="0.5">
+                                       <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.75185186" midpoint="0.5">
+                                       <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
+                                 <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects>
+                              <innerShadow blendingMode="NORMAL" opacity="0.75" angle="135" distance="0" spread="53" size="3">
+                                 <matte red="49" green="150" blue="239" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.16" brightnessOffset="0.39" alphaOffset="0"/>
+                              </innerShadow>
+                           </effects>
+                        </layer>
+                        <templateLayer fileName="1142368f212.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Disabled+Sorted">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="22" height="20"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.24742268">
+                                       <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.2888889" midpoint="0.6272727">
+                                       <matte red="225" green="227" blue="231" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08455229" brightnessOffset="0.1607843" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7037037" midpoint="0.5">
+                                       <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="242" green="245" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07466974" brightnessOffset="0.23921567" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.33043477">
+                                       <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.43703705" midpoint="0.5">
+                                       <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.75185186" midpoint="0.5">
+                                       <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
+                                 <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="true" componentName="Table.editor" type="javax.swing.JTextField" name="TextField" ui="TextFieldUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="3" bottom="3" left="5" right="5"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background>
+               <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+            </background>
+            <inherit-background>false</inherit-background>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
+                              <point x="0" y="30" cp1x="0" cp1y="30" cp2x="0" cp2y="30"/>
+                              <point x="100" y="30" cp1x="100" cp1y="30" cp2x="100" cp2y="30"/>
+                              <point x="100" y="0" cp1x="100" cp1y="0" cp2x="100" cp2y="0"/>
+                              <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
+                              <point x="1.2" y="1.2" cp1x="1.2" cp1y="1.2" cp2x="1.2" cp2y="1.2"/>
+                              <point x="98.8" y="1.2" cp1x="98.8" cp1y="1.2" cp2x="98.8" cp2y="1.2"/>
+                              <point x="98.8" y="28.8" cp1x="98.8" cp1y="28.8" cp2x="98.8" cp2y="28.8"/>
+                              <point x="1.2" y="28.8" cp1x="1.2" cp1y="28.8" cp2x="1.2" cp2y="28.8"/>
+                              <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Selected">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="true" componentName="Tree.cellEditor" type="javax.swing.JTextField" name="TextField" ui="TextFieldUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="2" bottom="2" left="5" right="5"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background>
+               <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+            </background>
+            <inherit-background>false</inherit-background>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
+                              <point x="0" y="30" cp1x="0" cp1y="30" cp2x="0" cp2y="30"/>
+                              <point x="100" y="30" cp1x="100" cp1y="30" cp2x="100" cp2y="30"/>
+                              <point x="100" y="0" cp1x="100" cp1y="0" cp2x="100" cp2y="0"/>
+                              <point x="1" y="0" cp1x="1" cp1y="0" cp2x="1" cp2y="0"/>
+                              <point x="1" y="1" cp1x="1" cp1y="1" cp2x="1" cp2y="1"/>
+                              <point x="99" y="1" cp1x="99" cp1y="1" cp2x="99" cp2y="1"/>
+                              <point x="99" y="29" cp1x="99" cp1y="29" cp2x="99" cp2y="29"/>
+                              <point x="1" y="29" cp1x="1" cp1y="29" cp2x="1" cp2y="29"/>
+                              <point x="1" y="0" cp1x="1" cp1y="0" cp2x="1" cp2y="0"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled+Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
+                              <point x="0" y="30" cp1x="0" cp1y="30" cp2x="0" cp2y="30"/>
+                              <point x="100" y="30" cp1x="100" cp1y="30" cp2x="100" cp2y="30"/>
+                              <point x="100" y="0" cp1x="100" cp1y="0" cp2x="100" cp2y="0"/>
+                              <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
+                              <point x="1.2" y="1.2" cp1x="1.2" cp1y="1.2" cp2x="1.2" cp2y="1.2"/>
+                              <point x="98.8" y="1.2" cp1x="98.8" cp1y="1.2" cp2x="98.8" cp2y="1.2"/>
+                              <point x="98.8" y="28.8" cp1x="98.8" cp1y="28.8" cp2x="98.8" cp2y="28.8"/>
+                              <point x="1.2" y="28.8" cp1x="1.2" cp1y="28.8" cp2x="1.2" cp2y="28.8"/>
+                              <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
+                           </points>
+                        </path>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Selected">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JTextField" name="TextField" ui="TextFieldUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="6" bottom="6" left="6" right="6"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background>
+               <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+            </background>
+            <inherit-background>false</inherit-background>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="0.1500000000000001"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1139927b26e.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11399201d79.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Selected">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11399201d79.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="3" left="3" right="3"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="119.0" x2="120.0" y1="5.0" y2="21.0" rounding="0.0">
+                           <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="22.0" y2="21.0" rounding="0.0">
+                           <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="5.0" y2="21.0" rounding="0.0">
+                           <matte red="208" green="210" blue="215" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07796818" brightnessOffset="0.09803921" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="212" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07856284" brightnessOffset="0.11372548" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="199" green="202" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07187897" brightnessOffset="0.06666666" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1139927b26e.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
+                              <point x="2.0" y="22.0" cp1x="2.0" cp1y="22.0" cp2x="2.0" cp2y="22.0"/>
+                              <point x="120.0" y="22.0" cp1x="120.0" cp1y="22.0" cp2x="120.0" cp2y="22.0"/>
+                              <point x="120.0" y="2.0" cp1x="120.0" cp1y="2.0" cp2x="120.0" cp2y="2.0"/>
+                              <point x="121.4" y="2.0" cp1x="121.5" cp1y="2.0" cp2x="121.5" cp2y="2.0"/>
+                              <point x="121.4" y="23.4" cp1x="121.4" cp1y="23.4" cp2x="121.4" cp2y="23.4"/>
+                              <point x="0.6" y="23.4" cp1x="0.6" cp1y="23.4" cp2x="0.6" cp2y="23.4"/>
+                              <point x="0.6" y="0.6" cp1x="0.6" cp1y="0.6" cp2x="0.6" cp2y="0.6"/>
+                              <point x="121.4" y="0.6" cp1x="121.4" cp1y="0.6" cp2x="121.4" cp2y="0.6"/>
+                              <point x="121.4" y="2.0" cp1x="121.4" cp1y="2.0" cp2x="121.4" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
+                           <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11399201d79.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
+                           <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11399201d79.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </borderStates>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JFormattedTextField" name="FormattedTextField" ui="FormattedTextFieldUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="6" bottom="6" left="6" right="6"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="0.1500000000000001"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1139927b26e.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11399201d79.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Selected">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11399201d79.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="3" left="3" right="3"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="119.0" x2="120.0" y1="5.0" y2="21.0" rounding="0.0">
+                           <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="22.0" y2="21.0" rounding="0.0">
+                           <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="5.0" y2="21.0" rounding="0.0">
+                           <matte red="208" green="210" blue="215" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07796818" brightnessOffset="0.09803921" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="212" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07856284" brightnessOffset="0.11372548" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="199" green="202" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07187897" brightnessOffset="0.06666666" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1139927b26e.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
+                              <point x="2.0" y="22.0" cp1x="2.0" cp1y="22.0" cp2x="2.0" cp2y="22.0"/>
+                              <point x="120.0" y="22.0" cp1x="120.0" cp1y="22.0" cp2x="120.0" cp2y="22.0"/>
+                              <point x="120.0" y="2.0" cp1x="120.0" cp1y="2.0" cp2x="120.0" cp2y="2.0"/>
+                              <point x="121.4" y="2.0" cp1x="121.5" cp1y="2.0" cp2x="121.5" cp2y="2.0"/>
+                              <point x="121.4" y="23.4" cp1x="121.4" cp1y="23.4" cp2x="121.4" cp2y="23.4"/>
+                              <point x="0.6" y="23.4" cp1x="0.6" cp1y="23.4" cp2x="0.6" cp2y="23.4"/>
+                              <point x="0.6" y="0.6" cp1x="0.6" cp1y="0.6" cp2x="0.6" cp2y="0.6"/>
+                              <point x="121.4" y="0.6" cp1x="121.4" cp1y="0.6" cp2x="121.4" cp2y="0.6"/>
+                              <point x="121.4" y="2.0" cp1x="121.4" cp1y="2.0" cp2x="121.4" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
+                           <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11399201d79.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
+                           <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11399201d79.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </borderStates>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JPasswordField" name="PasswordField" ui="PasswordFieldUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="6" bottom="6" left="6" right="6"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="0.1500000000000001"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1139927b26e.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11399201d79.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Selected">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11399201d79.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="3" left="3" right="3"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="119.0" x2="120.0" y1="5.0" y2="21.0" rounding="0.0">
+                           <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="22.0" y2="21.0" rounding="0.0">
+                           <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="5.0" y2="21.0" rounding="0.0">
+                           <matte red="208" green="210" blue="215" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07796818" brightnessOffset="0.09803921" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="212" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07856284" brightnessOffset="0.11372548" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="199" green="202" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07187897" brightnessOffset="0.06666666" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="1139927b26e.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Focused">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
+                              <point x="2.0" y="22.0" cp1x="2.0" cp1y="22.0" cp2x="2.0" cp2y="22.0"/>
+                              <point x="120.0" y="22.0" cp1x="120.0" cp1y="22.0" cp2x="120.0" cp2y="22.0"/>
+                              <point x="120.0" y="2.0" cp1x="120.0" cp1y="2.0" cp2x="120.0" cp2y="2.0"/>
+                              <point x="121.4" y="2.0" cp1x="121.5" cp1y="2.0" cp2x="121.5" cp2y="2.0"/>
+                              <point x="121.4" y="23.4" cp1x="121.4" cp1y="23.4" cp2x="121.4" cp2y="23.4"/>
+                              <point x="0.6" y="23.4" cp1x="0.6" cp1y="23.4" cp2x="0.6" cp2y="23.4"/>
+                              <point x="0.6" y="0.6" cp1x="0.6" cp1y="0.6" cp2x="0.6" cp2y="0.6"/>
+                              <point x="121.4" y="0.6" cp1x="121.4" cp1y="0.6" cp2x="121.4" cp2y="0.6"/>
+                              <point x="121.4" y="2.0" cp1x="121.4" cp1y="2.0" cp2x="121.4" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
+                           <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11399201d79.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
+                           <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+                  <templateLayer fileName="11399201d79.png">
+                     <layer name="Template" type="template">
+                        <opacity>1.0</opacity>
+                        <fillOpacity>1.0</fillOpacity>
+                        <blendingMode>NORMAL</blendingMode>
+                        <locked>false</locked>
+                        <visible>false</visible>
+                        <shapes/>
+                        <effects/>
+                     </layer>
+                  </templateLayer>
+               </canvas>
+            </state>
+         </borderStates>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JTextArea" name="TextArea" ui="TextAreaUI" subregion="false">
+         <stateTypes>
+            <stateType key="Enabled"/>
+            <stateType key="MouseOver"/>
+            <stateType key="Pressed"/>
+            <stateType key="Selected"/>
+            <stateType key="Disabled"/>
+            <stateType key="Focused"/>
+            <stateType key="NotInScrollPane">
+               <codeSnippet><![CDATA[
+                          return !(c.getParent() instanceof javax.swing.JViewport);]]></codeSnippet>
+            </stateType>
+         </stateTypes>
+         <contentMargins top="6" bottom="6" left="6" right="6"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="122.0" y1="0.0" y2="24.0" rounding="0.0">
+                           <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="0.1500000000000001"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="122.0" y1="0.0" y2="24.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Disabled+NotInScrollPane">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="0.1500000000000001"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled+NotInScrollPane">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Selected">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates>
+            <state stateKeys="Disabled+NotInScrollPane">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="3" left="3" right="3"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="119.0" x2="120.0" y1="5.0" y2="21.0" rounding="0.0">
+                           <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="22.0" y2="21.0" rounding="0.0">
+                           <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="5.0" y2="21.0" rounding="0.0">
+                           <matte red="208" green="210" blue="215" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07796818" brightnessOffset="0.09803921" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="212" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07856284" brightnessOffset="0.11372548" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.0" midpoint="0.5">
+                                 <matte red="199" green="202" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07187897" brightnessOffset="0.06666666" alphaOffset="0"/>
+                              </stop>
+                              <stop position="1.0" midpoint="0.5">
+                                 <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Focused+NotInScrollPane">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <path>
+                           <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                           <points>
+                              <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
+                              <point x="2.0" y="22.0" cp1x="2.0" cp1y="22.0" cp2x="2.0" cp2y="22.0"/>
+                              <point x="120.0" y="22.0" cp1x="120.0" cp1y="22.0" cp2x="120.0" cp2y="22.0"/>
+                              <point x="120.0" y="2.0" cp1x="120.0" cp1y="2.0" cp2x="120.0" cp2y="2.0"/>
+                              <point x="121.4" y="2.0" cp1x="121.5" cp1y="2.0" cp2x="121.5" cp2y="2.0"/>
+                              <point x="121.4" y="23.4" cp1x="121.4" cp1y="23.4" cp2x="121.4" cp2y="23.4"/>
+                              <point x="0.6" y="23.4" cp1x="0.6" cp1y="23.4" cp2x="0.6" cp2y="23.4"/>
+                              <point x="0.6" y="0.6" cp1x="0.6" cp1y="0.6" cp2x="0.6" cp2y="0.6"/>
+                              <point x="121.4" y="0.6" cp1x="121.4" cp1y="0.6" cp2x="121.4" cp2y="0.6"/>
+                              <point x="121.4" y="2.0" cp1x="121.4" cp1y="2.0" cp2x="121.4" cp2y="2.0"/>
+                           </points>
+                        </path>
+                        <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
+                           <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled+NotInScrollPane">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="122" height="24"/>
+                  <nextLayerNameIndex>3</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
+                           <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
+                           <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
+                           <gradient cycleMethod="NO_CYCLE">
+                              <stop position="0.1" midpoint="0.5">
+                                 <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
+                              </stop>
+                              <stop position="0.9" midpoint="0.5">
+                                 <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
+                              </stop>
+                           </gradient>
+                           <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </borderStates>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JTextPane" name="TextPane" ui="TextPaneUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="4" bottom="4" left="6" right="6"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background>
+               <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+            </background>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                           <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.2" y2="0.1"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.2" y2="0.1"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Selected">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JEditorPane" name="EditorPane" ui="EditorPaneUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="4" bottom="4" left="6" right="6"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background>
+               <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+            </background>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground>
+                     <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                           <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.2" y2="0.1"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 2">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.2" y2="0.1"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Selected">
+               <style>
+                  <textForeground>
+                     <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                  </textForeground>
+                  <textBackground/>
+                  <background/>
+                  <inherit-textForeground>false</inherit-textForeground>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JToolBar" name="ToolBar" ui="ToolBarUI" subregion="false">
+         <stateTypes>
+            <stateType key="North">
+               <codeSnippet><![CDATA[
+        JToolBar toolbar = (JToolBar)c;
+        return NimbusLookAndFeel.resolveToolbarConstraint(toolbar) == BorderLayout.NORTH;
+               ]]></codeSnippet>
+            </stateType>
+            <stateType key="East">
+               <codeSnippet><![CDATA[
+        JToolBar toolbar = (JToolBar)c;
+        return NimbusLookAndFeel.resolveToolbarConstraint(toolbar) == BorderLayout.EAST;
+               ]]></codeSnippet>
+            </stateType>
+            <stateType key="West">
+               <codeSnippet><![CDATA[
+        JToolBar toolbar = (JToolBar)c;
+        return NimbusLookAndFeel.resolveToolbarConstraint(toolbar) == BorderLayout.WEST;
+               ]]></codeSnippet>
+            </stateType>
+            <stateType key="South">
+               <codeSnippet><![CDATA[
+        JToolBar toolbar = (JToolBar)c;
+        return NimbusLookAndFeel.resolveToolbarConstraint(toolbar) == BorderLayout.SOUTH;
+               ]]></codeSnippet>
+            </stateType>
+         </stateTypes>
+         <contentMargins top="2" bottom="2" left="2" right="2"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates/>
+         <foregroundStates/>
+         <borderStates>
+            <state stateKeys="North">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="30" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="1" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="30.0" y1="29.0" y2="30.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="South">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="30" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="1" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="30.0" y1="0.0" y2="1.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="East">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="30" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="1" bottom="0" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="30.0" y1="0.0" y2="1.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="West">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="30" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="0" bottom="1" left="0" right="0"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="0.0" x2="30.0" y1="29.0" y2="30.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </borderStates>
+         <regions>
+            <uiIconRegion name="HandleIcon" subregion="true" key="handleIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>2.0</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="11" height="38"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="159" green="164" blue="172" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.03494492" brightnessOffset="-0.07058823" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="38.0" cp1x="0.0" cp1y="38.0" cp2x="0.0" cp2y="38.0"/>
+                                    <point x="0.0" y="36.0" cp1x="0.0" cp1y="36.0" cp2x="0.0" cp2y="36.0"/>
+                                    <point x="2.0" y="38.0" cp1x="2.0" cp1y="38.0" cp2x="2.0" cp2y="38.0"/>
+                                 </points>
+                              </path>
+                              <path>
+                                 <matte red="159" green="164" blue="172" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.03494492" brightnessOffset="-0.07058823" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
+                                    <point x="2.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="2.0" cp2y="0.0"/>
+                                 </points>
+                              </path>
+                              <rectangle x1="10.0" x2="11.0" y1="0.0" y2="38.0" rounding="0.0">
+                                 <matte red="177" green="181" blue="189" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="-0.029675633" brightnessOffset="0.109803915" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.0" x2="10.0" y1="0.0" y2="38.0" rounding="0.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="211" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07399663" brightnessOffset="0.11372548" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.0" y1="0.5" x2="1.0" y2="0.5"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="114286d62c0.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>true</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiComponent opaque="false" type="javax.swing.JButton" name="Button" ui="ButtonUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="4" bottom="4" left="4" right="4"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>2.0</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="104" height="33"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button Layer">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="104" height="33"/>
+                        <nextLayerNameIndex>4</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 3">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="43.85714285714286" y="0.6" cp1x="43.85714285714286" cp1y="0.6" cp2x="43.85714285714286" cp2y="0.6"/>
+                                    <point x="98.0" y="0.6" cp1x="98.0" cp1y="0.6" cp2x="101.0" cp2y="0.6"/>
+                                    <point x="103.42857142857142" y="6.0" cp1x="103.42857142857142" cp1y="3.0" cp2x="103.42857142857142" cp2y="6.0"/>
+                                    <point x="103.49999999999999" y="27.0" cp1x="103.49999999999999" cp1y="27.0" cp2x="103.49999999999999" cp2y="30.0"/>
+                                    <point x="98.0" y="32.35714285714285" cp1x="101.0" cp1y="32.35714285714285" cp2x="98.0" cp2y="32.35714285714285"/>
+                                    <point x="6.0" y="32.35714285714285" cp1x="6.0" cp1y="32.35714285714285" cp2x="3.0" cp2y="32.35714285714285"/>
+                                    <point x="0.6" y="27.0" cp1x="0.6" cp1y="30.0" cp2x="0.6" cp2y="27.0"/>
+                                    <point x="0.6" y="6.071428571428572" cp1x="0.6" cp1y="6.071428571428572" cp2x="0.6" cp2y="3.071428571428571"/>
+                                    <point x="6.0" y="0.6" cp1x="3.0" cp1y="0.6" cp2x="6.0" cp2y="0.6"/>
+                                    <point x="44.0" y="0.6" cp1x="44.0" cp1y="0.6" cp2x="44.0" cp2y="0.6"/>
+                                    <point x="44.0" y="2.4285714285714297" cp1x="44.0" cp1y="2.4285714285714297" cp2x="44.0" cp2y="2.4285714285714297"/>
+                                    <point x="6.0" y="2.4285714285714297" cp1x="6.0" cp1y="2.4285714285714297" cp2x="4.071428571428573" cp2y="2.4285714285714297"/>
+                                    <point x="2.357142857142858" y="5.928571428571429" cp1x="2.312863373522748" cp1y="3.499353333829805" cp2x="2.357142857142858" cp2y="5.928571428571429"/>
+                                    <point x="2.357142857142858" y="27.0" cp1x="2.357142857142858" cp1y="27.0" cp2x="2.357142857142858" cp2y="29.214285714285698"/>
+                                    <point x="6.0" y="30.571428571428562" cp1x="4.214285714285715" cp1y="30.571428571428562" cp2x="6.0" cp2y="30.571428571428562"/>
+                                    <point x="98.0" y="30.571428571428562" cp1x="98.0" cp1y="30.571428571428562" cp2x="100.0714285714286" cp2y="30.571428571428562"/>
+                                    <point x="101.50000000000001" y="27.0" cp1x="101.50000000000001" cp1y="29.214285714285705" cp2x="101.50000000000001" cp2y="27.0"/>
+                                    <point x="101.57142857142858" y="6.0" cp1x="101.57142857142858" cp1y="6.0" cp2x="101.57142857142858" cp2y="3.8571428571428594"/>
+                                    <point x="98.07142857142857" y="2.357142857142858" cp1x="100.21428571428574" cp1y="2.357142857142858" cp2x="98.07142857142857" cp2y="2.357142857142858"/>
+                                    <point x="44.0" y="2.4285714285714297" cp1x="44.0" cp1y="2.4285714285714297" cp2x="44.0" cp2y="2.4285714285714297"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="104" height="33"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button Layer">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="9.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.06" midpoint="0.5">
+                                       <matte red="247" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.95" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.09" midpoint="0.5">
+                                       <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.95" midpoint="0.5">
+                                       <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Shadow Layer">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                                 <matte red="92" green="94" blue="96" alpha="102" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-153"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="104" height="33"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button Layer">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="9.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.06" midpoint="0.5">
+                                       <matte red="247" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.95" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.09" midpoint="0.5">
+                                       <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.95" midpoint="0.5">
+                                       <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="13.0">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="104" height="33"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button Layer">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="9.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="205" green="209" blue="216" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.06" midpoint="0.5">
+                                       <matte red="194" green="199" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04772438" brightnessOffset="0.06666666" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6" midpoint="0.5">
+                                       <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7" midpoint="0.5">
+                                       <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.95" midpoint="0.5">
+                                       <matte red="204" green="211" blue="224" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="231" green="237" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.030845039" brightnessOffset="0.23921567" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.09" midpoint="0.5">
+                                       <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.95" midpoint="0.5">
+                                       <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Shadow Layer">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                                 <matte red="92" green="94" blue="96" alpha="102" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-153"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="104" height="33"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button Layer">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="9.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="205" green="209" blue="216" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.06" midpoint="0.5">
+                                       <matte red="194" green="199" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04772438" brightnessOffset="0.06666666" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6" midpoint="0.5">
+                                       <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7" midpoint="0.5">
+                                       <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.95" midpoint="0.5">
+                                       <matte red="204" green="211" blue="224" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="231" green="237" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.030845039" brightnessOffset="0.23921567" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.09" midpoint="0.5">
+                                       <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.95" midpoint="0.5">
+                                       <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="13.0">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+            <uiComponent opaque="false" type="javax.swing.JToggleButton" name="ToggleButton" ui="ToggleButtonUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="4" bottom="4" left="4" right="4"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <cacheMode>NINE_SQUARE_SCALE</cacheMode>
+                  <maxHozCachedImgScaling>2.0</maxHozCachedImgScaling>
+                  <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="104" height="34"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button Layer">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="104" height="34"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button Layer">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="43.85714285714286" y="0.6" cp1x="43.85714285714286" cp1y="0.6" cp2x="43.85714285714286" cp2y="0.6"/>
+                                    <point x="98.0" y="0.6" cp1x="98.0" cp1y="0.6" cp2x="101.0" cp2y="0.6"/>
+                                    <point x="103.42857142857142" y="6.0" cp1x="103.42857142857142" cp1y="3.0" cp2x="103.42857142857142" cp2y="6.0"/>
+                                    <point x="103.49999999999999" y="27.0" cp1x="103.49999999999999" cp1y="27.0" cp2x="103.49999999999999" cp2y="30.0"/>
+                                    <point x="98.0" y="32.35714285714285" cp1x="101.0" cp1y="32.35714285714285" cp2x="98.0" cp2y="32.35714285714285"/>
+                                    <point x="6.0" y="32.35714285714285" cp1x="6.0" cp1y="32.35714285714285" cp2x="3.0" cp2y="32.35714285714285"/>
+                                    <point x="0.6" y="27.0" cp1x="0.6" cp1y="30.0" cp2x="0.6" cp2y="27.0"/>
+                                    <point x="0.6" y="6.071428571428572" cp1x="0.6" cp1y="6.071428571428572" cp2x="0.6" cp2y="3.071428571428571"/>
+                                    <point x="6.0" y="0.6" cp1x="3.0" cp1y="0.6" cp2x="6.0" cp2y="0.6"/>
+                                    <point x="44.0" y="0.6" cp1x="44.0" cp1y="0.6" cp2x="44.0" cp2y="0.6"/>
+                                    <point x="44.0" y="2.4285714285714297" cp1x="44.0" cp1y="2.4285714285714297" cp2x="44.0" cp2y="2.4285714285714297"/>
+                                    <point x="6.0" y="2.4285714285714297" cp1x="6.0" cp1y="2.4285714285714297" cp2x="4.071428571428573" cp2y="2.4285714285714297"/>
+                                    <point x="2.357142857142858" y="5.928571428571429" cp1x="2.312863373522748" cp1y="3.499353333829805" cp2x="2.357142857142858" cp2y="5.928571428571429"/>
+                                    <point x="2.357142857142858" y="27.0" cp1x="2.357142857142858" cp1y="27.0" cp2x="2.357142857142858" cp2y="29.214285714285698"/>
+                                    <point x="6.0" y="30.571428571428562" cp1x="4.214285714285715" cp1y="30.571428571428562" cp2x="6.0" cp2y="30.571428571428562"/>
+                                    <point x="98.0" y="30.571428571428562" cp1x="98.0" cp1y="30.571428571428562" cp2x="100.0714285714286" cp2y="30.571428571428562"/>
+                                    <point x="101.50000000000001" y="27.0" cp1x="101.50000000000001" cp1y="29.214285714285705" cp2x="101.50000000000001" cp2y="27.0"/>
+                                    <point x="101.57142857142858" y="6.0" cp1x="101.57142857142858" cp1y="6.0" cp2x="101.57142857142858" cp2y="3.8571428571428594"/>
+                                    <point x="98.07142857142857" y="2.357142857142858" cp1x="100.21428571428574" cp1y="2.357142857142858" cp2x="98.07142857142857" cp2y="2.357142857142858"/>
+                                    <point x="44.0" y="2.4285714285714297" cp1x="44.0" cp1y="2.4285714285714297" cp2x="44.0" cp2y="2.4285714285714297"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="104" height="34"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button Layer">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="9.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.06" midpoint="0.5">
+                                       <matte red="247" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.95" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.09" midpoint="0.5">
+                                       <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.95" midpoint="0.5">
+                                       <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <layer name="Shadow Layer">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
+                                 <matte red="92" green="94" blue="96" alpha="102" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-153"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="104" height="34"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button Layer">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="9.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.06" midpoint="0.5">
+                                       <matte red="247" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.6" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.7" midpoint="0.5">
+                                       <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.95" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="12.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.09" midpoint="0.5">
+                                       <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.95" midpoint="0.5">
+                                       <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="13.0">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="72" height="25"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="149" green="152" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0595709" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.13368984" midpoint="0.5">
+                                       <matte red="173" green="176" blue="182" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061075766" brightnessOffset="-0.031372547" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="172" green="175" blue="181" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06080256" brightnessOffset="-0.035294116" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="95" green="97" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.060526315" brightnessOffset="-0.3529412" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="124" green="126" blue="130" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.064372465" brightnessOffset="-0.2352941" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="10.0">
+                                 <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="72" height="25"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="149" green="152" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0595709" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.13368984" midpoint="0.5">
+                                       <matte red="173" green="176" blue="182" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061075766" brightnessOffset="-0.031372547" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="172" green="175" blue="181" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06080256" brightnessOffset="-0.035294116" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="95" green="97" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.060526315" brightnessOffset="-0.3529412" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="124" green="126" blue="130" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.064372465" brightnessOffset="-0.2352941" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="13.0">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="72" height="25"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="164" green="166" blue="172" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.06401469" brightnessOffset="-0.07058823" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.13368984" midpoint="0.5">
+                                       <matte red="190" green="193" blue="199" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06530018" brightnessOffset="0.035294116" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="189" green="192" blue="198" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06507177" brightnessOffset="0.031372547" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="125" green="127" blue="131" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06472479" brightnessOffset="-0.23137254" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="164" green="166" blue="171" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.06959064" brightnessOffset="-0.0745098" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="10.0">
+                                 <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1139ecfc04b.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="72" height="25"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="164" green="166" blue="172" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.06401469" brightnessOffset="-0.07058823" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.13368984" midpoint="0.5">
+                                       <matte red="190" green="193" blue="199" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06530018" brightnessOffset="0.035294116" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="189" green="192" blue="198" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06507177" brightnessOffset="0.031372547" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="125" green="127" blue="131" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06472479" brightnessOffset="-0.23137254" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="164" green="166" blue="171" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.06959064" brightnessOffset="-0.0745098" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="13.0">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="72" height="25"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="117" green="121" blue="126" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.018518567" saturationOffset="-0.03909774" brightnessOffset="-0.2509804" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.13368984" midpoint="0.5">
+                                       <matte red="145" green="149" blue="156" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.040013492" brightnessOffset="-0.13333333" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="144" green="147" blue="155" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="-0.039558575" brightnessOffset="-0.1372549" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="66" green="68" blue="70" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.05338346" brightnessOffset="-0.47058824" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="92" green="94" blue="98" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049301825" brightnessOffset="-0.36078432" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="10.0">
+                                 <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1139ed92ed8.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Pressed+Selected+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="72" height="25"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="117" green="121" blue="126" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.018518567" saturationOffset="-0.03909774" brightnessOffset="-0.2509804" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.13368984" midpoint="0.5">
+                                       <matte red="145" green="149" blue="156" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.040013492" brightnessOffset="-0.13333333" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="144" green="147" blue="155" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="-0.039558575" brightnessOffset="-0.1372549" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="66" green="68" blue="70" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.05338346" brightnessOffset="-0.47058824" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="92" green="94" blue="98" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049301825" brightnessOffset="-0.36078432" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="13.0">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="72" height="25"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="149" green="152" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0595709" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.13368984" midpoint="0.5">
+                                       <matte red="173" green="176" blue="182" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061075766" brightnessOffset="-0.031372547" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="172" green="175" blue="181" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06080256" brightnessOffset="-0.035294116" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="95" green="97" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.060526315" brightnessOffset="-0.3529412" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="124" green="126" blue="130" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.064372465" brightnessOffset="-0.2352941" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="10.0">
+                                 <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1139eda6220.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="MouseOver+Selected+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="72" height="25"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="149" green="152" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0595709" brightnessOffset="-0.12941176" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.13368984" midpoint="0.5">
+                                       <matte red="173" green="176" blue="182" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061075766" brightnessOffset="-0.031372547" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="172" green="175" blue="181" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06080256" brightnessOffset="-0.035294116" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="95" green="97" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.060526315" brightnessOffset="-0.3529412" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="124" green="126" blue="130" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.064372465" brightnessOffset="-0.2352941" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
+                              </rectangle>
+                              <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="13.0">
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Disabled+Selected">
+                     <style>
+                        <textForeground>
+                           <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="72" height="25"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="203" green="206" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06807348" brightnessOffset="0.086274505" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="0.13368984" midpoint="0.5">
+                                       <matte red="209" green="212" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06924191" brightnessOffset="0.109803915" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="209" green="212" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06924191" brightnessOffset="0.109803915" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
+                                 <gradient cycleMethod="NO_CYCLE">
+                                    <stop position="0.0" midpoint="0.5">
+                                       <matte red="195" green="198" blue="204" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.066408664" brightnessOffset="0.054901958" alphaOffset="0"/>
+                                    </stop>
+                                    <stop position="1.0" midpoint="0.5">
+                                       <matte red="203" green="206" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06807348" brightnessOffset="0.086274505" alphaOffset="0"/>
+                                    </stop>
+                                 </gradient>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
+                              </rectangle>
+                              <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="10.0">
+                                 <matte red="255" green="255" blue="255" alpha="35" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-220"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="1139edb5619.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JToolBar$Separator" name="ToolBarSeparator" ui="ToolBarSeparatorUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="2" bottom="3" left="0" right="0"/>
+         <style>
+            <textForeground>
+               <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+            </textForeground>
+            <textBackground/>
+            <background/>
+            <inherit-textForeground>false</inherit-textForeground>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
+            <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
+            <uiproperties/>
+         </style>
+         <backgroundStates/>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="false" type="javax.swing.JToolTip" name="ToolTip" ui="ToolTipUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="4" bottom="4" left="4" right="4"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background/>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="10" height="10"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="1" bottom="1" left="1" right="1"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes>
+                        <rectangle x1="1.0" x2="9.0" y1="1.0" y2="9.0" rounding="0.0">
+                           <matte red="242" green="242" blue="189" alpha="255" uiDefaultParentName="info" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.0" x2="10.0" y1="0.0" y2="1.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.0" x2="10.0" y1="9.0" y2="10.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="0.0" x2="1.0" y1="1.0" y2="9.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                        <rectangle x1="9.0" x2="10.0" y1="1.0" y2="9.0" rounding="0.0">
+                           <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                           <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                        </rectangle>
+                     </shapes>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JTree" name="Tree" ui="TreeUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground>
+               <matte red="0" green="0" blue="0" alpha="0" uiDefaultParentName="text" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+            </textForeground>
+            <textBackground>
+               <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+            </textBackground>
+            <background>
+               <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+            </background>
+            <inherit-textForeground>false</inherit-textForeground>
+            <inherit-textBackground>false</inherit-textBackground>
+            <inherit-background>false</inherit-background>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties>
+               <uiProperty name="rendererFillBackground" type="BOOLEAN" value="false"/>
+               <uiProperty name="leftChildIndent" type="INT" value="12"/>
+               <uiProperty name="rightChildIndent" type="INT" value="4"/>
+               <uiProperty name="drawHorizontalLines" type="BOOLEAN" value="false"/>
+               <uiProperty name="drawVerticalLines" type="BOOLEAN" value="false"/>
+               <uiProperty name="showRootHandles" type="BOOLEAN" value="false"/>
+               <uiProperty name="rendererUseTreeColors" type="BOOLEAN" value="true"/>
+               <uiProperty name="repaintWholeRow" type="BOOLEAN" value="true"/>
+               <uiProperty name="rowHeight" type="INT" value="0"/>
+               <uiProperty name="rendererMargins" type="INSETS">
+                   <insets top="2" left="0" bottom="1" right="5"/>
+               </uiProperty>
+               <uiProperty name="selectionForeground" type="COLOR">
+                  <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+               </uiProperty>
+               <uiProperty name="selectionBackground" type="COLOR">
+                  <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+               </uiProperty>
+               <uiProperty name="dropLineColor" type="COLOR">
+                  <matte red="242" green="242" blue="242" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0" alphaOffset="0"/>
+               </uiProperty>
+            </uiproperties>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Disabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+            <state stateKeys="Enabled+Selected">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="1" bottom="1" left="1" right="1"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions>
+            <region name="TreeCell" subregion="true" title="Tree Cell">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background>
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </background>
+                        <inherit-background>false</inherit-background>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="0" bottom="0" left="15" right="15"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Focused">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background>
+                           <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </background>
+                        <inherit-background>false</inherit-background>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                   <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
+                                   <point x="0" y="30" cp1x="0" cp1y="30" cp2x="0" cp2y="30"/>
+                                   <point x="100" y="30" cp1x="100" cp1y="30" cp2x="100" cp2y="30"/>
+                                   <point x="100" y="0" cp1x="100" cp1y="0" cp2x="100" cp2y="0"/>
+                                   <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
+                                   <point x="1.2" y="1.2" cp1x="1.2" cp1y="1.2" cp2x="1.2" cp2y="1.2"/>
+                                   <point x="98.8" y="1.2" cp1x="98.8" cp1y="1.2" cp2x="98.8" cp2y="1.2"/>
+                                   <point x="98.8" y="28.8" cp1x="98.8" cp1y="28.8" cp2x="98.8" cp2y="28.8"/>
+                                   <point x="1.2" y="28.8" cp1x="1.2" cp1y="28.8" cp2x="1.2" cp2y="28.8"/>
+                                   <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
+                                </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Selected">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                                 <matte red="129" green="129" blue="129" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Selected+Focused">
+                     <style>
+                        <textForeground>
+                           <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                   <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
+                                   <point x="0" y="30" cp1x="0" cp1y="30" cp2x="0" cp2y="30"/>
+                                   <point x="100" y="30" cp1x="100" cp1y="30" cp2x="100" cp2y="30"/>
+                                   <point x="100" y="0" cp1x="100" cp1y="0" cp2x="100" cp2y="0"/>
+                                   <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
+                                   <point x="1.2" y="1.2" cp1x="1.2" cp1y="1.2" cp2x="1.2" cp2y="1.2"/>
+                                   <point x="98.8" y="1.2" cp1x="98.8" cp1y="1.2" cp2x="98.8" cp2y="1.2"/>
+                                   <point x="98.8" y="28.8" cp1x="98.8" cp1y="28.8" cp2x="98.8" cp2y="28.8"/>
+                                   <point x="1.2" y="28.8" cp1x="1.2" cp1y="28.8" cp2x="1.2" cp2y="28.8"/>
+                                   <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
+                                </points>
+                              </path>
+                              <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
+                                 <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                 <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
+                              </rectangle>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </region>
+            <uiComponent opaque="false" componentName="Tree.cellRenderer" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
+               <stateTypes/>
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Disabled">
+                     <style>
+                        <textForeground>
+                           <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                        </textForeground>
+                        <textBackground/>
+                        <background/>
+                        <inherit-textForeground>false</inherit-textForeground>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="100" height="30"/>
+                        <nextLayerNameIndex>2</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Layer 1">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes/>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiComponent>
+            <uiIconRegion name="leafIcon" subregion="true" key="leafIcon" basicKey="Tree.leafIcon">
+                <contentMargins top="0" bottom="0" left="0" right="0"/>
+                <style>
+                    <textForeground/>
+                    <textBackground/>
+                    <background/>
+                    <cacheSettingsInherited>false</cacheSettingsInherited>
+                    <uiproperties/>
+                </style>
+                <backgroundStates>
+                    <state stateKeys="Enabled">
+                        <style>
+                            <textForeground/>
+                            <textBackground/>
+                            <background/>
+                            <uiproperties/>
+                        </style>
+                        <canvas>
+                            <size width="16" height="16"/>
+                            <nextLayerNameIndex>3</nextLayerNameIndex>
+                            <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                            <layer name="Button">
+                                <opacity>1.0</opacity>
+                                <fillOpacity>1.0</fillOpacity>
+                                <blendingMode>NORMAL</blendingMode>
+                                <locked>false</locked>
+                                <visible>true</visible>
+                                <shapes>
+                                <path>
+                                    <matte red="255" green="255" blue="255" alpha="128" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-127"/>
+                                    <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    <points>
+                                        <point x="10.0" y="2.0" cp1x="10.0" cp1y="2.0" cp2x="10.0" cp2y="2.0"/>
+                                        <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
+                                        <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
+                                        <point x="2.0" y="15.0" cp1x="2.0" cp1y="15.0" cp2x="2.0" cp2y="15.0"/>
+                                        <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
+                                        <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                        <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
+                                        <point x="13.0" y="14.0" cp1x="13.0" cp1y="14.0" cp2x="13.0" cp2y="14.0"/>
+                                        <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
+                                        <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
+                                    </points>
+                                </path>
+                                <path>
+                                    <matte red="138" green="157" blue="176" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.4198052" brightnessOffset="0.14117646" alphaOffset="0"/>
+                                    <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    <points>
+                                        <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
+                                        <point x="8.74074074074074" y="1.0" cp1x="8.74074074074074" cp1y="1.0" cp2x="8.74074074074074" cp2y="1.0"/>
+                                        <point x="8.777777777777777" y="6.222222222222219" cp1x="8.777777777777777" cp1y="6.222222222222219" cp2x="8.777777777777777" cp2y="6.222222222222219"/>
+                                        <point x="14.0" y="6.2037037037037" cp1x="14.0" cp1y="6.2037037037037" cp2x="14.0" cp2y="6.2037037037037"/>
+                                        <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                        <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
+                                    </points>
+                                </path>
+                                <path>
+                                    <gradient cycleMethod="NO_CYCLE">
+                                        <stop position="0.0" midpoint="0.5">
+                                            <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
+                                        </stop>
+                                        <stop position="1.0" midpoint="0.5">
+                                            <matte red="238" green="242" blue="247" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.013940871" saturationOffset="-0.599277" brightnessOffset="0.41960782" alphaOffset="0"/>
+                                        </stop>
+                                    </gradient>
+                                    <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                    <points>
+                                        <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
+                                        <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
+                                        <point x="2.0" y="15.0" cp1x="2.0" cp1y="15.0" cp2x="2.0" cp2y="15.0"/>
+                                        <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
+                                        <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                        <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
+                                    </points>
+                                </path>
+                                <path>
+                                    <gradient cycleMethod="NO_CYCLE">
+                                        <stop position="0.0" midpoint="0.5">
+                                            <matte red="236" green="245" blue="253" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.032679737" saturationOffset="-0.043332636" brightnessOffset="0.24705881" alphaOffset="0"/>
+                                        </stop>
+                                        <stop position="1.0" midpoint="0.5">
+                                            <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                        </stop>
+                                    </gradient>
+                                    <paintPoints x1="0.04629629629629636" y1="0.9675925925925929" x2="0.48611111111111094" y2="0.5324074074074074"/>
+                                    <points>
+                                        <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
+                                        <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
+                                        <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
+                                    </points>
+                                </path>
+                                <rectangle x1="2.0" x2="14.0" y1="15.0" y2="16.0" rounding="0.0">
+                                    <matte red="97" green="98" blue="102" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                </rectangle>
+                                <path>
+                                    <matte red="149" green="151" blue="156" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.065654516" brightnessOffset="-0.13333333" alphaOffset="0"/>
+                                    <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    <points>
+                                        <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
+                                        <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
+                                        <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
+                                        <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
+                                        <point x="10.518518518518523" y="0.9999999999999999" cp1x="10.518518518518523" cp1y="0.9999999999999999" cp2x="10.518518518518523" cp2y="0.9999999999999999"/>
+                                        <point x="14.000000000000002" y="4.5" cp1x="14.000000000000002" cp1y="4.5" cp2x="14.000000000000002" cp2y="4.5"/>
+                                        <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
+                                        <point x="15.0" y="16.0" cp1x="15.0" cp1y="16.0" cp2x="15.0" cp2y="16.0"/>
+                                        <point x="15.0" y="4.444444444444441" cp1x="15.0" cp1y="4.444444444444441" cp2x="15.0" cp2y="4.444444444444441"/>
+                                        <point x="10.722222222222225" y="0.0" cp1x="10.722222222222225" cp1y="0.0" cp2x="10.722222222222225" cp2y="0.0"/>
+                                    </points>
+                                </path>
+                                </shapes>
+                                <effects/>
+                            </layer>
+                            <templateLayer fileName="113fe634ff9.png">
+                                <layer name="Template" type="template">
+                                <opacity>1.0</opacity>
+                                <fillOpacity>1.0</fillOpacity>
+                                <blendingMode>NORMAL</blendingMode>
+                                <locked>false</locked>
+                                <visible>false</visible>
+                                <shapes/>
+                                <effects/>
+                                </layer>
+                            </templateLayer>
+                        </canvas>
+                    </state>
+                </backgroundStates>
+                <foregroundStates/>
+                <borderStates/>
+                <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="closedIcon" subregion="true" key="closedIcon" basicKey="Tree.closedIcon">
+                <contentMargins top="0" bottom="0" left="0" right="0"/>
+                <style>
+                    <textForeground/>
+                    <textBackground/>
+                    <background/>
+                    <cacheSettingsInherited>false</cacheSettingsInherited>
+                    <uiproperties/>
+                </style>
+                <backgroundStates>
+                    <state stateKeys="Enabled">
+                        <style>
+                            <textForeground/>
+                            <textBackground/>
+                            <background/>
+                            <uiproperties/>
+                        </style>
+                        <canvas>
+                            <size width="16" height="16"/>
+                            <nextLayerNameIndex>4</nextLayerNameIndex>
+                            <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                            <layer name="Button">
+                                <opacity>1.0</opacity>
+                                <fillOpacity>1.0</fillOpacity>
+                                <blendingMode>NORMAL</blendingMode>
+                                <locked>false</locked>
+                                <visible>true</visible>
+                                <shapes>
+                                <path>
+                                    <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                    <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    <points>
+                                        <point x="12.0" y="12.0" cp1x="12.0" cp1y="12.0" cp2x="12.0" cp2y="12.0"/>
+                                    </points>
+                                </path>
+                                <path>
+                                    <gradient cycleMethod="NO_CYCLE">
+                                        <stop position="0.0" midpoint="0.5">
+                                            <matte red="100" green="122" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0027436614" saturationOffset="-0.335015" brightnessOffset="0.011764705" alphaOffset="0"/>
+                                        </stop>
+                                        <stop position="0.25449103" midpoint="0.5">
+                                            <matte red="111" green="130" blue="148" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0024294257" saturationOffset="-0.3857143" brightnessOffset="0.031372547" alphaOffset="0"/>
+                                        </stop>
+                                        <stop position="1.0" midpoint="0.5">
+                                            <matte red="76" green="91" blue="105" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0018081069" saturationOffset="-0.3595238" brightnessOffset="-0.13725492" alphaOffset="0"/>
+                                        </stop>
+                                    </gradient>
+                                    <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                    <points>
+                                        <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
+                                        <point x="13.0" y="4.0" cp1x="13.0" cp1y="4.0" cp2x="13.0" cp2y="4.0"/>
+                                        <point x="3.7407407407407405" y="3.9999999999999996" cp1x="3.7407407407407405" cp1y="3.9999999999999996" cp2x="3.7407407407407405" cp2y="3.9999999999999996"/>
+                                        <point x="2.0185185185185137" y="10.05555555555555" cp1x="2.0185185185185137" cp1y="10.05555555555555" cp2x="2.0185185185185137" cp2y="10.05555555555555"/>
+                                        <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
+                                        <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
+                                        <point x="2.9629629629629632" y="12.129629629629632" cp1x="2.9629629629629632" cp1y="12.129629629629632" cp2x="2.9629629629629632" cp2y="12.129629629629632"/>
+                                        <point x="4.579999999999991" y="4.98" cp1x="4.579999999999991" cp1y="4.98" cp2x="4.579999999999991" cp2y="4.98"/>
+                                    </points>
+                                </path>
+                                <path>
+                                    <gradient cycleMethod="NO_CYCLE">
+                                        <stop position="0.0" midpoint="0.5">
+                                            <matte red="72" green="97" blue="120" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0012094378" saturationOffset="-0.23571429" brightnessOffset="-0.0784314" alphaOffset="0"/>
+                                        </stop>
+                                        <stop position="1.0" midpoint="0.5">
+                                            <matte red="35" green="55" blue="73" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.115166366" brightnessOffset="-0.2627451" alphaOffset="0"/>
+                                        </stop>
+                                    </gradient>
+                                    <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                    <points>
+                                        <point x="16.0" y="4.0" cp1x="16.0" cp1y="4.0" cp2x="16.0" cp2y="4.0"/>
+                                        <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
+                                        <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
+                                        <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
+                                        <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                                        <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
+                                        <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
+                                        <point x="2.9444444444444438" y="1.0185185185185186" cp1x="2.9444444444444438" cp1y="1.0185185185185186" cp2x="2.9444444444444438" cp2y="1.0185185185185186"/>
+                                        <point x="2.9814814814814814" y="1.7407407407407403" cp1x="2.9814814814814814" cp1y="1.7407407407407403" cp2x="2.9814814814814814" cp2y="1.7407407407407403"/>
+                                        <point x="1.7407407407407407" y="3.0" cp1x="1.7407407407407407" cp1y="3.0" cp2x="1.7407407407407407" cp2y="3.0"/>
+                                        <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                        <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
+                                        <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
+                                        <point x="14.0" y="7.0" cp1x="14.0" cp1y="7.0" cp2x="14.0" cp2y="7.0"/>
+                                        <point x="14.87037037037037" y="5.962962962962965" cp1x="14.87037037037037" cp1y="5.962962962962965" cp2x="14.87037037037037" cp2y="5.962962962962965"/>
+                                        <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
+                                        <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
+                                        <point x="15.462962962962967" y="6.129629629629629" cp1x="15.462962962962967" cp1y="6.129629629629629" cp2x="15.462962962962967" cp2y="6.129629629629629"/>
+                                        <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                        <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
+                                        <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
+                                        <point x="1.0" y="15.0" cp1x="1.0" cp1y="15.0" cp2x="1.0" cp2y="15.0"/>
+                                        <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
+                                        <point x="0.0" y="3.25925925925926" cp1x="0.0" cp1y="3.25925925925926" cp2x="0.0" cp2y="3.25925925925926"/>
+                                        <point x="3.1851851851851856" y="0.0" cp1x="3.1851851851851856" cp1y="0.0" cp2x="3.1851851851851856" cp2y="0.0"/>
+                                        <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
+                                        <point x="8.55555555555555" y="2.0000000000000004" cp1x="8.55555555555555" cp1y="2.0000000000000004" cp2x="8.55555555555555" cp2y="2.0000000000000004"/>
+                                        <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="13.0" cp2y="2.0"/>
+                                        <point x="14.0" y="3.0" cp1x="14.0" cp1y="3.0" cp2x="14.0" cp2y="3.0"/>
+                                        <point x="14.0" y="4.0" cp1x="14.0" cp1y="4.0" cp2x="14.0" cp2y="4.0"/>
+                                    </points>
+                                </path>
+                                </shapes>
+                                <effects/>
+                            </layer>
+                            <layer name="Layer 3">
+                                <opacity>1.0</opacity>
+                                <fillOpacity>1.0</fillOpacity>
+                                <blendingMode>NORMAL</blendingMode>
+                                <locked>false</locked>
+                                <visible>true</visible>
+                                <shapes>
+                                <rectangle x1="8.0" x2="13.0" y1="3.0" y2="4.0" rounding="0.0">
+                                    <matte red="255" green="255" blue="255" alpha="155" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-100"/>
+                                    <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                </rectangle>
+                                <rectangle x1="3.0" x2="7.0" y1="1.0" y2="2.0" rounding="0.0">
+                                    <matte red="255" green="255" blue="255" alpha="205" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-50"/>
+                                    <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                </rectangle>
+                                <rectangle x1="1.0" x2="2.0" y1="3.0" y2="4.0" rounding="0.0">
+                                    <matte red="255" green="255" blue="255" alpha="130" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-125"/>
+                                    <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                </rectangle>
+                                <path>
+                                    <gradient cycleMethod="NO_CYCLE">
+                                        <stop position="0.0" midpoint="0.5">
+                                            <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
+                                        </stop>
+                                        <stop position="1.0" midpoint="0.5">
+                                            <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                        </stop>
+                                    </gradient>
+                                    <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                    <points>
+                                        <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
+                                        <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
+                                        <point x="2.041666666666667" y="10.187499999999998" cp1x="2.041666666666667" cp1y="10.187499999999998" cp2x="2.041666666666667" cp2y="10.187499999999998"/>
+                                        <point x="3.979166666666668" y="4.0" cp1x="3.979166666666668" cp1y="4.0" cp2x="3.979166666666668" cp2y="4.0"/>
+                                        <point x="13.0" y="4.0" cp1x="13.0" cp1y="4.0" cp2x="13.0" cp2y="4.0"/>
+                                        <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
+                                        <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                                        <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
+                                        <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
+                                        <point x="3.0" y="1.0" cp1x="3.0" cp1y="1.0" cp2x="3.0" cp2y="1.0"/>
+                                        <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
+                                        <point x="2.0" y="3.0" cp1x="2.0" cp1y="3.0" cp2x="2.0" cp2y="3.0"/>
+                                        <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                    </points>
+                                </path>
+                                <path>
+                                    <gradient cycleMethod="NO_CYCLE">
+                                        <stop position="0.04191617" midpoint="0.5">
+                                            <matte red="178" green="198" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.45978838" brightnessOffset="0.2980392" alphaOffset="0"/>
+                                        </stop>
+                                        <stop position="0.16467066" midpoint="0.5">
+                                            <matte red="134" green="162" blue="188" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.34848025" brightnessOffset="0.18823528" alphaOffset="0"/>
+                                        </stop>
+                                        <stop position="0.3263473" midpoint="0.5">
+                                            <matte red="111" green="139" blue="165" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.30844158" brightnessOffset="0.09803921" alphaOffset="0"/>
+                                        </stop>
+                                        <stop position="1.0" midpoint="0.5">
+                                            <matte red="95" green="123" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.27329817" brightnessOffset="0.035294116" alphaOffset="0"/>
+                                        </stop>
+                                    </gradient>
+                                    <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                    <points>
+                                        <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
+                                        <point x="3.0185185185185186" y="10.055555555555559" cp1x="3.0185185185185186" cp1y="10.055555555555559" cp2x="3.0185185185185186" cp2y="10.055555555555559"/>
+                                        <point x="4.0" y="5.0" cp1x="4.0" cp1y="5.0" cp2x="4.0" cp2y="5.0"/>
+                                        <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
+                                        <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                        <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
+                                    </points>
+                                </path>
+                                <path>
+                                    <matte red="121" green="126" blue="136" alpha="156" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.21" alphaOffset="-99"/>
+                                    <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    <points>
+                                        <point x="0.0" y="13.0" cp1x="0.0" cp1y="13.0" cp2x="0.0" cp2y="13.0"/>
+                                        <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
+                                        <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
+                                        <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
+                                        <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
+                                        <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                    </points>
+                                </path>
+                                </shapes>
+                                <effects/>
+                            </layer>
+                            <templateLayer fileName="113fe6c9b39.png">
+                                <layer name="Template" type="template">
+                                <opacity>1.0</opacity>
+                                <fillOpacity>1.0</fillOpacity>
+                                <blendingMode>NORMAL</blendingMode>
+                                <locked>false</locked>
+                                <visible>false</visible>
+                                <shapes/>
+                                <effects/>
+                                </layer>
+                            </templateLayer>
+                        </canvas>
+                    </state>
+                </backgroundStates>
+                <foregroundStates/>
+                <borderStates/>
+                <regions/>
+            </uiIconRegion>
+                <uiIconRegion name="openIcon" subregion="true" key="openIcon" basicKey="Tree.openIcon">
+                    <contentMargins top="0" bottom="0" left="0" right="0"/>
+                    <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <cacheSettingsInherited>false</cacheSettingsInherited>
+                        <uiproperties/>
+                    </style>
+                    <backgroundStates>
+                        <state stateKeys="Enabled">
+                           <style>
+                              <textForeground/>
+                              <textBackground/>
+                              <background/>
+                              <uiproperties/>
+                           </style>
+                           <canvas>
+                              <size width="16" height="16"/>
+                              <nextLayerNameIndex>4</nextLayerNameIndex>
+                              <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                              <layer name="Button">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <path>
+                                       <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="12.0" y="12.0" cp1x="12.0" cp1y="12.0" cp2x="12.0" cp2y="12.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="93" green="113" blue="133" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.33496243" brightnessOffset="-0.027450979" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="82" green="98" blue="113" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0019934773" saturationOffset="-0.361378" brightnessOffset="-0.10588238" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                       <points>
+                                          <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
+                                          <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
+                                          <point x="3.6999999999999997" y="6.0" cp1x="3.6999999999999997" cp1y="6.0" cp2x="3.6999999999999997" cp2y="6.0"/>
+                                          <point x="2.0" y="11.0" cp1x="2.0" cp1y="11.0" cp2x="2.0" cp2y="11.0"/>
+                                          <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
+                                          <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
+                                          <point x="2.9629629629629632" y="12.129629629629632" cp1x="2.9629629629629632" cp1y="12.129629629629632" cp2x="2.9629629629629632" cp2y="12.129629629629632"/>
+                                          <point x="4.0" y="7.0" cp1x="4.0" cp1y="7.0" cp2x="4.0" cp2y="7.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="72" green="97" blue="120" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0012094378" saturationOffset="-0.23571429" brightnessOffset="-0.0784314" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="35" green="55" blue="73" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.115166366" brightnessOffset="-0.2627451" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                       <points>
+                                          <point x="16.0" y="6.0" cp1x="16.0" cp1y="6.0" cp2x="16.0" cp2y="6.0"/>
+                                          <point x="16.0" y="7.0" cp1x="16.0" cp1y="7.0" cp2x="16.0" cp2y="7.0"/>
+                                          <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
+                                          <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
+                                          <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                                          <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
+                                          <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
+                                          <point x="2.9444444444444438" y="1.0185185185185186" cp1x="2.9444444444444438" cp1y="1.0185185185185186" cp2x="2.9444444444444438" cp2y="1.0185185185185186"/>
+                                          <point x="2.9814814814814814" y="1.7407407407407403" cp1x="2.9814814814814814" cp1y="1.7407407407407403" cp2x="2.9814814814814814" cp2y="1.7407407407407403"/>
+                                          <point x="1.7407407407407407" y="3.0" cp1x="1.7407407407407407" cp1y="3.0" cp2x="1.7407407407407407" cp2y="3.0"/>
+                                          <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                          <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
+                                          <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
+                                          <point x="14.0" y="11.0" cp1x="14.0" cp1y="11.0" cp2x="14.0" cp2y="11.0"/>
+                                          <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="14.0" cp2y="10.0"/>
+                                          <point x="15.579999999999997" y="7.120000000000004" cp1x="15.579999999999997" cp1y="7.120000000000004" cp2x="15.579999999999997" cp2y="7.120000000000004"/>
+                                          <point x="15.900000000000007" y="7.260000000000004" cp1x="15.900000000000007" cp1y="7.260000000000004" cp2x="15.900000000000007" cp2y="7.260000000000004"/>
+                                          <point x="15.0" y="10.0" cp1x="15.0" cp1y="10.0" cp2x="15.0" cp2y="10.0"/>
+                                          <point x="15.0" y="11.0" cp1x="15.0" cp1y="11.0" cp2x="15.0" cp2y="11.0"/>
+                                          <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
+                                          <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
+                                          <point x="1.0" y="15.0" cp1x="1.0" cp1y="15.0" cp2x="1.0" cp2y="15.0"/>
+                                          <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
+                                          <point x="0.0" y="3.25925925925926" cp1x="0.0" cp1y="3.25925925925926" cp2x="0.0" cp2y="3.25925925925926"/>
+                                          <point x="3.1851851851851856" y="0.0" cp1x="3.1851851851851856" cp1y="0.0" cp2x="3.1851851851851856" cp2y="0.0"/>
+                                          <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
+                                          <point x="8.55555555555555" y="2.0000000000000004" cp1x="8.55555555555555" cp1y="2.0000000000000004" cp2x="8.55555555555555" cp2y="2.0000000000000004"/>
+                                          <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="13.0" cp2y="2.0"/>
+                                          <point x="14.0" y="3.0" cp1x="14.0" cp1y="3.0" cp2x="14.0" cp2y="3.0"/>
+                                          <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <layer name="Layer 3">
+                                 <opacity>1.0</opacity>
+                                 <fillOpacity>1.0</fillOpacity>
+                                 <blendingMode>NORMAL</blendingMode>
+                                 <locked>false</locked>
+                                 <visible>true</visible>
+                                 <shapes>
+                                    <rectangle x1="8.0" x2="13.0" y1="3.0" y2="4.0" rounding="0.0">
+                                       <matte red="255" green="255" blue="255" alpha="155" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-100"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="3.0" x2="7.0" y1="1.0" y2="2.0" rounding="0.0">
+                                       <matte red="255" green="255" blue="255" alpha="205" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-50"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <rectangle x1="1.0" x2="2.0" y1="3.0" y2="4.0" rounding="0.0">
+                                       <matte red="255" green="255" blue="255" alpha="130" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-125"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                    </rectangle>
+                                    <path>
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.0" midpoint="0.5">
+                                             <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                       <points>
+                                          <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
+                                          <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
+                                          <point x="2.0" y="11.0" cp1x="2.0" cp1y="11.0" cp2x="2.0" cp2y="11.0"/>
+                                          <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
+                                          <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
+                                          <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
+                                          <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
+                                          <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
+                                          <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
+                                          <point x="3.0" y="1.0" cp1x="3.0" cp1y="1.0" cp2x="3.0" cp2y="1.0"/>
+                                          <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
+                                          <point x="2.0" y="3.0" cp1x="2.0" cp1y="3.0" cp2x="2.0" cp2y="3.0"/>
+                                          <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <gradient cycleMethod="NO_CYCLE">
+                                          <stop position="0.04191617" midpoint="0.5">
+                                             <matte red="178" green="198" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.45978838" brightnessOffset="0.2980392" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.16467066" midpoint="0.5">
+                                             <matte red="134" green="162" blue="188" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.34848025" brightnessOffset="0.18823528" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="0.3263473" midpoint="0.5">
+                                             <matte red="111" green="139" blue="165" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.30844158" brightnessOffset="0.09803921" alphaOffset="0"/>
+                                          </stop>
+                                          <stop position="1.0" midpoint="0.5">
+                                             <matte red="95" green="123" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.27329817" brightnessOffset="0.035294116" alphaOffset="0"/>
+                                          </stop>
+                                       </gradient>
+                                       <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+                                       <points>
+                                          <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
+                                          <point x="3.0" y="12.0" cp1x="3.0" cp1y="12.0" cp2x="3.0" cp2y="12.0"/>
+                                          <point x="4.0" y="7.0" cp1x="4.0" cp1y="7.0" cp2x="4.0" cp2y="7.0"/>
+                                          <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
+                                          <point x="15.0" y="9.0" cp1x="15.0" cp1y="9.0" cp2x="15.0" cp2y="9.0"/>
+                                          <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
+                                       </points>
+                                    </path>
+                                    <path>
+                                       <matte red="121" green="126" blue="136" alpha="156" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.21" alphaOffset="-99"/>
+                                       <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                       <points>
+                                          <point x="0.0" y="13.0" cp1x="0.0" cp1y="13.0" cp2x="0.0" cp2y="13.0"/>
+                                          <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
+                                          <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
+                                          <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
+                                          <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
+                                          <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
+                                       </points>
+                                    </path>
+                                 </shapes>
+                                 <effects/>
+                              </layer>
+                              <templateLayer fileName="113fe83f65c.png">
+                                 <layer name="Template" type="template">
+                                    <opacity>1.0</opacity>
+                                    <fillOpacity>1.0</fillOpacity>
+                                    <blendingMode>NORMAL</blendingMode>
+                                    <locked>false</locked>
+                                    <visible>false</visible>
+                                    <shapes/>
+                                    <effects/>
+                                 </layer>
+                              </templateLayer>
+                           </canvas>
+                    </state>
+                </backgroundStates>
+                <foregroundStates/>
+                <borderStates/>
+                <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="collapsedIcon" subregion="true" key="collapsedIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="7"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="102" green="102" blue="102" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.34509805" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="6.918032786885245" y="3.5081967213114753" cp1x="6.918032786885245" cp1y="3.5081967213114753" cp2x="6.918032786885245" cp2y="3.5081967213114753"/>
+                                    <point x="0.0" y="7.0" cp1x="0.0" cp1y="7.0" cp2x="0.0" cp2y="7.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113fe61c072.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="7"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="6.918032786885245" y="3.5081967213114753" cp1x="6.918032786885245" cp1y="3.5081967213114753" cp2x="6.918032786885245" cp2y="3.5081967213114753"/>
+                                    <point x="0.0" y="7.0" cp1x="0.0" cp1y="7.0" cp2x="0.0" cp2y="7.0"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+            <uiIconRegion name="expandedIcon" subregion="true" key="expandedIcon">
+               <contentMargins top="0" bottom="0" left="0" right="0"/>
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <cacheSettingsInherited>false</cacheSettingsInherited>
+                  <uiproperties/>
+               </style>
+               <backgroundStates>
+                  <state stateKeys="Enabled">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="7"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="102" green="102" blue="102" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.34509805" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
+                                    <point x="3.5409836065573774" y="6.950819672131146" cp1x="3.5409836065573774" cp1y="6.950819672131146" cp2x="3.5409836065573774" cp2y="6.950819672131146"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                        <templateLayer fileName="113fe6289fa.png">
+                           <layer name="Template" type="template">
+                              <opacity>1.0</opacity>
+                              <fillOpacity>1.0</fillOpacity>
+                              <blendingMode>NORMAL</blendingMode>
+                              <locked>false</locked>
+                              <visible>false</visible>
+                              <shapes/>
+                              <effects/>
+                           </layer>
+                        </templateLayer>
+                     </canvas>
+                  </state>
+                  <state stateKeys="Enabled+Selected">
+                     <style>
+                        <textForeground/>
+                        <textBackground/>
+                        <background/>
+                        <uiproperties/>
+                     </style>
+                     <canvas>
+                        <size width="18" height="7"/>
+                        <nextLayerNameIndex>3</nextLayerNameIndex>
+                        <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                        <layer name="Button">
+                           <opacity>1.0</opacity>
+                           <fillOpacity>1.0</fillOpacity>
+                           <blendingMode>NORMAL</blendingMode>
+                           <locked>false</locked>
+                           <visible>true</visible>
+                           <shapes>
+                              <path>
+                                 <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
+                                 <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
+                                 <points>
+                                    <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
+                                    <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
+                                    <point x="3.5409836065573774" y="6.950819672131146" cp1x="3.5409836065573774" cp1y="6.950819672131146" cp2x="3.5409836065573774" cp2y="6.950819672131146"/>
+                                 </points>
+                              </path>
+                           </shapes>
+                           <effects/>
+                        </layer>
+                     </canvas>
+                  </state>
+               </backgroundStates>
+               <foregroundStates/>
+               <borderStates/>
+               <regions/>
+            </uiIconRegion>
+         </regions>
+      </uiComponent>
+      <uiComponent opaque="true" type="javax.swing.JRootPane" name="RootPane" ui="RootPaneUI" subregion="false">
+         <stateTypes/>
+         <contentMargins top="0" bottom="0" left="0" right="0"/>
+         <style>
+            <textForeground/>
+            <textBackground/>
+            <background>
+               <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="control" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
+            </background>
+            <inherit-background>false</inherit-background>
+            <cacheSettingsInherited>false</cacheSettingsInherited>
+            <cacheMode>NO_CACHING</cacheMode>
+            <uiproperties/>
+         </style>
+         <backgroundStates>
+            <state stateKeys="Enabled">
+               <style>
+                  <textForeground/>
+                  <textBackground/>
+                  <background/>
+                  <uiproperties/>
+               </style>
+               <canvas>
+                  <size width="100" height="30"/>
+                  <nextLayerNameIndex>2</nextLayerNameIndex>
+                  <stretchingInsets top="5" bottom="5" left="5" right="5"/>
+                  <layer name="Layer 1">
+                     <opacity>1.0</opacity>
+                     <fillOpacity>1.0</fillOpacity>
+                     <blendingMode>NORMAL</blendingMode>
+                     <locked>false</locked>
+                     <visible>true</visible>
+                     <shapes/>
+                     <effects/>
+                  </layer>
+               </canvas>
+            </state>
+         </backgroundStates>
+         <foregroundStates/>
+         <borderStates/>
+         <regions/>
+      </uiComponent>
+   </components>
+</synthModel>
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java	Wed Jul 05 16:52:18 2017 +0200
@@ -113,6 +113,31 @@
                     context.getStyle().getInt(context, "ArrowButton.size", 16);
                 dim = new Dimension(size, size);
             }
+
+            // handle scaling for sizeVarients for special case components. The
+            // key "JComponent.sizeVariant" scales for large/small/mini
+            // components are based on Apples LAF
+            Container parent = context.getComponent().getParent();
+            if (parent instanceof JComponent && !(parent instanceof JComboBox)) {
+                Object scaleKey = ((JComponent)parent).
+                                    getClientProperty("JComponent.sizeVariant");
+                if (scaleKey != null){
+                    if ("large".equals(scaleKey)){
+                        dim = new Dimension(
+                                (int)(dim.width * 1.15),
+                                (int)(dim.height * 1.15));
+                    } else if ("small".equals(scaleKey)){
+                        dim = new Dimension(
+                                (int)(dim.width * 0.857),
+                                (int)(dim.height * 0.857));
+                    } else if ("mini".equals(scaleKey)){
+                        dim = new Dimension(
+                                (int)(dim.width * 0.714),
+                                (int)(dim.height * 0.714));
+                    }
+                }
+            }
+
             context.dispose();
             return dim;
         }
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -29,16 +29,11 @@
 import java.awt.event.*;
 import java.lang.reflect.*;
 import javax.swing.*;
-import javax.accessibility.*;
-import javax.swing.FocusManager;
 import javax.swing.plaf.*;
-import javax.swing.border.*;
-import javax.swing.text.*;
 import javax.swing.event.*;
 import javax.swing.plaf.basic.*;
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeEvent;
-import sun.awt.AppContext;
 import sun.swing.plaf.synth.SynthUI;
 
 /**
@@ -51,11 +46,93 @@
     private SynthStyle style;
     private boolean useListColors;
 
+    /**
+     * Used to adjust the location and size of the popup. Very useful for
+     * situations such as we find in Nimbus where part of the border is used
+     * to paint the focus. In such cases, the border is empty space, and not
+     * part of the "visual" border, and in these cases, you'd like the popup
+     * to be adjusted such that it looks as if it were next to the visual border.
+     * You may want to use negative insets to get the right look.
+     */
+    Insets popupInsets;
+
+    /**
+     * This flag may be set via UIDefaults. By default, it is false, to
+     * preserve backwards compatibility. If true, then the combo will
+     * "act as a button" when it is not editable.
+     */
+    private boolean buttonWhenNotEditable;
+
+    /**
+     * A flag to indicate that the combo box and combo box button should
+     * remain in the PRESSED state while the combo popup is visible.
+     */
+    private boolean pressedWhenPopupVisible;
+
+    /**
+     * When buttonWhenNotEditable is true, this field is used to help make
+     * the combo box appear and function as a button when the combo box is
+     * not editable. In such a state, you can click anywhere on the button
+     * to get it to open the popup. Also, anywhere you hover over the combo
+     * will cause the entire combo to go into "rollover" state, and anywhere
+     * you press will go into "pressed" state. This also keeps in sync the
+     * state of the combo and the arrowButton.
+     */
+    private ButtonHandler buttonHandler;
+
+    /**
+     * Handler for repainting combo when editor component gains/looses focus
+     */
+    private EditorFocusHandler editorFocusHandler;
+
+    /**
+     * If true, then the cell renderer will be forced to be non-opaque when
+     * used for rendering the selected item in the combo box (not in the list),
+     * and forced to opaque after rendering the selected value.
+     */
+    private boolean forceOpaque = false;
+
+    /**
+     * NOTE: This serves the same purpose as the same field in BasicComboBoxUI.
+     * It is here because I could not give the padding field in
+     * BasicComboBoxUI protected access in an update release.
+     */
+    private Insets padding;
+
     public static ComponentUI createUI(JComponent c) {
         return new SynthComboBoxUI();
     }
 
+    /**
+     * @inheritDoc
+     *
+     * Overridden to ensure that ButtonHandler is created prior to any of
+     * the other installXXX methods, since several of them reference
+     * buttonHandler.
+     */
+    @Override
+    public void installUI(JComponent c) {
+        buttonHandler = new ButtonHandler();
+        super.installUI(c);
+    }
+
+    @Override
     protected void installDefaults() {
+        //NOTE: This next line of code was added because, since squareButton in
+        //BasicComboBoxUI is private, I need to have some way of reading it from UIManager.
+        //This is an incomplete solution (since it implies that squareButons,
+        //once set, cannot be reset per state. Probably ok, but not always ok).
+        //This line of code should be removed at the same time that squareButton
+        //is made protected in the super class.
+        super.installDefaults();
+
+        //This is here instead of in updateStyle because the value for padding
+        //needs to remain consistent with the value for padding in
+        //BasicComboBoxUI. I wouldn't have this value here at all if not
+        //for the fact that I cannot make "padding" protected in any way
+        //for an update release. This *should* be fixed in Java 7
+        padding = UIManager.getInsets("ComboBox.padding");
+
         updateStyle(comboBox);
     }
 
@@ -65,12 +142,20 @@
 
         style = SynthLookAndFeel.updateStyle(context, this);
         if (style != oldStyle) {
+            popupInsets = (Insets)style.get(context, "ComboBox.popupInsets");
             useListColors = style.getBoolean(context,
-                                  "ComboBox.rendererUseListColors", true);
+                    "ComboBox.rendererUseListColors", true);
+            buttonWhenNotEditable = style.getBoolean(context,
+                    "ComboBox.buttonWhenNotEditable", false);
+            pressedWhenPopupVisible = style.getBoolean(context,
+                    "ComboBox.pressedWhenPopupVisible", false);
+
             if (oldStyle != null) {
                 uninstallKeyboardActions();
                 installKeyboardActions();
             }
+            forceOpaque = style.getBoolean(context,
+                    "ComboBox.forceOpaque", false);
         }
         context.dispose();
 
@@ -79,11 +164,24 @@
         }
     }
 
+    @Override
     protected void installListeners() {
         comboBox.addPropertyChangeListener(this);
+        comboBox.addMouseListener(buttonHandler);
+        editorFocusHandler = new EditorFocusHandler(comboBox);
         super.installListeners();
     }
 
+    @Override
+    public void uninstallUI(JComponent c) {
+        if (popup instanceof SynthComboPopup) {
+            ((SynthComboPopup)popup).removePopupMenuListener(buttonHandler);
+        }
+        super.uninstallUI(c);
+        buttonHandler = null;
+    }
+
+    @Override
     protected void uninstallDefaults() {
         SynthContext context = getContext(comboBox, ENABLED);
 
@@ -92,11 +190,17 @@
         style = null;
     }
 
+    @Override
     protected void uninstallListeners() {
+        editorFocusHandler.unregister();
         comboBox.removePropertyChangeListener(this);
+        comboBox.removeMouseListener(buttonHandler);
+        buttonHandler.pressed = false;
+        buttonHandler.over = false;
         super.uninstallListeners();
     }
 
+    @Override
     public SynthContext getContext(JComponent c) {
         return getContext(c, getComponentState(c));
     }
@@ -111,18 +215,56 @@
     }
 
     private int getComponentState(JComponent c) {
-        return SynthLookAndFeel.getComponentState(c);
+        // currently we have a broken situation where if a developer
+        // takes the border from a JComboBox and sets it on a JTextField
+        // then the codepath will eventually lead back to this method
+        // but pass in a JTextField instead of JComboBox! In case this
+        // happens, we just return the normal synth state for the component
+        // instead of doing anything special
+        if (!(c instanceof JComboBox)) return SynthLookAndFeel.getComponentState(c);
+
+        JComboBox box = (JComboBox)c;
+        if (shouldActLikeButton()) {
+            int state = ENABLED;
+            if ((!c.isEnabled())) {
+                state = DISABLED;
+            }
+            if (buttonHandler.isPressed()) {
+                state |= PRESSED;
+            }
+            if (buttonHandler.isRollover()) {
+                state |= MOUSE_OVER;
+            }
+            if (box.isFocusOwner()) {
+                state |= FOCUSED;
+            }
+            return state;
+        } else {
+            // for editable combos the editor component has the focus not the
+            // combo box its self, so we should make the combo paint focused
+            // when its editor has focus
+            int basicState = SynthLookAndFeel.getComponentState(c);
+            if (box.isEditable() &&
+                     box.getEditor().getEditorComponent().isFocusOwner()) {
+                basicState |= FOCUSED;
+            }
+            return basicState;
+        }
     }
 
+    @Override
     protected ComboPopup createPopup() {
-        SynthComboPopup popup = new SynthComboPopup( comboBox );
-        return popup;
+        SynthComboPopup p = new SynthComboPopup(comboBox);
+        p.addPopupMenuListener(buttonHandler);
+        return p;
     }
 
+    @Override
     protected ListCellRenderer createRenderer() {
         return new SynthComboBoxRenderer();
     }
 
+    @Override
     protected ComboBoxEditor createEditor() {
         return new SynthComboBoxEditor();
     }
@@ -131,22 +273,25 @@
     // end UI Initialization
     //======================
 
-
+    @Override
     public void propertyChange(PropertyChangeEvent e) {
         if (SynthLookAndFeel.shouldUpdateStyle(e)) {
             updateStyle(comboBox);
         }
     }
 
+    @Override
     protected JButton createArrowButton() {
         SynthArrowButton button = new SynthArrowButton(SwingConstants.SOUTH);
         button.setName("ComboBox.arrowButton");
+        button.setModel(buttonHandler);
         return button;
     }
 
     //=================================
     // begin ComponentUI Implementation
 
+    @Override
     public void update(Graphics g, JComponent c) {
         SynthContext context = getContext(c);
 
@@ -157,6 +302,7 @@
         context.dispose();
     }
 
+    @Override
     public void paint(Graphics g, JComponent c) {
         SynthContext context = getContext(c);
 
@@ -172,33 +318,23 @@
         }
     }
 
+    @Override
     public void paintBorder(SynthContext context, Graphics g, int x,
                             int y, int w, int h) {
         context.getPainter().paintComboBoxBorder(context, g, x, y, w, h);
     }
 
-
     /**
      * Paints the currently selected item.
      */
+    @Override
     public void paintCurrentValue(Graphics g,Rectangle bounds,boolean hasFocus) {
         ListCellRenderer renderer = comboBox.getRenderer();
         Component c;
 
-        if ( hasFocus && !isPopupVisible(comboBox) ) {
-            c = renderer.getListCellRendererComponent( listBox,
-                                                       comboBox.getSelectedItem(),
-                                                       -1,
-                                                       false,
-                                                       false );
-        }
-        else {
-            c = renderer.getListCellRendererComponent( listBox,
-                                                       comboBox.getSelectedItem(),
-                                                       -1,
-                                                       false,
-                                                       false );
-        }
+        c = renderer.getListCellRendererComponent(
+                listBox, comboBox.getSelectedItem(), -1, false, false );
+
         // Fix for 4238829: should lay out the JPanel.
         boolean shouldValidate = false;
         if (c instanceof JPanel)  {
@@ -207,36 +343,88 @@
 
         if (c instanceof UIResource) {
             c.setName("ComboBox.renderer");
-            currentValuePane.paintComponent(g,c,comboBox,bounds.x,bounds.y,
-                                        bounds.width,bounds.height, shouldValidate);
+        }
+
+        boolean force = forceOpaque && c instanceof JComponent;
+        if (force) {
+            ((JComponent)c).setOpaque(false);
         }
-        else {
-            currentValuePane.paintComponent(g,c,comboBox,bounds.x,bounds.y,
-                                        bounds.width,bounds.height, shouldValidate);
+
+        int x = bounds.x, y = bounds.y, w = bounds.width, h = bounds.height;
+        if (padding != null) {
+            x = bounds.x + padding.left;
+            y = bounds.y + padding.top;
+            w = bounds.width - (padding.left + padding.right);
+            h = bounds.height - (padding.top + padding.bottom);
+        }
+
+        currentValuePane.paintComponent(g, c, comboBox, x, y, w, h, shouldValidate);
+
+        if (force) {
+            ((JComponent)c).setOpaque(true);
         }
     }
 
     /**
+     * @return true if this combo box should act as one big button. Typically
+     * only happens when buttonWhenNotEditable is true, and comboBox.isEditable
+     * is false.
+     */
+    private boolean shouldActLikeButton() {
+        return buttonWhenNotEditable && !comboBox.isEditable();
+    }
+
+    /**
+     * Return the default size of an empty display area of the combo box using
+     * the current renderer and font.
+     *
+     * This method was overridden to use SynthComboBoxRenderer instead of
+     * DefaultListCellRenderer as the default renderer when calculating the
+     * size of the combo box. This is used in the case of the combo not having
+     * any data.
+     *
+     * @return the size of an empty display area
+     * @see #getDisplaySize
+     */
+    @Override
+    protected Dimension getDefaultSize() {
+        SynthComboBoxRenderer r = new SynthComboBoxRenderer();
+        Dimension d = getSizeForComponent(r.getListCellRendererComponent(listBox, " ", -1, false, false));
+        return new Dimension(d.width, d.height);
+    }
+
+    /**
+     * This has been refactored out in hopes that it may be investigated and
+     * simplified for the next major release. adding/removing
+     * the component to the currentValuePane and changing the font may be
+     * redundant operations.
+     *
+     * NOTE: This method was copied in its entirety from BasicComboBoxUI. Might
+     * want to make it protected in BasicComboBoxUI in Java 7
+     */
+    private Dimension getSizeForComponent(Component comp) {
+        currentValuePane.add(comp);
+        comp.setFont(comboBox.getFont());
+        Dimension d = comp.getPreferredSize();
+        currentValuePane.remove(comp);
+        return d;
+    }
+
+    /**
      * From BasicComboBoxRenderer v 1.18.
+     *
+     * Be aware that SynthFileChooserUIImpl relies on the fact that the default
+     * renderer installed on a Synth combo box is a JLabel. If this is changed,
+     * then an assert will fail in SynthFileChooserUIImpl
      */
     private class SynthComboBoxRenderer extends JLabel implements ListCellRenderer, UIResource {
         public SynthComboBoxRenderer() {
             super();
+            setName("ComboBox.renderer");
             setText(" ");
         }
 
-        public String getName() {
-            // As SynthComboBoxRenderer's are asked for a size BEFORE they
-            // are parented getName is overriden to force the name to be
-            // ComboBox.renderer if it isn't set. If we didn't do this the
-            // wrong style could be used for size calculations.
-            String name = super.getName();
-            if (name == null) {
-                return "ComboBox.renderer";
-            }
-            return name;
-        }
-
+        @Override
         public Component getListCellRendererComponent(JList list, Object value,
                          int index, boolean isSelected, boolean cellHasFocus) {
             setName("ComboBox.listRenderer");
@@ -250,8 +438,7 @@
                          SynthLabelUI.class), isSelected, cellHasFocus,
                          list.isEnabled(), false);
                 }
-            }
-            else {
+            } else {
                 setBackground(list.getBackground());
                 setForeground(list.getForeground());
             }
@@ -261,8 +448,7 @@
             if (value instanceof Icon) {
                 setIcon((Icon)value);
                 setText("");
-            }
-            else {
+            } else {
                 String text = (value == null) ? " " : value.toString();
 
                 if ("".equals(text)) {
@@ -276,12 +462,15 @@
             // especially needed for GTK comboboxes, where the
             // ListCellRenderer's state determines the visual state
             // of the combobox.
-            setEnabled(comboBox.isEnabled());
-            setComponentOrientation(comboBox.getComponentOrientation());
+            if (comboBox != null){
+                setEnabled(comboBox.isEnabled());
+                setComponentOrientation(comboBox.getComponentOrientation());
+            }
 
             return this;
         }
 
+        @Override
         public void paint(Graphics g) {
             super.paint(g);
             SynthLookAndFeel.resetSelectedUI();
@@ -302,6 +491,7 @@
             editor.setName("ComboBox.textField");
         }
 
+        @Override
         public Component getEditorComponent() {
             return editor;
         }
@@ -311,6 +501,7 @@
          *
          * @param anObject the displayed value of the editor
          */
+        @Override
         public void setItem(Object anObject) {
             String text;
 
@@ -326,6 +517,7 @@
             }
         }
 
+        @Override
         public Object getItem() {
             Object newValue = editor.getText();
 
@@ -348,17 +540,261 @@
             return newValue;
         }
 
+        @Override
         public void selectAll() {
             editor.selectAll();
             editor.requestFocus();
         }
 
+        @Override
         public void addActionListener(ActionListener l) {
             editor.addActionListener(l);
         }
 
+        @Override
         public void removeActionListener(ActionListener l) {
             editor.removeActionListener(l);
         }
     }
+
+    /**
+     * Handles all the logic for treating the combo as a button when it is
+     * not editable, and when shouldActLikeButton() is true. This class is a
+     * special ButtonModel, and installed on the arrowButton when appropriate.
+     * It also is installed as a mouse listener and mouse motion listener on
+     * the combo box. In this way, the state between the button and combo
+     * are in sync. Whenever one is "over" both are. Whenever one is pressed,
+     * both are.
+     */
+    private final class ButtonHandler extends DefaultButtonModel
+            implements MouseListener, PopupMenuListener {
+        /**
+         * Indicates that the mouse is over the combo or the arrow button.
+         * This field only has meaning if buttonWhenNotEnabled is true.
+         */
+        private boolean over;
+        /**
+         * Indicates that the combo or arrow button has been pressed. This
+         * field only has meaning if buttonWhenNotEnabled is true.
+         */
+        private boolean pressed;
+
+        //------------------------------------------------------------------
+        // State Methods
+        //------------------------------------------------------------------
+
+        /**
+         * <p>Updates the internal "pressed" state. If shouldActLikeButton()
+         * is true, and if this method call will change the internal state,
+         * then the combo and button will be repainted.</p>
+         *
+         * <p>Note that this method is called either when a press event
+         * occurs on the combo box, or on the arrow button.</p>
+         */
+        private void updatePressed(boolean p) {
+            this.pressed = p && isEnabled();
+            if (shouldActLikeButton()) {
+                comboBox.repaint();
+            }
+        }
+
+        /**
+         * <p>Updates the internal "over" state. If shouldActLikeButton()
+         * is true, and if this method call will change the internal state,
+         * then the combo and button will be repainted.</p>
+         *
+         * <p>Note that this method is called either when a mouseover/mouseoff event
+         * occurs on the combo box, or on the arrow button.</p>
+         */
+        private void updateOver(boolean o) {
+            boolean old = isRollover();
+            this.over = o && isEnabled();
+            boolean newo = isRollover();
+            if (shouldActLikeButton() && old != newo) {
+                comboBox.repaint();
+            }
+        }
+
+        //------------------------------------------------------------------
+        // DefaultButtonModel Methods
+        //------------------------------------------------------------------
+
+        /**
+         * {@inheritDoc}
+         *
+         * Ensures that isPressed() will return true if the combo is pressed,
+         * or the arrowButton is pressed, <em>or</em> if the combo popup is
+         * visible. This is the case because a combo box looks pressed when
+         * the popup is visible, and so should the arrow button.
+         */
+        @Override
+        public boolean isPressed() {
+            boolean b = shouldActLikeButton() ? pressed : super.isPressed();
+            return b || (pressedWhenPopupVisible && comboBox.isPopupVisible());
+        }
+
+        /**
+         * {@inheritDoc}
+         *
+         * Ensures that the armed state is in sync with the pressed state
+         * if shouldActLikeButton is true. Without this method, the arrow
+         * button will not look pressed when the popup is open, regardless
+         * of the result of isPressed() alone.
+         */
+        @Override
+        public boolean isArmed() {
+            boolean b = shouldActLikeButton() ||
+                        (pressedWhenPopupVisible && comboBox.isPopupVisible());
+            return b ? isPressed() : super.isArmed();
+        }
+
+        /**
+         * {@inheritDoc}
+         *
+         * Ensures that isRollover() will return true if the combo is
+         * rolled over, or the arrowButton is rolled over.
+         */
+        @Override
+        public boolean isRollover() {
+            return shouldActLikeButton() ? over : super.isRollover();
+        }
+
+        /**
+         * {@inheritDoc}
+         *
+         * Forwards pressed states to the internal "pressed" field
+         */
+        @Override
+        public void setPressed(boolean b) {
+            super.setPressed(b);
+            updatePressed(b);
+        }
+
+        /**
+         * {@inheritDoc}
+         *
+         * Forwards rollover states to the internal "over" field
+         */
+        @Override
+        public void setRollover(boolean b) {
+            super.setRollover(b);
+            updateOver(b);
+        }
+
+        //------------------------------------------------------------------
+        // MouseListener/MouseMotionListener Methods
+        //------------------------------------------------------------------
+
+        @Override
+        public void mouseEntered(MouseEvent mouseEvent) {
+            updateOver(true);
+        }
+
+        @Override
+        public void mouseExited(MouseEvent mouseEvent) {
+            updateOver(false);
+        }
+
+        @Override
+        public void mousePressed(MouseEvent mouseEvent) {
+            updatePressed(true);
+        }
+
+        @Override
+        public void mouseReleased(MouseEvent mouseEvent) {
+            updatePressed(false);
+        }
+
+        @Override
+        public void mouseClicked(MouseEvent e) {}
+
+        //------------------------------------------------------------------
+        // PopupMenuListener Methods
+        //------------------------------------------------------------------
+
+        /**
+         * @inheritDoc
+         *
+         * Ensures that the combo box is repainted when the popup is closed.
+         * This avoids a bug where clicking off the combo wasn't causing a repaint,
+         * and thus the combo box still looked pressed even when it was not.
+         *
+         * This bug was only noticed when acting as a button, but may be generally
+         * present. If so, remove the if() block
+         */
+        @Override
+        public void popupMenuCanceled(PopupMenuEvent e) {
+            if (shouldActLikeButton() || pressedWhenPopupVisible) {
+                comboBox.repaint();
+            }
+        }
+
+        @Override
+        public void popupMenuWillBecomeVisible(PopupMenuEvent e) {}
+        @Override
+        public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {}
+    }
+
+    /**
+     * Handler for repainting combo when editor component gains/looses focus
+     */
+    private static class EditorFocusHandler implements FocusListener,
+            PropertyChangeListener {
+        private JComboBox comboBox;
+        private ComboBoxEditor editor = null;
+        private Component editorComponent = null;
+
+        private EditorFocusHandler(JComboBox comboBox) {
+            this.comboBox = comboBox;
+            editor = comboBox.getEditor();
+            if (editor != null){
+                editorComponent = editor.getEditorComponent();
+                if (editorComponent != null){
+                    editorComponent.addFocusListener(this);
+                }
+            }
+            comboBox.addPropertyChangeListener("editor",this);
+        }
+
+        public void unregister(){
+            comboBox.removePropertyChangeListener(this);
+            if (editorComponent!=null){
+                editorComponent.removeFocusListener(this);
+            }
+        }
+
+        /** Invoked when a component gains the keyboard focus. */
+        public void focusGained(FocusEvent e) {
+            // repaint whole combo on focus gain
+            comboBox.repaint();
+        }
+
+        /** Invoked when a component loses the keyboard focus. */
+        public void focusLost(FocusEvent e) {
+            // repaint whole combo on focus loss
+            comboBox.repaint();
+        }
+
+        /**
+         * Called when the combos editor changes
+         *
+         * @param evt A PropertyChangeEvent object describing the event source and
+         *            the property that has changed.
+         */
+        public void propertyChange(PropertyChangeEvent evt) {
+            ComboBoxEditor newEditor = comboBox.getEditor();
+            if (editor != newEditor){
+                if (editorComponent!=null){
+                    editorComponent.removeFocusListener(this);
+                }
+                editor = newEditor;
+                if (editor != null){
+                    editorComponent = editor.getEditorComponent();
+                    if (editorComponent != null){
+                        editorComponent.addFocusListener(this);
+                    }
+                }
+            }
+        }
+    }
 }
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java	Wed Jul 05 16:52:18 2017 +0200
@@ -138,9 +138,9 @@
             }
         }
         else {
-            selectedUIState = SynthConstants.FOCUSED;
             if (enabled) {
                 selectedUIState |= SynthConstants.ENABLED;
+                selectedUIState = SynthConstants.FOCUSED;
             }
             else {
                 selectedUIState |= SynthConstants.DISABLED;
@@ -251,6 +251,26 @@
                     ((SynthLookAndFeel)laf).
                      shouldUpdateStyleOnAncestorChanged());
         }
+        // Note: The following two nimbus based overrides should be refactored
+        // to be in the Nimbus LAF. Due to constraints in an update release,
+        // we couldn't actually provide the public API necessary to allow
+        // NimbusLookAndFeel (a subclass of SynthLookAndFeel) to provide its
+        // own rules for shouldUpdateStyle.
+        else if ("Nimbus.Overrides" == eName) {
+            // Always update when the Nimbus.Overrides client property has
+            // been changed
+            return true;
+        }
+        else if ("Nimbus.Overrides.InheritDefaults" == eName) {
+            // Always update when the Nimbus.Overrides.InheritDefaults
+            // client property has changed
+            return true;
+        }
+        else if ("JComponent.sizeVariant" == eName) {
+            // Always update when the JComponent.sizeVariant
+            // client property has changed
+            return true;
+        }
         return false;
     }
 
@@ -622,6 +642,7 @@
     /**
      * Called by UIManager when this look and feel is installed.
      */
+    @Override
     public void initialize() {
         super.initialize();
         DefaultLookup.setDefaultLookup(new SynthDefaultLookup());
@@ -633,6 +654,7 @@
     /**
      * Called by UIManager when this look and feel is uninstalled.
      */
+    @Override
     public void uninitialize() {
         KeyboardFocusManager.getCurrentKeyboardFocusManager().
             removePropertyChangeListener(_handler);
@@ -647,6 +669,7 @@
      *
      * @return Defaults table.
      */
+    @Override
     public UIDefaults getDefaults() {
         UIDefaults table = new UIDefaults(60, 0.75f);
 
@@ -704,6 +727,7 @@
      *
      * @return true.
      */
+    @Override
     public boolean isSupportedLookAndFeel() {
         return true;
     }
@@ -713,6 +737,7 @@
      *
      * @return false
      */
+    @Override
     public boolean isNativeLookAndFeel() {
         return false;
     }
@@ -722,6 +747,7 @@
      *
      * @return textual description of synth.
      */
+    @Override
     public String getDescription() {
         return "Synth look and feel";
     }
@@ -731,6 +757,7 @@
      *
      * @return a short string identifying this look and feel.
      */
+    @Override
     public String getName() {
         return "Synth look and feel";
     }
@@ -740,6 +767,7 @@
      *
      * @return a short string identifying this look and feel.
      */
+    @Override
     public String getID() {
         return "Synth";
     }
@@ -805,6 +833,7 @@
             tk.addPropertyChangeListener(key, this);
         }
 
+        @Override
         public void propertyChange(PropertyChangeEvent pce) {
             UIDefaults defaults = UIManager.getLookAndFeelDefaults();
             if (defaults.getBoolean("Synth.doNotSetTextAA")) {
@@ -873,6 +902,7 @@
             if (!isUpdatePending()) {
                 setUpdatePending(true);
                 Runnable uiUpdater = new Runnable() {
+                    @Override
                     public void run() {
                         updateAllUIs();
                         setUpdatePending(false);
@@ -889,6 +919,7 @@
     }
 
     private class Handler implements PropertyChangeListener {
+        @Override
         public void propertyChange(PropertyChangeEvent evt) {
             String propertyName = evt.getPropertyName();
             Object newValue = evt.getNewValue();
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthProgressBarUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthProgressBarUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -27,14 +27,11 @@
 
 import java.awt.*;
 import java.awt.geom.AffineTransform;
-import java.awt.event.*;
 import javax.swing.*;
-import javax.swing.event.*;
 import javax.swing.plaf.*;
 import javax.swing.plaf.basic.BasicProgressBarUI;
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeEvent;
-import java.io.Serializable;
 import sun.swing.plaf.synth.SynthUI;
 import sun.swing.SwingUtilities2;
 
@@ -46,24 +43,29 @@
 class SynthProgressBarUI extends BasicProgressBarUI implements SynthUI,
         PropertyChangeListener {
     private SynthStyle style;
-
     private int progressPadding;
+    private boolean rotateText; // added for Nimbus LAF
     private boolean paintOutsideClip;
+    private boolean tileWhenIndeterminate; //whether to tile indeterminate painting
+    private int tileWidth; //the width of each tile
 
     public static ComponentUI createUI(JComponent x) {
         return new SynthProgressBarUI();
     }
 
+    @Override
     protected void installListeners() {
         super.installListeners();
         progressBar.addPropertyChangeListener(this);
     }
 
+    @Override
     protected void uninstallListeners() {
         super.uninstallListeners();
         progressBar.removePropertyChangeListener(this);
     }
 
+    @Override
     protected void installDefaults() {
         updateStyle(progressBar);
     }
@@ -72,17 +74,34 @@
         SynthContext context = getContext(c, ENABLED);
         SynthStyle oldStyle = style;
         style = SynthLookAndFeel.updateStyle(context, this);
-        if (style != oldStyle) {
-            setCellLength(style.getInt(context, "ProgressBar.cellLength", 1));
-            setCellSpacing(style.getInt(context, "ProgressBar.cellSpacing", 0));
-            progressPadding = style.getInt(context,
-                    "ProgressBar.progressPadding", 0);
-            paintOutsideClip = style.getBoolean(context,
-                    "ProgressBar.paintOutsideClip", false);
+        setCellLength(style.getInt(context, "ProgressBar.cellLength", 1));
+        setCellSpacing(style.getInt(context, "ProgressBar.cellSpacing", 0));
+        progressPadding = style.getInt(context,
+                "ProgressBar.progressPadding", 0);
+        paintOutsideClip = style.getBoolean(context,
+                "ProgressBar.paintOutsideClip", false);
+        rotateText = style.getBoolean(context,
+                "ProgressBar.rotateText", false);
+        tileWhenIndeterminate = style.getBoolean(context, "ProgressBar.tileWhenIndeterminate", false);
+        tileWidth = style.getInt(context, "ProgressBar.tileWidth", 15);
+        // handle scaling for sizeVarients for special case components. The
+        // key "JComponent.sizeVariant" scales for large/small/mini
+        // components are based on Apples LAF
+        String scaleKey = (String)progressBar.getClientProperty(
+                "JComponent.sizeVariant");
+        if (scaleKey != null){
+            if ("large".equals(scaleKey)){
+                tileWidth *= 1.15;
+            } else if ("small".equals(scaleKey)){
+                tileWidth *= 0.857;
+            } else if ("mini".equals(scaleKey)){
+                tileWidth *= 0.784;
+            }
         }
         context.dispose();
     }
 
+    @Override
     protected void uninstallDefaults() {
         SynthContext context = getContext(progressBar, ENABLED);
 
@@ -108,6 +127,7 @@
         return SynthLookAndFeel.getComponentState(c);
     }
 
+    @Override
     public int getBaseline(JComponent c, int width, int height) {
         super.getBaseline(c, width, height);
         if (progressBar.isStringPainted() &&
@@ -122,6 +142,16 @@
         return -1;
     }
 
+    @Override
+    protected Rectangle getBox(Rectangle r) {
+        if (tileWhenIndeterminate) {
+            return SwingUtilities.calculateInnerArea(progressBar, r);
+        } else {
+            return super.getBox(r);
+        }
+    }
+
+    @Override
     protected void setAnimationIndex(int newValue) {
         if (paintOutsideClip) {
             if (getAnimationIndex() == newValue) {
@@ -134,6 +164,7 @@
         }
     }
 
+    @Override
     public void update(Graphics g, JComponent c) {
         SynthContext context = getContext(c);
 
@@ -145,6 +176,7 @@
         context.dispose();
     }
 
+    @Override
     public void paint(Graphics g, JComponent c) {
         SynthContext context = getContext(c);
 
@@ -196,44 +228,98 @@
             width = boxRect.width - progressPadding - progressPadding;
             height = boxRect.height - progressPadding - progressPadding;
         }
-        context.getPainter().paintProgressBarForeground(context, g,
-                x, y, width, height, pBar.getOrientation());
 
-        if (pBar.isStringPainted() && !pBar.isIndeterminate()) {
+        //if tiling and indeterminate, then paint the progress bar foreground a
+        //bit wider than it should be. Shift as needed to ensure that there is
+        //an animated effect
+        if (tileWhenIndeterminate && pBar.isIndeterminate()) {
+            double percentComplete = (double)getAnimationIndex() / (double)getFrameCount();
+            int offset = (int)(percentComplete * tileWidth);
+            Shape clip = g.getClip();
+            g.clipRect(x, y, width, height);
+            if (pBar.getOrientation() == JProgressBar.HORIZONTAL) {
+                //paint each tile horizontally
+                for (int i=x-tileWidth+offset; i<=width; i+=tileWidth) {
+                    context.getPainter().paintProgressBarForeground(
+                            context, g, i, y, tileWidth, height, pBar.getOrientation());
+                }
+            } else { //JProgressBar.VERTICAL
+                //paint each tile vertically
+                for (int i=y-offset; i<height+tileWidth; i+=tileWidth) {
+                    context.getPainter().paintProgressBarForeground(
+                            context, g, x, i, width, tileWidth, pBar.getOrientation());
+                }
+            }
+            g.setClip(clip);
+        } else {
+            context.getPainter().paintProgressBarForeground(context, g,
+                    x, y, width, height, pBar.getOrientation());
+        }
+
+        if (pBar.isStringPainted()) {
             paintText(context, g, pBar.getString());
         }
     }
 
     protected void paintText(SynthContext context, Graphics g,
             String title) {
-        Font font = context.getStyle().getFont(context);
-        FontMetrics metrics = SwingUtilities2.getFontMetrics(progressBar, g,
-                                                             font);
+        if (progressBar.isStringPainted()) {
+            SynthStyle style = context.getStyle();
+            Font font = style.getFont(context);
+            FontMetrics fm = SwingUtilities2.getFontMetrics(
+                    progressBar, g, font);
+            int strLength = style.getGraphicsUtils(context).
+                computeStringWidth(context, font, fm, title);
+            Rectangle bounds = progressBar.getBounds();
 
-        if (progressBar.isStringPainted()) {
-            String pBarString = progressBar.getString();
-            Rectangle bounds = progressBar.getBounds();
-            int strLength = context.getStyle().getGraphicsUtils(context).
-                computeStringWidth(context, font, metrics, pBarString);
+            if (rotateText &&
+                    progressBar.getOrientation() == JProgressBar.VERTICAL){
+                Graphics2D g2 = (Graphics2D)g;
+                // Calculate the position for the text.
+                Point textPos;
+                AffineTransform rotation;
+                if (progressBar.getComponentOrientation().isLeftToRight()){
+                    rotation = AffineTransform.getRotateInstance(-Math.PI/2);
+                    textPos = new Point(
+                        (bounds.width+fm.getAscent()-fm.getDescent())/2,
+                           (bounds.height+strLength)/2);
+                } else {
+                    rotation = AffineTransform.getRotateInstance(Math.PI/2);
+                    textPos = new Point(
+                        (bounds.width-fm.getAscent()+fm.getDescent())/2,
+                           (bounds.height-strLength)/2);
+                }
 
-            // Calculate the bounds for the text.
-            Rectangle textRect = new Rectangle(
-                (bounds.width / 2) - (strLength / 2),
-                (bounds.height -
-                    (metrics.getAscent() + metrics.getDescent())) / 2,
-                0, 0);
+                // Progress bar isn't wide enough for the font.  Don't paint it.
+                if (textPos.x < 0) {
+                    return;
+                }
 
-            // Progress bar isn't tall enough for the font.  Don't paint it.
-            if (textRect.y < 0) {
-                return;
-            }
+                // Paint the text.
+                font = font.deriveFont(rotation);
+                g2.setFont(font);
+                g2.setColor(style.getColor(context, ColorType.TEXT_FOREGROUND));
+                style.getGraphicsUtils(context).paintText(context, g, title,
+                                                     textPos.x, textPos.y, -1);
+            } else {
+                // Calculate the bounds for the text.
+                Rectangle textRect = new Rectangle(
+                    (bounds.width / 2) - (strLength / 2),
+                    (bounds.height -
+                        (fm.getAscent() + fm.getDescent())) / 2,
+                    0, 0);
 
-            // Paint the text.
-            SynthStyle style = context.getStyle();
-            g.setColor(style.getColor(context, ColorType.TEXT_FOREGROUND));
-            g.setFont(style.getFont(context));
-            style.getGraphicsUtils(context).paintText(context, g, title,
-                                                 textRect.x, textRect.y, -1);
+                // Progress bar isn't tall enough for the font.  Don't paint it.
+                if (textRect.y < 0) {
+                    return;
+                }
+
+                // Paint the text.
+                g.setColor(style.getColor(context, ColorType.TEXT_FOREGROUND));
+                g.setFont(font);
+                style.getGraphicsUtils(context).paintText(context, g, title,
+                                                     textRect.x, textRect.y, -1);
+            }
         }
     }
 
@@ -244,34 +330,67 @@
     }
 
     public void propertyChange(PropertyChangeEvent e) {
-        if (SynthLookAndFeel.shouldUpdateStyle(e)) {
+        if (SynthLookAndFeel.shouldUpdateStyle(e) ||
+                "indeterminate".equals(e.getPropertyName())) {
             updateStyle((JProgressBar)e.getSource());
         }
     }
 
+    @Override
     public Dimension getPreferredSize(JComponent c) {
-        Dimension       size;
-        Insets          border = progressBar.getInsets();
-        FontMetrics     fontSizer = progressBar.getFontMetrics(
-                                                  progressBar.getFont());
+        Dimension size = null;
+        Insets border = progressBar.getInsets();
+        FontMetrics fontSizer = progressBar.getFontMetrics(progressBar.getFont());
+        String progString = progressBar.getString();
+        int stringHeight = fontSizer.getHeight() + fontSizer.getDescent();
+
         if (progressBar.getOrientation() == JProgressBar.HORIZONTAL) {
             size = new Dimension(getPreferredInnerHorizontal());
+            if (progressBar.isStringPainted()) {
+                // adjust the height if necessary to make room for the string
+                if (stringHeight > size.height) {
+                    size.height = stringHeight;
+                }
+
+                // adjust the width if necessary to make room for the string
+                int stringWidth = SwingUtilities2.stringWidth(
+                                       progressBar, fontSizer, progString);
+                if (stringWidth > size.width) {
+                    size.width = stringWidth;
+                }
+            }
         } else {
             size = new Dimension(getPreferredInnerVertical());
+            if (progressBar.isStringPainted()) {
+                // make sure the width is big enough for the string
+                if (stringHeight > size.width) {
+                    size.width = stringHeight;
+                }
+
+                // make sure the height is big enough for the string
+                int stringWidth = SwingUtilities2.stringWidth(
+                                       progressBar, fontSizer, progString);
+                if (stringWidth > size.height) {
+                    size.height = stringWidth;
+                }
+            }
         }
-        // Ensure that the progress string will fit.
-        if (progressBar.isStringPainted()) {
-            String progString = progressBar.getString();
-            int stringHeight = fontSizer.getHeight() +
-                    fontSizer.getDescent();
-            if (stringHeight > size.height) {
-                size.height = stringHeight;
-            }
-            // This is also for completeness.
-            int stringWidth = SwingUtilities2.stringWidth(
-                                   progressBar, fontSizer, progString);
-            if (stringWidth > size.width) {
-                size.width = stringWidth;
+
+        // handle scaling for sizeVarients for special case components. The
+        // key "JComponent.sizeVariant" scales for large/small/mini
+        // components are based on Apples LAF
+        String scaleKey = (String)progressBar.getClientProperty(
+                "JComponent.sizeVariant");
+        if (scaleKey != null){
+            if ("large".equals(scaleKey)){
+                size.width *= 1.15f;
+                size.height *= 1.15f;
+            } else if ("small".equals(scaleKey)){
+                size.width *= 0.90f;
+                size.height *= 0.90f;
+            } else if ("mini".equals(scaleKey)){
+                size.width *= 0.784f;
+                size.height *= 0.784f;
             }
         }
 
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollBarUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollBarUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -26,12 +26,8 @@
 package javax.swing.plaf.synth;
 
 import java.awt.*;
-import java.awt.event.*;
-
 import java.beans.*;
-
 import javax.swing.*;
-import javax.swing.event.*;
 import javax.swing.plaf.*;
 import javax.swing.plaf.basic.*;
 import sun.swing.plaf.synth.SynthUI;
@@ -52,12 +48,23 @@
     private boolean validMinimumThumbSize;
     private int scrollBarWidth;
 
+    //These two variables should be removed when the corrosponding ones in BasicScrollBarUI are made protected
+    private int incrGap;
+    private int decrGap;
 
     public static ComponentUI createUI(JComponent c)    {
         return new SynthScrollBarUI();
     }
 
     protected void installDefaults() {
+        //NOTE: This next line of code was added because, since incrGap and decrGap in
+        //BasicScrollBarUI are private, I need to have some way of updating them.
+        //This is an incomplete solution (since it implies that the incrGap and decrGap
+        //are set once, and not reset per state. Probably ok, but not always ok).
+        //This line of code should be removed at the same time that incrGap and
+        //decrGap are removed and made protected in the super class.
+        super.installDefaults();
+
         trackHighlight = NO_HIGHLIGHT;
         if (scrollbar.getLayout() == null ||
                      (scrollbar.getLayout() instanceof UIResource)) {
@@ -89,6 +96,31 @@
             if (maximumThumbSize == null) {
                 maximumThumbSize = new Dimension(4096, 4097);
             }
+
+            incrGap = style.getInt(context, "ScrollBar.incrementButtonGap", 0);
+            decrGap = style.getInt(context, "ScrollBar.decrementButtonGap", 0);
+
+            // handle scaling for sizeVarients for special case components. The
+            // key "JComponent.sizeVariant" scales for large/small/mini
+            // components are based on Apples LAF
+            String scaleKey = (String)scrollbar.getClientProperty(
+                    "JComponent.sizeVariant");
+            if (scaleKey != null){
+                if ("large".equals(scaleKey)){
+                    scrollBarWidth *= 1.15;
+                    incrGap *= 1.15;
+                    decrGap *= 1.15;
+                } else if ("small".equals(scaleKey)){
+                    scrollBarWidth *= 0.857;
+                    incrGap *= 0.857;
+                    decrGap *= 0.857;
+                } else if ("mini".equals(scaleKey)){
+                    scrollBarWidth *= 0.714;
+                    incrGap *= 0.714;
+                    decrGap *= 0.714;
+                }
+            }
+
             if (oldStyle != null) {
                 uninstallKeyboardActions();
                 installKeyboardActions();
@@ -274,18 +306,56 @@
             }
         }
         return minimumThumbSize;
-
     }
 
-
     protected JButton createDecreaseButton(int orientation)  {
-        SynthArrowButton synthArrowButton = new SynthArrowButton(orientation);
+        SynthArrowButton synthArrowButton = new SynthArrowButton(orientation) {
+            @Override
+            public boolean contains(int x, int y) {
+                if (decrGap < 0) { //there is an overlap between the track and button
+                    int width = getWidth();
+                    int height = getHeight();
+                    if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {
+                        //adjust the height by decrGap
+                        //Note: decrGap is negative!
+                        height += decrGap;
+                    } else {
+                        //adjust the width by decrGap
+                        //Note: decrGap is negative!
+                        width += decrGap;
+                    }
+                    return (x >= 0) && (x < width) && (y >= 0) && (y < height);
+                }
+                return super.contains(x, y);
+            }
+        };
         synthArrowButton.setName("ScrollBar.button");
         return synthArrowButton;
     }
 
     protected JButton createIncreaseButton(int orientation)  {
-        SynthArrowButton synthArrowButton = new SynthArrowButton(orientation);
+        SynthArrowButton synthArrowButton = new SynthArrowButton(orientation) {
+            @Override
+            public boolean contains(int x, int y) {
+                if (incrGap < 0) { //there is an overlap between the track and button
+                    int width = getWidth();
+                    int height = getHeight();
+                    if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {
+                        //adjust the height and y by incrGap
+                        //Note: incrGap is negative!
+                        height += incrGap;
+                        y += incrGap;
+                    } else {
+                        //adjust the width and x by incrGap
+                        //Note: incrGap is negative!
+                        width += incrGap;
+                        x += incrGap;
+                    }
+                    return (x >= 0) && (x < width) && (y >= 0) && (y < height);
+                }
+                return super.contains(x, y);
+            }
+        };
         synthArrowButton.setName("ScrollBar.button");
         return synthArrowButton;
     }
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollPaneUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollPaneUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -26,7 +26,7 @@
 package javax.swing.plaf.synth;
 
 import javax.swing.*;
-import javax.swing.event.*;
+import javax.swing.text.JTextComponent;
 import javax.swing.border.*;
 import javax.swing.plaf.*;
 import javax.swing.plaf.basic.*;
@@ -35,7 +35,11 @@
 import java.beans.PropertyChangeEvent;
 
 import java.awt.*;
-import java.awt.event.*;
+import java.awt.event.ContainerListener;
+import java.awt.event.ContainerEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.FocusEvent;
+
 import sun.swing.plaf.synth.SynthUI;
 
 
@@ -47,11 +51,14 @@
 class SynthScrollPaneUI extends BasicScrollPaneUI implements
                  PropertyChangeListener, SynthUI {
     private SynthStyle style;
+    private boolean viewportViewHasFocus = false;
+    private ViewportViewFocusHandler viewportViewFocusHandler;
 
     public static ComponentUI createUI(JComponent x) {
         return new SynthScrollPaneUI();
     }
 
+    @Override
     public void update(Graphics g, JComponent c) {
         SynthContext context = getContext(c);
 
@@ -62,6 +69,7 @@
         context.dispose();
     }
 
+    @Override
     public void paint(Graphics g, JComponent c) {
         SynthContext context = getContext(c);
 
@@ -83,6 +91,7 @@
         context.getPainter().paintScrollPaneBorder(context, g, x, y, w, h);
     }
 
+    @Override
     protected void installDefaults(JScrollPane scrollpane) {
         updateStyle(scrollpane);
     }
@@ -106,11 +115,21 @@
     }
 
 
+    @Override
     protected void installListeners(JScrollPane c) {
         super.installListeners(c);
         c.addPropertyChangeListener(this);
+        if (UIManager.getBoolean("ScrollPane.useChildTextComponentFocus")){
+            viewportViewFocusHandler = new ViewportViewFocusHandler();
+            c.getViewport().addContainerListener(viewportViewFocusHandler);
+            Component view = c.getViewport().getView();
+            if (view instanceof JTextComponent) {
+                view.addFocusListener(viewportViewFocusHandler);
+            }
+        }
     }
 
+    @Override
     protected void uninstallDefaults(JScrollPane c) {
         SynthContext context = getContext(c, ENABLED);
 
@@ -123,9 +142,18 @@
     }
 
 
+    @Override
     protected void uninstallListeners(JComponent c) {
         super.uninstallListeners(c);
         c.removePropertyChangeListener(this);
+        if (viewportViewFocusHandler != null) {
+            JViewport viewport = ((JScrollPane) c).getViewport();
+            viewport.removeContainerListener(viewportViewFocusHandler);
+            if (viewport.getView()!= null) {
+                viewport.getView().removeFocusListener(viewportViewFocusHandler);
+            }
+            viewportViewFocusHandler = null;
+        }
     }
 
 
@@ -145,7 +173,11 @@
 
 
     private int getComponentState(JComponent c) {
-        return SynthLookAndFeel.getComponentState(c);
+        int baseState = SynthLookAndFeel.getComponentState(c);
+        if (viewportViewFocusHandler!=null && viewportViewHasFocus){
+            baseState = baseState | FOCUSED;
+        }
+        return baseState;
     }
 
     public void propertyChange(PropertyChangeEvent e) {
@@ -167,6 +199,7 @@
             }
         }
 
+        @Override
         public void paintBorder(Component c, Graphics g, int x, int y,
                             int width, int height) {
             JComponent jc = (JComponent)c;
@@ -182,6 +215,7 @@
             context.dispose();
         }
 
+        @Override
         public Insets getBorderInsets(Component c, Insets insets) {
             if (insets == null) {
                 return new Insets(this.insets.top, this.insets.left,
@@ -194,8 +228,39 @@
             return insets;
         }
 
+        @Override
         public boolean isBorderOpaque() {
             return false;
         }
     }
+
+    /**
+     * Handle keeping track of the viewport's view's focus
+     */
+    private class ViewportViewFocusHandler implements ContainerListener,
+            FocusListener{
+        public void componentAdded(ContainerEvent e) {
+            if (e.getChild() instanceof JTextComponent) {
+                e.getChild().addFocusListener(this);
+                viewportViewHasFocus = e.getChild().isFocusOwner();
+                scrollpane.repaint();
+            }
+        }
+
+        public void componentRemoved(ContainerEvent e) {
+            if (e.getChild() instanceof JTextComponent) {
+                e.getChild().removeFocusListener(this);
+            }
+        }
+
+        public void focusGained(FocusEvent e) {
+            viewportViewHasFocus = true;
+            scrollpane.repaint();
+        }
+
+        public void focusLost(FocusEvent e) {
+            viewportViewHasFocus = false;
+            scrollpane.repaint();
+        }
+    }
 }
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthSliderUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthSliderUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -53,6 +53,20 @@
     protected Rectangle valueRect = new Rectangle();
     protected boolean paintValue;
 
+    /**
+     * When a JSlider is used as a renderer in a JTable, its layout is not
+     * being recomputed even though the size is changing. Even though there
+     * is a ComponentListener installed, it is not being notified. As such,
+     * at times when being asked to paint the layout should first be redone.
+     * At the end of the layout method we set this lastSize variable, which
+     * represents the size of the slider the last time it was layed out.
+     *
+     * In the paint method we then check to see that this is accurate, that
+     * the slider has not changed sizes since being last layed out. If necessary
+     * we recompute the layout.
+     */
+    private Dimension lastSize = null;
+
     private int trackHeight;
     private int trackBorder;
     private int thumbWidth;
@@ -63,7 +77,8 @@
     private SynthStyle sliderThumbStyle;
 
     /** Used to determine the color to paint the thumb. */
-    private transient boolean thumbActive;
+    private transient boolean thumbActive; //happens on rollover, and when pressed
+    private transient boolean thumbPressed; //happens when mouse was depressed while over thumb
 
     ///////////////////////////////////////////////////
     // ComponentUI Interface Implementation methods
@@ -119,6 +134,24 @@
             thumbHeight =
                 style.getInt(context, "Slider.thumbHeight", 14);
 
+            // handle scaling for sizeVarients for special case components. The
+            // key "JComponent.sizeVariant" scales for large/small/mini
+            // components are based on Apples LAF
+            String scaleKey = (String)slider.getClientProperty(
+                    "JComponent.sizeVariant");
+            if (scaleKey != null){
+                if ("large".equals(scaleKey)){
+                    thumbWidth *= 1.15;
+                    thumbHeight *= 1.15;
+                } else if ("small".equals(scaleKey)){
+                    thumbWidth *= 0.857;
+                    thumbHeight *= 0.857;
+                } else if ("mini".equals(scaleKey)){
+                    thumbWidth *= 0.784;
+                    thumbHeight *= 0.784;
+                }
+            }
+
             trackBorder =
                 style.getInt(context, "Slider.trackBorder", 1);
 
@@ -152,6 +185,11 @@
         setThumbActive(thumbRect.contains(x, y));
     }
 
+    private void updateThumbState(int x, int y, boolean pressed) {
+        updateThumbState(x, y);
+        setThumbPressed(pressed);
+    }
+
     private void setThumbActive(boolean active) {
         if (thumbActive != active) {
             thumbActive = active;
@@ -159,6 +197,13 @@
         }
     }
 
+    private void setThumbPressed(boolean pressed) {
+        if (thumbPressed != pressed) {
+            thumbPressed = pressed;
+            slider.repaint(thumbRect);
+        }
+    }
+
     public int getBaseline(JComponent c, int width, int height) {
         if (c == null) {
             throw new NullPointerException("Component must be non-null");
@@ -418,6 +463,7 @@
             }
         }
         context.dispose();
+        lastSize = slider.getSize();
     }
 
     /**
@@ -667,7 +713,9 @@
 
     private int getComponentState(JComponent c, Region region) {
         if (region == Region.SLIDER_THUMB && thumbActive &&c.isEnabled()) {
-            return MOUSE_OVER;
+            int state = thumbPressed ? PRESSED : MOUSE_OVER;
+            if (c.isFocusOwner()) state |= FOCUSED;
+            return state;
         }
         return SynthLookAndFeel.getComponentState(c);
     }
@@ -693,6 +741,10 @@
         recalculateIfOrientationChanged();
         Rectangle clip = g.getClipBounds();
 
+        if (lastSize == null || !lastSize.equals(slider.getSize())) {
+            calculateGeometry();
+        }
+
         if (paintValue) {
             FontMetrics fm = SwingUtilities2.getFontMetrics(slider, g);
             int labelWidth = context.getStyle().getGraphicsUtils(context).
@@ -781,9 +833,14 @@
             setThumbActive(false);
         }
 
+        public void mousePressed(MouseEvent e) {
+            super.mousePressed(e);
+            setThumbPressed(thumbRect.contains(e.getX(), e.getY()));
+        }
+
         public void mouseReleased(MouseEvent e) {
             super.mouseReleased(e);
-            updateThumbState(e.getX(), e.getY());
+            updateThumbState(e.getX(), e.getY(), false);
         }
 
         public void mouseDragged(MouseEvent e) {
@@ -814,6 +871,7 @@
 
                 if (drawInverted()) {
                     trackBottom = vMax;
+                    trackTop = trackTop + halfThumbHeight;
                 } else {
                     trackTop = vMax;
                 }
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthSpinnerUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthSpinnerUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -26,17 +26,12 @@
 
 import java.awt.*;
 import java.awt.event.*;
-import java.text.ParseException;
 
 import javax.swing.*;
-import javax.swing.event.*;
 import javax.swing.plaf.*;
 import javax.swing.plaf.basic.BasicSpinnerUI;
-import javax.swing.text.*;
 
 import java.beans.*;
-import java.text.*;
-import java.util.*;
 import sun.swing.plaf.synth.SynthUI;
 
 /**
@@ -48,7 +43,16 @@
 class SynthSpinnerUI extends BasicSpinnerUI implements PropertyChangeListener,
         SynthUI {
     private SynthStyle style;
-
+    /**
+     * A FocusListener implementation which causes the entire spinner to be
+     * repainted whenever the editor component (typically a text field) becomes
+     * focused, or loses focus. This is necessary because since SynthSpinnerUI
+     * is composed of an editor and two buttons, it is necessary that all three
+     * components indicate that they are "focused" so that they can be drawn
+     * appropriately. The repaint is used to ensure that the buttons are drawn
+     * in the new focused or unfocused state, mirroring that of the editor.
+     */
+    private EditorFocusHandler editorFocusHandler = new EditorFocusHandler();
 
     /**
      * Returns a new instance of SynthSpinnerUI.
@@ -61,9 +65,17 @@
         return new SynthSpinnerUI();
     }
 
+    @Override
     protected void installListeners() {
         super.installListeners();
         spinner.addPropertyChangeListener(this);
+        JComponent editor = spinner.getEditor();
+        if (editor instanceof JSpinner.DefaultEditor) {
+            JTextField tf = ((JSpinner.DefaultEditor)editor).getTextField();
+            if (tf != null) {
+                tf.addFocusListener(editorFocusHandler);
+            }
+        }
     }
 
     /**
@@ -74,9 +86,17 @@
      *
      * @see #installListeners
      */
+    @Override
     protected void uninstallListeners() {
         super.uninstallListeners();
         spinner.removePropertyChangeListener(this);
+        JComponent editor = spinner.getEditor();
+        if (editor instanceof JSpinner.DefaultEditor) {
+            JTextField tf = ((JSpinner.DefaultEditor)editor).getTextField();
+            if (tf != null) {
+                tf.removeFocusListener(editorFocusHandler);
+            }
+        }
     }
 
     /**
@@ -233,6 +253,18 @@
     protected void replaceEditor(JComponent oldEditor, JComponent newEditor) {
         spinner.remove(oldEditor);
         spinner.add(newEditor, "Editor");
+        if (oldEditor instanceof JSpinner.DefaultEditor) {
+            JTextField tf = ((JSpinner.DefaultEditor)oldEditor).getTextField();
+            if (tf != null) {
+                tf.removeFocusListener(editorFocusHandler);
+            }
+        }
+        if (newEditor instanceof JSpinner.DefaultEditor) {
+            JTextField tf = ((JSpinner.DefaultEditor)newEditor).getTextField();
+            if (tf != null) {
+                tf.addFocusListener(editorFocusHandler);
+            }
+        }
     }
 
     private void updateEditorAlignment(JComponent editor) {
@@ -240,10 +272,14 @@
             SynthContext context = getContext(spinner);
             Integer alignment = (Integer)context.getStyle().get(
                     context, "Spinner.editorAlignment");
+            JTextField text = ((JSpinner.DefaultEditor)editor).getTextField();
             if (alignment != null) {
-                JTextField text = ((JSpinner.DefaultEditor)editor).getTextField();
                 text.setHorizontalAlignment(alignment);
+
             }
+            // copy across the sizeVariant property to the editor
+            text.putClientProperty("JComponent.sizeVariant",
+                    spinner.getClientProperty("JComponent.sizeVariant"));
         }
     }
 
@@ -404,4 +440,38 @@
             }
         }
     }
+
+    /** Listen to editor text field focus changes and repaint whole spinner */
+    private class EditorFocusHandler implements FocusListener{
+        /** Invoked when a editor text field gains the keyboard focus. */
+        public void focusGained(FocusEvent e) {
+            spinner.repaint();
+        }
+
+        /** Invoked when a editor text field loses the keyboard focus. */
+        public void focusLost(FocusEvent e) {
+            spinner.repaint();
+        }
+    }
+
+    /** Override the arrowbuttons focus handling to follow the text fields focus */
+    private class SpinnerArrowButton extends SynthArrowButton{
+        public SpinnerArrowButton(int direction) {
+            super(direction);
+        }
+
+        @Override
+        public boolean isFocusOwner() {
+            if (spinner == null){
+                return super.isFocusOwner();
+            } else if (spinner.getEditor() instanceof JSpinner.DefaultEditor){
+                return ((JSpinner.DefaultEditor)spinner.getEditor())
+                        .getTextField().isFocusOwner();
+            } else if (spinner.getEditor()!= null) {
+                return spinner.getEditor().isFocusOwner();
+            } else {
+                return super.isFocusOwner();
+            }
+        }
+    }
 }
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthStyle.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthStyle.java	Wed Jul 05 16:52:18 2017 +0200
@@ -32,6 +32,7 @@
 import javax.swing.text.DefaultEditorKit;
 import java.util.HashMap;
 import java.util.Map;
+import javax.swing.text.JTextComponent;
 import sun.swing.plaf.synth.SynthUI;
 
 /**
@@ -758,28 +759,48 @@
     public Color getColor(SynthContext context, ColorType type) {
         JComponent c = context.getComponent();
         Region id = context.getRegion();
-        int cs = context.getComponentState();
-        // For the enabled state, prefer the widget's colors
-        if (!id.isSubregion() && cs == SynthConstants.ENABLED) {
+
+        if ((context.getComponentState() & SynthConstants.DISABLED) != 0) {
+            //This component is disabled, so return the disabled color.
+            //In some cases this means ignoring the color specified by the
+            //developer on the component. In other cases it means using a
+            //specified disabledTextColor, such as on JTextComponents.
+            //For example, JLabel doesn't specify a disabled color that the
+            //developer can set, yet it should have a disabled color to the
+            //text when the label is disabled. This code allows for that.
+            if (c instanceof JTextComponent) {
+                JTextComponent txt = (JTextComponent)c;
+                Color disabledColor = txt.getDisabledTextColor();
+                if (disabledColor == null || disabledColor instanceof UIResource) {
+                    return getColorForState(context, type);
+                }
+            } else if (c instanceof JLabel &&
+                            (type == ColorType.FOREGROUND ||
+                             type == ColorType.TEXT_FOREGROUND)) {
+                return getColorForState(context, type);
+            }
+        }
+
+        // If the developer has specified a color, prefer it. Otherwise, get
+        // the color for the state.
+        Color color = null;
+        if (!id.isSubregion()) {
             if (type == ColorType.BACKGROUND) {
-                return c.getBackground();
+                color = c.getBackground();
             }
             else if (type == ColorType.FOREGROUND) {
-                return c.getForeground();
+                color = c.getForeground();
             }
             else if (type == ColorType.TEXT_FOREGROUND) {
-                // If getForeground returns a non-UIResource it means the
-                // developer has explicitly set the foreground, use it over
-                // that of TEXT_FOREGROUND as that is typically the expected
-                // behavior.
-                Color color = c.getForeground();
-                if (!(color instanceof UIResource)) {
-                    return color;
-                }
+                color = c.getForeground();
             }
         }
-        // Then use what we've locally defined
-        Color color = getColorForState(context, type);
+
+        if (color == null || color instanceof UIResource) {
+            // Then use what we've locally defined
+            color = getColorForState(context, type);
+        }
+
         if (color == null) {
             // No color, fallback to that of the widget.
             if (type == ColorType.BACKGROUND ||
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -26,7 +26,6 @@
 package javax.swing.plaf.synth;
 
 import javax.swing.*;
-import javax.swing.event.*;
 import javax.swing.plaf.*;
 import javax.swing.plaf.basic.*;
 import javax.swing.text.View;
@@ -35,8 +34,6 @@
 import java.awt.event.*;
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeEvent;
-import java.util.Vector;
-import java.util.Hashtable;
 import sun.swing.plaf.synth.SynthUI;
 import sun.swing.SwingUtilities2;
 
@@ -50,6 +47,40 @@
  * insets for the selected tab.
  */
 class SynthTabbedPaneUI extends BasicTabbedPaneUI implements SynthUI, PropertyChangeListener  {
+    /**
+     * <p>If non-zero, tabOverlap indicates the amount that the tab bounds
+     * should be altered such that they would overlap with a tab on either the
+     * leading or trailing end of a run (ie: in TOP, this would be on the left
+     * or right).</p>
+
+     * <p>A positive overlap indicates that tabs should overlap right/down,
+     * while a negative overlap indicates tha tabs should overlap left/up.</p>
+     *
+     * <p>When tabOverlap is specified, it both changes the x position and width
+     * of the tab if in TOP or BOTTOM placement, and changes the y position and
+     * height if in LEFT or RIGHT placement.</p>
+     *
+     * <p>This is done for the following reason. Consider a run of 10 tabs.
+     * There are 9 gaps between these tabs. If you specified a tabOverlap of
+     * "-1", then each of the tabs "x" values will be shifted left. This leaves
+     * 9 pixels of space to the right of the right-most tab unpainted. So, each
+     * tab's width is also extended by 1 pixel to make up the difference.</p>
+     *
+     * <p>This property respects the RTL component orientation.</p>
+     */
+    private int tabOverlap = 0;
+
+    /**
+     * When a tabbed pane has multiple rows of tabs, this indicates whether
+     * the tabs in the upper row(s) should extend to the base of the tab area,
+     * or whether they should remain at their normal tab height. This does not
+     * affect the bounds of the tabs, only the bounds of area painted by the
+     * tabs. The text position does not change. The result is that the bottom
+     * border of the upper row of tabs becomes fully obscured by the lower tabs,
+     * resulting in a cleaner look.
+     */
+    private boolean extendTabsToBase = false;
+
     private SynthContext tabAreaContext;
     private SynthContext tabContext;
     private SynthContext tabContentContext;
@@ -64,6 +95,14 @@
 
     private Rectangle tabAreaBounds = new Rectangle();
 
+    //added for the Nimbus look and feel, where the tab area is painted differently depending on the
+    //state for the selected tab
+    private boolean tabAreaStatesMatchSelectedTab = false;
+    //added for the Nimbus LAF to ensure that the labels don't move whether the tab is selected or not
+    private boolean nudgeSelectedLabel = true;
+
+    private boolean selectedTabIsPressed = false;
+
     public static ComponentUI createUI(JComponent c) {
         return new SynthTabbedPaneUI();
     }
@@ -90,12 +129,19 @@
         if (style != oldStyle) {
             tabRunOverlay =
                 style.getInt(context, "TabbedPane.tabRunOverlay", 0);
+            tabOverlap = style.getInt(context, "TabbedPane.tabOverlap", 0);
+            extendTabsToBase = style.getBoolean(context,
+                    "TabbedPane.extendTabsToBase", false);
             textIconGap = style.getInt(context, "TabbedPane.textIconGap", 0);
             selectedTabPadInsets = (Insets)style.get(context,
                 "TabbedPane.selectedTabPadInsets");
             if (selectedTabPadInsets == null) {
                 selectedTabPadInsets = new Insets(0, 0, 0, 0);
             }
+            tabAreaStatesMatchSelectedTab = style.getBoolean(context,
+                    "TabbedPane.tabAreaStatesMatchSelectedTab", false);
+            nudgeSelectedLabel = style.getBoolean(context,
+                    "TabbedPane.nudgeSelectedLabel", true);
             if (oldStyle != null) {
                 uninstallKeyboardActions();
                 installKeyboardActions();
@@ -199,6 +245,14 @@
     }
 
     protected JButton createScrollButton(int direction) {
+        // added for Nimbus LAF so that it can use the basic arrow buttons
+        // UIManager is queried directly here because this is called before
+        // updateStyle is called so the style can not be queried directly
+        if (UIManager.getBoolean("TabbedPane.useBasicArrows")) {
+            JButton btn = super.createScrollButton(direction);
+            btn.setBorder(BorderFactory.createEmptyBorder());
+            return btn;
+        }
         return new SynthScrollableTabButton(direction);
     }
 
@@ -208,6 +262,75 @@
         }
     }
 
+    /**
+     * @inheritDoc
+     *
+     * Overridden to keep track of whether the selected tab is also pressed.
+     */
+    @Override
+    protected MouseListener createMouseListener() {
+        final MouseListener delegate = super.createMouseListener();
+        final MouseMotionListener delegate2 = (MouseMotionListener)delegate;
+        return new MouseListener() {
+            public void mouseClicked(MouseEvent e) { delegate.mouseClicked(e); }
+            public void mouseEntered(MouseEvent e) { delegate.mouseEntered(e); }
+            public void mouseExited(MouseEvent e) { delegate.mouseExited(e); }
+
+            public void mousePressed(MouseEvent e) {
+                if (!tabPane.isEnabled()) {
+                    return;
+                }
+
+                int tabIndex = tabForCoordinate(tabPane, e.getX(), e.getY());
+                if (tabIndex >= 0 && tabPane.isEnabledAt(tabIndex)) {
+                    if (tabIndex == tabPane.getSelectedIndex()) {
+                        // Clicking on selected tab
+                        selectedTabIsPressed = true;
+                        //TODO need to just repaint the tab area!
+                        tabPane.repaint();
+                    }
+                }
+
+                //forward the event (this will set the selected index, or none at all
+                delegate.mousePressed(e);
+            }
+
+            public void mouseReleased(MouseEvent e) {
+                if (selectedTabIsPressed) {
+                    selectedTabIsPressed = false;
+                    //TODO need to just repaint the tab area!
+                    tabPane.repaint();
+                }
+                //forward the event
+                delegate.mouseReleased(e);
+
+                //hack: The super method *should* be setting the mouse-over property correctly
+                //here, but it doesn't. That is, when the mouse is released, whatever tab is below the
+                //released mouse should be in rollover state. But, if you select a tab and don't
+                //move the mouse, this doesn't happen. Hence, forwarding the event.
+                delegate2.mouseMoved(e);
+            }
+        };
+    }
+
+    @Override
+    protected int getTabLabelShiftX(int tabPlacement, int tabIndex, boolean isSelected) {
+        if (nudgeSelectedLabel) {
+            return super.getTabLabelShiftX(tabPlacement, tabIndex, isSelected);
+        } else {
+            return 0;
+        }
+    }
+
+    @Override
+    protected int getTabLabelShiftY(int tabPlacement, int tabIndex, boolean isSelected) {
+        if (nudgeSelectedLabel) {
+            return super.getTabLabelShiftY(tabPlacement, tabIndex, isSelected);
+        } else {
+            return 0;
+        }
+    }
+
     public void update(Graphics g, JComponent c) {
         SynthContext context = getContext(c);
 
@@ -321,6 +444,20 @@
                                 Rectangle tabAreaBounds) {
         Rectangle clipRect = g.getClipBounds();
 
+        //if the tab area's states should match that of the selected tab, then
+        //first update the selected tab's states, then set the state
+        //for the tab area to match
+        //otherwise, restore the tab area's state to ENABLED (which is the
+        //only supported state otherwise).
+        if (tabAreaStatesMatchSelectedTab && selectedIndex >= 0) {
+            updateTabContext(selectedIndex, true, selectedTabIsPressed,
+                              (getRolloverTab() == selectedIndex),
+                              (getFocusIndex() == selectedIndex));
+            ss.setComponentState(tabContext.getComponentState());
+        } else {
+            ss.setComponentState(SynthConstants.ENABLED);
+        }
+
         // Paint the tab area.
         SynthLookAndFeel.updateSubregion(ss, g, tabAreaBounds);
         ss.getPainter().paintTabbedPaneTabAreaBackground(ss, g,
@@ -362,17 +499,22 @@
 
         Rectangle r = null;
 
-        if ((oldRolloverTab >= 0) && (oldRolloverTab < tabPane.getTabCount())) {
-            r = getTabBounds(tabPane, oldRolloverTab);
-            if (r != null) {
-                tabPane.repaint(r);
+        if (oldRolloverTab != index && tabAreaStatesMatchSelectedTab) {
+            //TODO need to just repaint the tab area!
+            tabPane.repaint();
+        } else {
+            if ((oldRolloverTab >= 0) && (oldRolloverTab < tabPane.getTabCount())) {
+                r = getTabBounds(tabPane, oldRolloverTab);
+                if (r != null) {
+                    tabPane.repaint(r);
+                }
             }
-        }
 
-        if (index >= 0) {
-            r = getTabBounds(tabPane, index);
-            if (r != null) {
-                tabPane.repaint(r);
+            if (index >= 0) {
+                r = getTabBounds(tabPane, index);
+                if (r != null) {
+                    tabPane.repaint(r);
+                }
             }
         }
     }
@@ -383,18 +525,51 @@
         Rectangle tabRect = rects[tabIndex];
         int selectedIndex = tabPane.getSelectedIndex();
         boolean isSelected = selectedIndex == tabIndex;
-        updateTabContext(tabIndex, isSelected,
-                          (getRolloverTab() == tabIndex),
-                          (getFocusIndex() == tabIndex));
+        updateTabContext(tabIndex, isSelected, isSelected && selectedTabIsPressed,
+                            (getRolloverTab() == tabIndex),
+                            (getFocusIndex() == tabIndex));
 
         SynthLookAndFeel.updateSubregion(ss, g, tabRect);
-        tabContext.getPainter().paintTabbedPaneTabBackground(tabContext,
-                                g, tabRect.x, tabRect.y, tabRect.width,
-                                tabRect.height, tabIndex,
-                                tabPane.getTabPlacement());
+        int x = tabRect.x;
+        int y = tabRect.y;
+        int height = tabRect.height;
+        int width = tabRect.width;
+        int placement = tabPane.getTabPlacement();
+        if (extendTabsToBase && runCount > 1) {
+            //paint this tab such that its edge closest to the base is equal to
+            //edge of the selected tab closest to the base. In terms of the TOP
+            //tab placement, this will cause the bottom of each tab to be
+            //painted even with the bottom of the selected tab. This is because
+            //in each tab placement (TOP, LEFT, BOTTOM, RIGHT) the selected tab
+            //is closest to the base.
+            if (selectedIndex >= 0) {
+                Rectangle r = rects[selectedIndex];
+                switch (placement) {
+                    case TOP:
+                        int bottomY = r.y + r.height;
+                        height = bottomY - tabRect.y;
+                        break;
+                    case LEFT:
+                        int rightX = r.x + r.width;
+                        width = rightX - tabRect.x;
+                        break;
+                    case BOTTOM:
+                        int topY = r.y;
+                        height = (tabRect.y + tabRect.height) - topY;
+                        y = topY;
+                        break;
+                    case RIGHT:
+                        int leftX = r.x;
+                        width = (tabRect.x + tabRect.width) - leftX;
+                        x = leftX;
+                        break;
+                }
+            }
+        }
+        tabContext.getPainter().paintTabbedPaneTabBackground(tabContext, g,
+                x, y, width, height, tabIndex, placement);
         tabContext.getPainter().paintTabbedPaneTabBorder(tabContext, g,
-                   tabRect.x, tabRect.y, tabRect.width, tabRect.height,
-                   tabIndex, tabPane.getTabPlacement());
+                x, y, width, height, tabIndex, placement);
 
         if (tabPane.getTabComponentAt(tabIndex) == null) {
             String title = tabPane.getTitleAt(tabIndex);
@@ -561,7 +736,7 @@
     }
 
     protected Insets getTabInsets(int tabPlacement, int tabIndex) {
-        updateTabContext(tabIndex, false, false,
+        updateTabContext(tabIndex, false, false, false,
                           (getFocusIndex() == tabIndex));
         return tabInsets;
     }
@@ -575,7 +750,7 @@
     }
 
     private void updateTabContext(int index, boolean selected,
-                                  boolean isMouseOver, boolean hasFocus) {
+                                  boolean isMouseDown, boolean isMouseOver, boolean hasFocus) {
         int state = 0;
         if (!tabPane.isEnabled() || !tabPane.isEnabledAt(index)) {
             state |= SynthConstants.DISABLED;
@@ -599,9 +774,68 @@
         if (hasFocus && tabPane.hasFocus()) {
             state |= SynthConstants.FOCUSED; // individual tab has focus
         }
+        if (isMouseDown) {
+            state |= SynthConstants.PRESSED;
+        }
+
         tabContext.setComponentState(state);
     }
 
+    /**
+     * @inheritDoc
+     *
+     * Overridden to create a TabbedPaneLayout subclass which takes into
+     * account tabOverlap.
+     */
+    @Override protected LayoutManager createLayoutManager() {
+        if (tabPane.getTabLayoutPolicy() == JTabbedPane.SCROLL_TAB_LAYOUT) {
+            return super.createLayoutManager();
+        } else { /* WRAP_TAB_LAYOUT */
+            return new TabbedPaneLayout() {
+                @Override
+                public void calculateLayoutInfo() {
+                    super.calculateLayoutInfo();
+                    //shift all the tabs, if necessary
+                    if (tabOverlap != 0) {
+                        int tabCount = tabPane.getTabCount();
+                        //left-to-right/right-to-left only affects layout
+                        //when placement is TOP or BOTTOM
+                        boolean ltr = tabPane.getComponentOrientation().isLeftToRight();
+                        for (int i = runCount - 1; i >= 0; i--) {
+                            int start = tabRuns[i];
+                            int next = tabRuns[(i == runCount - 1)? 0 : i + 1];
+                            int end = (next != 0? next - 1: tabCount - 1);
+                            for (int j = start+1; j <= end; j++) {
+                                // xshift and yshift represent the amount &
+                                // direction to shift the tab in their
+                                // respective axis.
+                                int xshift = 0;
+                                int yshift = 0;
+                                // configure xshift and y shift based on tab
+                                // position and ltr/rtl
+                                switch (tabPane.getTabPlacement()) {
+                                    case JTabbedPane.TOP:
+                                    case JTabbedPane.BOTTOM:
+                                        xshift = ltr ? tabOverlap : -tabOverlap;
+                                        break;
+                                    case JTabbedPane.LEFT:
+                                    case JTabbedPane.RIGHT:
+                                        yshift = tabOverlap;
+                                        break;
+                                    default: //do nothing
+                                }
+                                rects[j].x += xshift;
+                                rects[j].y += yshift;
+                                rects[j].width += Math.abs(xshift);
+                                rects[j].height += Math.abs(yshift);
+                            }
+                        }
+                    }
+                }
+            };
+        }
+    }
+
     private class SynthScrollableTabButton extends SynthArrowButton implements
             UIResource {
         public SynthScrollableTabButton(int direction) {
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableHeaderUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableHeaderUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -33,6 +33,7 @@
 import javax.swing.plaf.basic.*;
 import javax.swing.table.*;
 
+import sun.swing.DefaultLookup;
 import sun.swing.plaf.synth.*;
 import sun.swing.table.*;
 
@@ -160,6 +161,7 @@
     private class HeaderRenderer extends DefaultTableCellHeaderRenderer {
         HeaderRenderer() {
             setHorizontalAlignment(JLabel.LEADING);
+            setName("TableHeader.renderer");
         }
 
         @Override
@@ -178,24 +180,40 @@
                 SynthLookAndFeel.resetSelectedUI();
             }
 
+            //stuff a variable into the client property of this renderer indicating the sort order,
+            //so that different rendering can be done for the header based on sorted state.
+            RowSorter rs = table == null ? null : table.getRowSorter();
+            java.util.List<? extends RowSorter.SortKey> sortKeys = rs == null ? null : rs.getSortKeys();
+            if (sortKeys != null && sortKeys.size() > 0 && sortKeys.get(0).getColumn() ==
+                    table.convertColumnIndexToModel(column)) {
+                switch(sortKeys.get(0).getSortOrder()) {
+                    case ASCENDING:
+                        putClientProperty("Table.sortOrder", "ASCENDING");
+                        break;
+                    case DESCENDING:
+                        putClientProperty("Table.sortOrder", "DESCENDING");
+                        break;
+                    case UNSORTED:
+                        putClientProperty("Table.sortOrder", "UNSORTED");
+                        break;
+                    default:
+                        throw new AssertionError("Cannot happen");
+                }
+            } else {
+                putClientProperty("Table.sortOrder", "UNSORTED");
+            }
+
             super.getTableCellRendererComponent(table, value, isSelected,
                                                 hasFocus, row, column);
 
             return this;
         }
 
+        @Override
         public void setBorder(Border border) {
             if (border instanceof SynthBorder) {
                 super.setBorder(border);
             }
         }
-
-        public String getName() {
-            String name = super.getName();
-            if (name == null) {
-                return "TableHeader.renderer";
-            }
-            return name;
-        }
     }
 }
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -27,6 +27,7 @@
 
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Point;
 import java.awt.Rectangle;
@@ -70,6 +71,7 @@
 
     private boolean useTableColors;
     private boolean useUIBorder;
+    private Color alternateColor; //the background color to use for cells for alternate cells
 
     // TableCellRenderer installed on the JTable at the time we're installed,
     // cached so that we can reinstall them at uninstallUI time.
@@ -161,6 +163,21 @@
             if (rowHeight != null) {
                 LookAndFeel.installProperty(table, "rowHeight", rowHeight);
             }
+            boolean showGrid = style.getBoolean(context, "Table.showGrid", true);
+            if (!showGrid) {
+                table.setShowGrid(false);
+            }
+            Dimension d = table.getIntercellSpacing();
+//            if (d == null || d instanceof UIResource) {
+            if (d != null) {
+                d = (Dimension)style.get(context, "Table.intercellSpacing");
+            }
+            alternateColor = (Color)style.get(context, "Table.alternateRowColor");
+            if (d != null) {
+                table.setIntercellSpacing(d);
+            }
+
+
             if (oldStyle != null) {
                 uninstallKeyboardActions();
                 installKeyboardActions();
@@ -617,6 +634,14 @@
         else {
             TableCellRenderer renderer = table.getCellRenderer(row, column);
             Component component = table.prepareRenderer(renderer, row, column);
+            Color b = component.getBackground();
+            if ((b == null || b instanceof UIResource
+                    || component instanceof SynthBooleanTableCellRenderer)
+                    && !table.isCellSelected(row, column)) {
+                if (alternateColor != null && row % 2 == 0) {
+                    component.setBackground(alternateColor);
+                }
+            }
             rendererPane.paintComponent(g, component, table, cellRect.x,
                     cellRect.y, cellRect.width, cellRect.height, true);
         }
@@ -634,16 +659,8 @@
         private boolean isRowSelected;
 
         public SynthBooleanTableCellRenderer() {
-            super();
             setHorizontalAlignment(JLabel.CENTER);
-        }
-
-        public String getName() {
-            String name = super.getName();
-            if (name == null) {
-                return "Table.cellRenderer";
-            }
-            return name;
+            setName("Table.cellRenderer");
         }
 
         public Component getTableCellRendererComponent(
@@ -652,17 +669,24 @@
             isRowSelected = isSelected;
 
             if (isSelected) {
-                setForeground(table.getSelectionForeground());
-                setBackground(table.getSelectionBackground());
+                setForeground(unwrap(table.getSelectionForeground()));
+                setBackground(unwrap(table.getSelectionBackground()));
             } else {
-                setForeground(table.getForeground());
-                setBackground(table.getBackground());
+                setForeground(unwrap(table.getForeground()));
+                setBackground(unwrap(table.getBackground()));
             }
 
             setSelected((value != null && ((Boolean)value).booleanValue()));
             return this;
         }
 
+        private Color unwrap(Color c) {
+            if (c instanceof UIResource) {
+                return new Color(c.getRGB());
+            }
+            return c;
+        }
+
         public boolean isOpaque() {
             return isRowSelected ? true : super.isOpaque();
         }
@@ -732,7 +756,7 @@
             }
             else if (columnClass == Icon.class || columnClass == ImageIcon.class) {
                 setHorizontalAlignment(JLabel.CENTER);
-                setIcon((Icon)value);
+                setIcon((value instanceof Icon) ? (Icon)value : null);
                 setText("");
             }
             else if (columnClass == Date.class) {
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -27,10 +27,11 @@
 
 import javax.swing.*;
 import javax.swing.text.*;
-import javax.swing.event.*;
 import javax.swing.plaf.*;
 import javax.swing.plaf.basic.BasicTextAreaUI;
 import java.awt.*;
+import java.awt.event.FocusListener;
+import java.awt.event.FocusEvent;
 import java.beans.PropertyChangeEvent;
 import sun.swing.plaf.synth.SynthUI;
 
@@ -50,7 +51,7 @@
  *
  * @author  Shannon Hickey
  */
-class SynthTextAreaUI extends BasicTextAreaUI implements SynthUI {
+class SynthTextAreaUI extends BasicTextAreaUI implements SynthUI, FocusListener {
     private SynthStyle style;
 
     /**
@@ -63,16 +64,26 @@
         return new SynthTextAreaUI();
     }
 
+    public void focusGained(FocusEvent e) {
+        getComponent().repaint();
+    }
+
+    public void focusLost(FocusEvent e) {
+        getComponent().repaint();
+    }
+
     protected void installDefaults() {
         // Installs the text cursor on the component
         super.installDefaults();
         updateStyle(getComponent());
+        getComponent().addFocusListener(this);
     }
 
     protected void uninstallDefaults() {
         SynthContext context = getContext(getComponent(), ENABLED);
 
         getComponent().putClientProperty("caretAspectRatio", null);
+        getComponent().removeFocusListener(this);
 
         style.uninstallDefaults(context);
         context.dispose();
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthToggleButtonUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthToggleButtonUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -25,12 +25,10 @@
 
 package javax.swing.plaf.synth;
 
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-import javax.swing.border.*;
-import javax.swing.plaf.*;
-import javax.swing.text.View;
+import java.awt.Graphics;
+import javax.swing.AbstractButton;
+import javax.swing.JComponent;
+import javax.swing.plaf.ComponentUI;
 
 /**
  * Synth's ToggleButtonUI.
@@ -45,15 +43,21 @@
         return new SynthToggleButtonUI();
     }
 
+    @Override
     protected String getPropertyPrefix() {
         return "ToggleButton.";
     }
 
+    @Override
     void paintBackground(SynthContext context, Graphics g, JComponent c) {
-        context.getPainter().paintToggleButtonBackground(context, g, 0, 0,
-                                                c.getWidth(), c.getHeight());
+        if (((AbstractButton) c).isContentAreaFilled()) {
+            int x = 0, y = 0, w = c.getWidth(), h = c.getHeight();
+            SynthPainter painter = context.getPainter();
+            painter.paintToggleButtonBackground(context, g, x, y, w, h);
+        }
     }
 
+    @Override
     public void paintBorder(SynthContext context, Graphics g, int x,
                             int y, int w, int h) {
         context.getPainter().paintToggleButtonBorder(context, g, x, y, w, h);
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthToolBarUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthToolBarUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -25,18 +25,24 @@
 
 package javax.swing.plaf.synth;
 
-import javax.swing.*;
-import javax.swing.event.*;
-import java.awt.*;
-import java.awt.event.*;
-
-import java.beans.*;
-
-import javax.swing.border.*;
-import javax.swing.plaf.*;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Insets;
+import java.awt.LayoutManager;
+import java.awt.Rectangle;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import javax.swing.Box;
+import javax.swing.Icon;
+import javax.swing.JComponent;
+import javax.swing.JSeparator;
+import javax.swing.JToolBar;
+import javax.swing.plaf.ComponentUI;
 import javax.swing.plaf.basic.BasicToolBarUI;
-import sun.swing.plaf.synth.*;
-
+import sun.swing.plaf.synth.SynthIcon;
+import sun.swing.plaf.synth.SynthUI;
 
 /**
  * A Synth L&F implementation of ToolBarUI.  This implementation
@@ -57,23 +63,35 @@
         return new SynthToolBarUI();
     }
 
+    @Override
     protected void installDefaults() {
         toolBar.setLayout(createLayout());
         updateStyle(toolBar);
     }
 
+    @Override
     protected void installListeners() {
         super.installListeners();
         toolBar.addPropertyChangeListener(this);
     }
 
+    @Override
     protected void uninstallListeners() {
         super.uninstallListeners();
         toolBar.removePropertyChangeListener(this);
     }
 
     private void updateStyle(JToolBar c) {
-        SynthContext context = getContext(c, ENABLED);
+        SynthContext context = getContext(
+                c, Region.TOOL_BAR_CONTENT, null, ENABLED);
+        contentStyle = SynthLookAndFeel.updateStyle(context, this);
+        context.dispose();
+
+        context = getContext(c, Region.TOOL_BAR_DRAG_WINDOW, null, ENABLED);
+        dragWindowStyle = SynthLookAndFeel.updateStyle(context, this);
+        context.dispose();
+
+        context = getContext(c, ENABLED);
         SynthStyle oldStyle = style;
 
         style = SynthLookAndFeel.updateStyle(context, this);
@@ -86,16 +104,9 @@
             }
         }
         context.dispose();
-
-        context = getContext(c, Region.TOOL_BAR_CONTENT, ENABLED);
-        contentStyle = SynthLookAndFeel.updateStyle(context, this);
-        context.dispose();
-
-        context = getContext(c, Region.TOOL_BAR_DRAG_WINDOW, ENABLED);
-        dragWindowStyle = SynthLookAndFeel.updateStyle(context, this);
-        context.dispose();
     }
 
+    @Override
     protected void uninstallDefaults() {
         SynthContext context = getContext(toolBar, ENABLED);
 
@@ -105,12 +116,14 @@
 
         handleIcon = null;
 
-        context = getContext(toolBar, Region.TOOL_BAR_CONTENT, ENABLED);
+        context = getContext(toolBar, Region.TOOL_BAR_CONTENT,
+                             contentStyle, ENABLED);
         contentStyle.uninstallDefaults(context);
         context.dispose();
         contentStyle = null;
 
-        context = getContext(toolBar, Region.TOOL_BAR_DRAG_WINDOW, ENABLED);
+        context = getContext(toolBar, Region.TOOL_BAR_DRAG_WINDOW,
+                             dragWindowStyle, ENABLED);
         dragWindowStyle.uninstallDefaults(context);
         context.dispose();
         dragWindowStyle = null;
@@ -118,11 +131,11 @@
         toolBar.setLayout(null);
     }
 
-    protected void installComponents() {
-    }
+    @Override
+    protected void installComponents() {}
 
-    protected void uninstallComponents() {
-    }
+    @Override
+    protected void uninstallComponents() {}
 
     protected LayoutManager createLayout() {
         return new SynthToolBarLayoutManager();
@@ -137,13 +150,15 @@
                     SynthLookAndFeel.getRegion(c), style, state);
     }
 
-    private SynthContext getContext(JComponent c, Region region) {
-        return getContext(c, region, getComponentState(c, region));
+    private SynthContext getContext(JComponent c, Region region, SynthStyle style) {
+        return SynthContext.getContext(SynthContext.class, c, region,
+                                       style, getComponentState(c, region));
     }
 
-    private SynthContext getContext(JComponent c, Region region, int state) {
+    private SynthContext getContext(JComponent c, Region region,
+                                    SynthStyle style, int state) {
         return SynthContext.getContext(SynthContext.class, c, region,
-                                       dragWindowStyle, state);
+                                       style, state);
     }
 
     private Region getRegion(JComponent c) {
@@ -158,6 +173,7 @@
         return SynthLookAndFeel.getComponentState(c);
     }
 
+    @Override
     public void update(Graphics g, JComponent c) {
         SynthContext context = getContext(c);
 
@@ -169,6 +185,7 @@
         context.dispose();
     }
 
+    @Override
     public void paint(Graphics g, JComponent c) {
         SynthContext context = getContext(c);
 
@@ -183,12 +200,15 @@
     }
 
     // Overloaded to do nothing so we can share listeners.
+    @Override
     protected void setBorderToNonRollover(Component c) {}
 
     // Overloaded to do nothing so we can share listeners.
+    @Override
     protected void setBorderToRollover(Component c) {}
 
     // Overloaded to do nothing so we can share listeners.
+    @Override
     protected void setBorderToNormal(Component c) {}
 
     protected void paint(SynthContext context, Graphics g) {
@@ -201,7 +221,8 @@
                     SynthIcon.getIconHeight(handleIcon, context));
         }
 
-        SynthContext subcontext = getContext(toolBar, Region.TOOL_BAR_CONTENT);
+        SynthContext subcontext = getContext(
+                toolBar, Region.TOOL_BAR_CONTENT, contentStyle);
         paintContent(subcontext, g, contentRect);
         subcontext.dispose();
     }
@@ -217,12 +238,14 @@
                              toolBar.getOrientation());
     }
 
+    @Override
     protected void paintDragWindow(Graphics g) {
         int w = dragWindow.getWidth();
         int h = dragWindow.getHeight();
-        SynthContext context = getContext(toolBar,Region.TOOL_BAR_DRAG_WINDOW);
-        SynthLookAndFeel.updateSubregion(context, g, new Rectangle(
-                         0, 0, w, h));
+        SynthContext context = getContext(
+                toolBar, Region.TOOL_BAR_DRAG_WINDOW, dragWindowStyle);
+        SynthLookAndFeel.updateSubregion(
+                context, g, new Rectangle(0, 0, w, h));
         context.getPainter().paintToolBarDragWindowBackground(context,
                                                            g, 0, 0, w, h,
                                                            dragWindow.getOrientation());
@@ -319,6 +342,19 @@
 
             Component c;
             Dimension d;
+
+            // JToolBar by default uses a somewhat modified BoxLayout as
+            // its layout manager. For compatibility reasons, we want to
+            // support Box "glue" as a way to move things around on the
+            // toolbar. "glue" is represented in BoxLayout as a Box.Filler
+            // with a minimum and preferred size of (0,0).
+            // So what we do here is find the number of such glue fillers
+            // and figure out how much space should be allocated to them.
+            int glueCount = 0;
+            for (int i=0; i<tb.getComponentCount(); i++) {
+                if (isGlue(tb.getComponent(i))) glueCount++;
+            }
+
             if (tb.getOrientation() == JToolBar.HORIZONTAL) {
                 int handleWidth = tb.isFloatable() ?
                     SynthIcon.getIconWidth(handleIcon, context) : 0;
@@ -339,6 +375,16 @@
                 int baseY = insets.top;
                 int baseH = tb.getHeight() - insets.top - insets.bottom;
 
+                // we need to get the minimum width for laying things out
+                // so that we can calculate how much empty space needs to
+                // be distributed among the "glue", if any
+                int extraSpacePerGlue = 0;
+                if (glueCount > 0) {
+                    int minWidth = minimumLayoutSize(parent).width;
+                    extraSpacePerGlue = (tb.getWidth() - minWidth) / glueCount;
+                    if (extraSpacePerGlue < 0) extraSpacePerGlue = 0;
+                }
+
                 for (int i = 0; i < tb.getComponentCount(); i++) {
                     c = tb.getComponent(i);
                     d = c.getPreferredSize();
@@ -352,6 +398,9 @@
                         y = baseY + (baseH / 2) - (d.height / 2);
                         h = d.height;
                     }
+                    //if the component is a "glue" component then add to its
+                    //width the extraSpacePerGlue it is due
+                    if (isGlue(c)) d.width += extraSpacePerGlue;
                     c.setBounds(ltr ? x : x - d.width, y, d.width, h);
                     x = ltr ? x + d.width : x - d.width;
                 }
@@ -369,6 +418,16 @@
                 int baseW = tb.getWidth() - insets.left - insets.right;
                 int y = handleHeight + insets.top;
 
+                // we need to get the minimum height for laying things out
+                // so that we can calculate how much empty space needs to
+                // be distributed among the "glue", if any
+                int extraSpacePerGlue = 0;
+                if (glueCount > 0) {
+                    int minHeight = minimumLayoutSize(parent).height;
+                    extraSpacePerGlue = (tb.getHeight() - minHeight) / glueCount;
+                    if (extraSpacePerGlue < 0) extraSpacePerGlue = 0;
+                }
+
                 for (int i = 0; i < tb.getComponentCount(); i++) {
                     c = tb.getComponent(i);
                     d = c.getPreferredSize();
@@ -382,11 +441,25 @@
                         x = baseX + (baseW / 2) - (d.width / 2);
                         w = d.width;
                     }
+                    //if the component is a "glue" component then add to its
+                    //height the extraSpacePerGlue it is due
+                    if (isGlue(c)) d.height += extraSpacePerGlue;
                     c.setBounds(x, y, w, d.height);
                     y += d.height;
                 }
             }
             context.dispose();
         }
+
+        private boolean isGlue(Component c) {
+            if (c instanceof Box.Filler) {
+                Box.Filler f = (Box.Filler)c;
+                Dimension min = f.getMinimumSize();
+                Dimension pref = f.getPreferredSize();
+                return min.width == 0 &&  min.height == 0 &&
+                        pref.width == 0 && pref.height == 0;
+            }
+            return false;
+        }
     }
 }
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -24,20 +24,31 @@
  */
 package javax.swing.plaf.synth;
 
-import javax.swing.*;
-import javax.swing.event.*;
-import java.awt.*;
-import java.awt.event.*;
-import java.awt.datatransfer.*;
-import java.awt.dnd.*;
-import java.beans.*;
-import java.io.*;
-import java.util.*;
-import javax.swing.plaf.*;
-import javax.swing.plaf.basic.*;
-import javax.swing.tree.*;
-import javax.swing.text.Position;
-import sun.swing.plaf.synth.*;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.Insets;
+import java.awt.Rectangle;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Enumeration;
+import javax.swing.DefaultCellEditor;
+import javax.swing.Icon;
+import javax.swing.JComponent;
+import javax.swing.JTextField;
+import javax.swing.JTree;
+import javax.swing.LookAndFeel;
+import javax.swing.plaf.ComponentUI;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.basic.BasicTreeUI;
+import javax.swing.tree.DefaultTreeCellEditor;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.TreeCellEditor;
+import javax.swing.tree.TreeCellRenderer;
+import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreePath;
+import sun.swing.plaf.synth.SynthIcon;
+import sun.swing.plaf.synth.SynthUI;
 
 /**
  * Skinnable TreeUI.
@@ -72,10 +83,12 @@
         expandedIconWrapper = new ExpandedIconWrapper();
     }
 
+    @Override
     public Icon getExpandedIcon() {
         return expandedIconWrapper;
     }
 
+    @Override
     protected void installDefaults() {
         updateStyle(tree);
     }
@@ -135,11 +148,13 @@
         context.dispose();
     }
 
+    @Override
     protected void installListeners() {
         super.installListeners();
         tree.addPropertyChangeListener(this);
     }
 
+    @Override
     public SynthContext getContext(JComponent c) {
         return getContext(c, getComponentState(c));
     }
@@ -172,6 +187,7 @@
         return ENABLED | SELECTED;
     }
 
+    @Override
     protected TreeCellEditor createDefaultCellEditor() {
         TreeCellRenderer renderer = tree.getCellRenderer();
         DefaultTreeCellEditor editor;
@@ -186,10 +202,12 @@
         return editor;
     }
 
+    @Override
     protected TreeCellRenderer createDefaultCellRenderer() {
         return new SynthTreeCellRenderer();
     }
 
+    @Override
     protected void uninstallDefaults() {
         SynthContext context = getContext(tree, ENABLED);
 
@@ -208,11 +226,13 @@
         }
     }
 
+    @Override
     protected void uninstallListeners() {
         super.uninstallListeners();
         tree.removePropertyChangeListener(this);
     }
 
+    @Override
     public void update(Graphics g, JComponent c) {
         SynthContext context = getContext(c);
 
@@ -228,6 +248,7 @@
         context.getPainter().paintTreeBorder(context, g, x, y, w, h);
     }
 
+    @Override
     public void paint(Graphics g, JComponent c) {
         SynthContext context = getContext(c);
 
@@ -481,6 +502,7 @@
         }
     }
 
+    @Override
     protected void paintHorizontalPartOfLeg(Graphics g, Rectangle clipBounds,
                                             Insets insets, Rectangle bounds,
                                             TreePath path, int row,
@@ -494,12 +516,14 @@
         }
     }
 
+    @Override
     protected void paintHorizontalLine(Graphics g, JComponent c, int y,
                                       int left, int right) {
         paintContext.getStyle().getGraphicsUtils(paintContext).drawLine(
             paintContext, "Tree.horizontalLine", g, left, y, right, y, linesStyle);
     }
 
+    @Override
     protected void paintVerticalPartOfLeg(Graphics g,
                                           Rectangle clipBounds, Insets insets,
                                           TreePath path) {
@@ -508,6 +532,7 @@
         }
     }
 
+    @Override
     protected void paintVerticalLine(Graphics g, JComponent c, int x, int top,
                                     int bottom) {
         paintContext.getStyle().getGraphicsUtils(paintContext).drawLine(
@@ -528,12 +553,17 @@
                          && dropLocation.getChildIndex() == -1
                          && path == dropLocation.getPath();
 
+        int state = ENABLED;
         if (selected || isDrop) {
-            cellContext.setComponentState(ENABLED | SELECTED);
+            state |= SELECTED;
         }
-        else {
-            cellContext.setComponentState(ENABLED);
+
+        if (tree.isFocusOwner() && row == leadRow) {
+            state |= FOCUSED;
         }
+
+        cellContext.setComponentState(state);
+
         if (dtcr != null && (dtcr.getBorderSelectionColor() instanceof
                              UIResource)) {
             dtcr.setBorderSelectionColor(style.getColor(
@@ -574,6 +604,28 @@
                : x - (int)Math.floor(iconWidth / 2.0);
     }
 
+    /**
+     * @inheritDoc
+     */
+    @Override
+    protected void paintExpandControl(Graphics g, Rectangle clipBounds,
+            Insets insets, Rectangle bounds, TreePath path, int row,
+            boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf) {
+        //modify the paintContext's state to match the state for the row
+        //this is a hack in that it requires knowledge of the subsequent
+        //method calls. The point is, the context used in drawCentered
+        //should reflect the state of the row, not of the tree.
+        boolean isSelected = tree.getSelectionModel().isPathSelected(path);
+        int state = paintContext.getComponentState();
+        if (isSelected) {
+            paintContext.setComponentState(state | SynthConstants.SELECTED);
+        }
+        super.paintExpandControl(g, clipBounds, insets, bounds, path, row,
+                isExpanded, hasBeenExpanded, isLeaf);
+        paintContext.setComponentState(state);
+    }
+
+    @Override
     protected void drawCentered(Component c, Graphics graphics, Icon icon,
                                 int x, int y) {
         int w = SynthIcon.getIconWidth(icon, paintContext);
@@ -618,6 +670,7 @@
         }
     }
 
+    @Override
     protected int getRowX(int row, int depth) {
         return super.getRowX(row, depth) + padding;
     }
@@ -627,9 +680,13 @@
                                implements UIResource {
         SynthTreeCellRenderer() {
         }
+
+        @Override
         public String getName() {
             return "Tree.cellRenderer";
         }
+
+        @Override
         public Component getTreeCellRendererComponent(JTree tree, Object value,
                                                       boolean sel,
                                                       boolean expanded,
@@ -646,6 +703,8 @@
             return super.getTreeCellRendererComponent(tree, value, sel,
                                                       expanded, leaf, row, hasFocus);
         }
+
+        @Override
         public void paint(Graphics g) {
             paintComponent(g);
             if (hasFocus) {
@@ -692,8 +751,10 @@
             setBorderSelectionColor(null);
         }
 
+        @Override
         protected TreeCellEditor createTreeCellEditor() {
             JTextField tf = new JTextField() {
+                @Override
                 public String getName() {
                     return "Tree.cellEditor";
                 }
@@ -706,7 +767,6 @@
         }
     }
 
-
     //
     // BasicTreeUI directly uses expandIcon outside of the Synth methods.
     // To get the correct context we return an instance of this that fetches
--- a/jdk/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -26,7 +26,6 @@
 package javax.swing.table;
 
 import javax.swing.*;
-import javax.swing.table.TableCellRenderer;
 import javax.swing.border.*;
 
 import java.awt.Component;
@@ -34,6 +33,7 @@
 import java.awt.Rectangle;
 
 import java.io.Serializable;
+import sun.swing.DefaultLookup;
 
 
 /**
@@ -92,8 +92,9 @@
     * <code>getTableCellRendererComponent</code> method and set the border
     * of the returned component directly.
     */
-    protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
     private static final Border SAFE_NO_FOCUS_BORDER = new EmptyBorder(1, 1, 1, 1);
+    private static final Border DEFAULT_NO_FOCUS_BORDER = new EmptyBorder(1, 1, 1, 1);
+    protected static Border noFocusBorder = DEFAULT_NO_FOCUS_BORDER;
 
     // We need a place to store the color the JLabel should be returned
     // to after its foreground and background colors have been set
@@ -109,12 +110,18 @@
         super();
         setOpaque(true);
         setBorder(getNoFocusBorder());
+        setName("Table.cellRenderer");
     }
 
-    private static Border getNoFocusBorder() {
+    private Border getNoFocusBorder() {
+        Border border = DefaultLookup.getBorder(this, ui, "Table.cellNoFocusBorder");
         if (System.getSecurityManager() != null) {
+            if (border != null) return border;
             return SAFE_NO_FOCUS_BORDER;
         } else {
+            if (noFocusBorder == null || noFocusBorder == DEFAULT_NO_FOCUS_BORDER) {
+                return border;
+            }
             return noFocusBorder;
         }
     }
@@ -190,8 +197,8 @@
                 && dropLocation.getRow() == row
                 && dropLocation.getColumn() == column) {
 
-            fg = UIManager.getColor("Table.dropCellForeground");
-            bg = UIManager.getColor("Table.dropCellBackground");
+            fg = DefaultLookup.getColor(this, ui, "Table.dropCellForeground");
+            bg = DefaultLookup.getColor(this, ui, "Table.dropCellBackground");
 
             isSelected = true;
         }
@@ -202,12 +209,18 @@
             super.setBackground(bg == null ? table.getSelectionBackground()
                                            : bg);
         } else {
+            Color background = unselectedBackground != null
+                                    ? unselectedBackground
+                                    : table.getBackground();
+            if (background == null || background instanceof javax.swing.plaf.UIResource) {
+                Color alternateColor = DefaultLookup.getColor(this, ui, "Table.alternateRowColor");
+                if (alternateColor != null && row % 2 == 0)
+                    background = alternateColor;
+            }
             super.setForeground(unselectedForeground != null
                                     ? unselectedForeground
                                     : table.getForeground());
-            super.setBackground(unselectedBackground != null
-                                    ? unselectedBackground
-                                    : table.getBackground());
+            super.setBackground(background);
         }
 
         setFont(table.getFont());
@@ -215,20 +228,20 @@
         if (hasFocus) {
             Border border = null;
             if (isSelected) {
-                border = UIManager.getBorder("Table.focusSelectedCellHighlightBorder");
+                border = DefaultLookup.getBorder(this, ui, "Table.focusSelectedCellHighlightBorder");
             }
             if (border == null) {
-                border = UIManager.getBorder("Table.focusCellHighlightBorder");
+                border = DefaultLookup.getBorder(this, ui, "Table.focusCellHighlightBorder");
             }
             setBorder(border);
 
             if (!isSelected && table.isCellEditable(row, column)) {
                 Color col;
-                col = UIManager.getColor("Table.focusCellForeground");
+                col = DefaultLookup.getColor(this, ui, "Table.focusCellForeground");
                 if (col != null) {
                     super.setForeground(col);
                 }
-                col = UIManager.getColor("Table.focusCellBackground");
+                col = DefaultLookup.getColor(this, ui, "Table.focusCellBackground");
                 if (col != null) {
                     super.setBackground(col);
                 }
@@ -261,6 +274,7 @@
         if (p != null) {
             p = p.getParent();
         }
+
         // p should now be the JTable.
         boolean colorMatch = (back != null) && (p != null) &&
             back.equals(p.getBackground()) &&
--- a/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -25,16 +25,24 @@
 
 package javax.swing.tree;
 
-import javax.swing.*;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Insets;
+import java.awt.Rectangle;
 import javax.swing.plaf.ColorUIResource;
 import javax.swing.plaf.FontUIResource;
 import javax.swing.plaf.UIResource;
 import javax.swing.plaf.basic.BasicGraphicsUtils;
-import java.awt.*;
-import java.awt.event.*;
-import java.beans.*;
-import java.io.*;
-import java.util.*;
+import javax.swing.Icon;
+import javax.swing.JLabel;
+import javax.swing.JTree;
+import javax.swing.LookAndFeel;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+import sun.swing.DefaultLookup;
 
 /**
  * Displays an entry in a tree.
@@ -148,6 +156,7 @@
     protected Color borderSelectionColor;
 
     private boolean isDropCell;
+    private boolean fillBackground = true;
 
     /**
      * Set to true after the constructor has run.
@@ -177,41 +186,48 @@
         // null. As such, if the value is null, this does not reset the
         // value.
         if (!inited || (getLeafIcon() instanceof UIResource)) {
-            setLeafIcon(UIManager.getIcon("Tree.leafIcon"));
+            setLeafIcon(DefaultLookup.getIcon(this, ui, "Tree.leafIcon"));
         }
         if (!inited || (getClosedIcon() instanceof UIResource)) {
-            setClosedIcon(UIManager.getIcon("Tree.closedIcon"));
+            setClosedIcon(DefaultLookup.getIcon(this, ui, "Tree.closedIcon"));
         }
         if (!inited || (getOpenIcon() instanceof UIManager)) {
-            setOpenIcon(UIManager.getIcon("Tree.openIcon"));
+            setOpenIcon(DefaultLookup.getIcon(this, ui, "Tree.openIcon"));
         }
         if (!inited || (getTextSelectionColor() instanceof UIResource)) {
             setTextSelectionColor(
-                    UIManager.getColor("Tree.selectionForeground"));
+                    DefaultLookup.getColor(this, ui, "Tree.selectionForeground"));
         }
         if (!inited || (getTextNonSelectionColor() instanceof UIResource)) {
             setTextNonSelectionColor(
-                UIManager.getColor("Tree.textForeground"));
+                    DefaultLookup.getColor(this, ui, "Tree.textForeground"));
         }
         if (!inited || (getBackgroundSelectionColor() instanceof UIResource)) {
             setBackgroundSelectionColor(
-                UIManager.getColor("Tree.selectionBackground"));
+                    DefaultLookup.getColor(this, ui, "Tree.selectionBackground"));
         }
         if (!inited ||
                 (getBackgroundNonSelectionColor() instanceof UIResource)) {
             setBackgroundNonSelectionColor(
-                    UIManager.getColor("Tree.textBackground"));
+                    DefaultLookup.getColor(this, ui, "Tree.textBackground"));
         }
         if (!inited || (getBorderSelectionColor() instanceof UIResource)) {
             setBorderSelectionColor(
-                UIManager.getColor("Tree.selectionBorderColor"));
+                    DefaultLookup.getColor(this, ui, "Tree.selectionBorderColor"));
         }
-        Object value = UIManager.get("Tree.drawsFocusBorderAroundIcon");
-        drawsFocusBorderAroundIcon = (value != null && ((Boolean)value).
-                                      booleanValue());
-        value = UIManager.get("Tree.drawDashedFocusIndicator");
-        drawDashedFocusIndicator = (value != null && ((Boolean)value).
-                                    booleanValue());
+        drawsFocusBorderAroundIcon = DefaultLookup.getBoolean(
+                this, ui, "Tree.drawsFocusBorderAroundIcon", false);
+        drawDashedFocusIndicator = DefaultLookup.getBoolean(
+                this, ui, "Tree.drawDashedFocusIndicator", false);
+
+        fillBackground = DefaultLookup.getBoolean(this, ui, "Tree.rendererFillBackground", true);
+        Insets margins = DefaultLookup.getInsets(this, ui, "Tree.rendererMargins");
+        if (margins != null) {
+            setBorder(new EmptyBorder(margins.top, margins.left,
+                    margins.bottom, margins.right));
+        }
+
+        setName("Tree.cellRenderer");
     }
 
 
@@ -220,7 +236,7 @@
       * represent non-leaf nodes that are expanded.
       */
     public Icon getDefaultOpenIcon() {
-        return UIManager.getIcon("Tree.openIcon");
+        return DefaultLookup.getIcon(this, ui, "Tree.openIcon");
     }
 
     /**
@@ -228,7 +244,7 @@
       * represent non-leaf nodes that are not expanded.
       */
     public Icon getDefaultClosedIcon() {
-        return UIManager.getIcon("Tree.closedIcon");
+        return DefaultLookup.getIcon(this, ui, "Tree.closedIcon");
     }
 
     /**
@@ -236,7 +252,7 @@
       * represent leaf nodes.
       */
     public Icon getDefaultLeafIcon() {
-        return UIManager.getIcon("Tree.leafIcon");
+        return DefaultLookup.getIcon(this, ui, "Tree.leafIcon");
     }
 
     /**
@@ -425,7 +441,7 @@
                 && dropLocation.getChildIndex() == -1
                 && tree.getRowForPath(dropLocation.getPath()) == row) {
 
-            Color col = UIManager.getColor("Tree.dropCellForeground");
+            Color col = DefaultLookup.getColor(this, ui, "Tree.dropCellForeground");
             if (col != null) {
                 fg = col;
             } else {
@@ -441,26 +457,24 @@
 
         setForeground(fg);
 
-        // There needs to be a way to specify disabled icons.
+        Icon icon = null;
+        if (leaf) {
+            icon = getLeafIcon();
+        } else if (expanded) {
+            icon = getOpenIcon();
+        } else {
+            icon = getClosedIcon();
+        }
+
         if (!tree.isEnabled()) {
             setEnabled(false);
-            if (leaf) {
-                setDisabledIcon(getLeafIcon());
-            } else if (expanded) {
-                setDisabledIcon(getOpenIcon());
-            } else {
-                setDisabledIcon(getClosedIcon());
-            }
-        }
-        else {
+            LookAndFeel laf = UIManager.getLookAndFeel();
+            Icon disabledIcon = laf.getDisabledIcon(tree, icon);
+            if (disabledIcon != null) icon = disabledIcon;
+            setDisabledIcon(icon);
+        } else {
             setEnabled(true);
-            if (leaf) {
-                setIcon(getLeafIcon());
-            } else if (expanded) {
-                setIcon(getOpenIcon());
-            } else {
-                setIcon(getClosedIcon());
-            }
+            setIcon(icon);
         }
         setComponentOrientation(tree.getComponentOrientation());
 
@@ -476,7 +490,7 @@
         Color bColor;
 
         if (isDropCell) {
-            bColor = UIManager.getColor("Tree.dropCellBackground");
+            bColor = DefaultLookup.getColor(this, ui, "Tree.dropCellBackground");
             if (bColor == null) {
                 bColor = getBackgroundSelectionColor();
             }
@@ -490,9 +504,7 @@
         }
 
         int imageOffset = -1;
-        if(bColor != null) {
-            Icon currentI = getIcon();
-
+        if (bColor != null && fillBackground) {
             imageOffset = getLabelStart();
             g.setColor(bColor);
             if(getComponentOrientation().isLeftToRight()) {
--- a/jdk/src/share/classes/sun/applet/AppletPanel.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/applet/AppletPanel.java	Wed Jul 05 16:52:18 2017 +0200
@@ -45,7 +45,6 @@
 import java.util.Collections;
 import java.util.Locale;
 import java.util.WeakHashMap;
-import javax.swing.SwingUtilities;
 import sun.awt.AppContext;
 import sun.awt.EmbeddedFrame;
 import sun.awt.SunToolkit;
@@ -450,7 +449,7 @@
                       try {
                           final AppletPanel p = this;
 
-                          SwingUtilities.invokeAndWait(new Runnable() {
+                          EventQueue.invokeAndWait(new Runnable() {
                                   public void run() {
                                       p.validate();
                                   }
@@ -480,7 +479,7 @@
                           final AppletPanel p = this;
                           final Applet a = applet;
 
-                          SwingUtilities.invokeAndWait(new Runnable() {
+                          EventQueue.invokeAndWait(new Runnable() {
                                   public void run() {
                                       p.validate();
                                       a.setVisible(true);
@@ -514,7 +513,7 @@
                     try {
                         final Applet a = applet;
 
-                        SwingUtilities.invokeAndWait(new Runnable() {
+                        EventQueue.invokeAndWait(new Runnable() {
                                 public void run()
                                 {
                                     a.setVisible(false);
--- a/jdk/src/share/classes/sun/awt/EmbeddedFrame.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/awt/EmbeddedFrame.java	Wed Jul 05 16:52:18 2017 +0200
@@ -588,9 +588,11 @@
 
         public void setOpacity(float opacity) {
         }
+
         public void setOpaque(boolean isOpaque) {
         }
-        public void updateWindow(BufferedImage backBuffer) {
+
+        public void updateWindow(BufferedImage bi) {
         }
         public void repositionSecurityWarning() {
         }
--- a/jdk/src/share/classes/sun/awt/SunToolkit.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/awt/SunToolkit.java	Wed Jul 05 16:52:18 2017 +0200
@@ -2038,37 +2038,34 @@
     /**
      * Returns whether or not a containing top level window for the passed
      * component is
-     * {@link com.sun.awt.AWTUtilities.Translucency#PERPIXEL_TRANSLUCENT PERPIXEL_TRANSLUCENT}.
+     * {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT PERPIXEL_TRANSLUCENT}.
      *
      * @param c a Component which toplevel's to check
      * @return {@code true}  if the passed component is not null and has a
      * containing toplevel window which is opaque (so per-pixel translucency
      * is not enabled), {@code false} otherwise
-     * @see com.sun.awt.AWTUtilities.Translucency#PERPIXEL_TRANSLUCENT
-     * @see com.sun.awt.AWTUtilities#isWindowOpaque(Window)
+     * @see GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
      */
     public static boolean isContainingTopLevelOpaque(Component c) {
         Window w = getContainingWindow(c);
-        // return w != null && (w).isOpaque();
-        return w != null && com.sun.awt.AWTUtilities.isWindowOpaque(w);
+        return w != null && ((Window)w).getBackground() != null &&
+            ((Window)w).getBackground().getAlpha() == 255;
     }
 
     /**
      * Returns whether or not a containing top level window for the passed
      * component is
-     * {@link com.sun.awt.AWTUtilities.Translucency#TRANSLUCENT TRANSLUCENT}.
+     * {@link GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}.
      *
      * @param c a Component which toplevel's to check
      * @return {@code true} if the passed component is not null and has a
      * containing toplevel window which has opacity less than
      * 1.0f (which means that it is translucent), {@code false} otherwise
-     * @see com.sun.awt.AWTUtilities.Translucency#TRANSLUCENT
-     * @see com.sun.awt.AWTUtilities#getWindowOpacity(Window)
+     * @see GraphicsDevice.WindowTranslucency#TRANSLUCENT
      */
     public static boolean isContainingTopLevelTranslucent(Component c) {
         Window w = getContainingWindow(c);
-        // return w != null && (w).getOpacity() < 1.0f;
-        return w != null && com.sun.awt.AWTUtilities.getWindowOpacity((Window)w) < 1.0f;
+        return w != null && ((Window)w).getOpacity() < 1.0f;
     }
 
     /**
--- a/jdk/src/share/classes/sun/awt/datatransfer/DataTransferer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/awt/datatransfer/DataTransferer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -65,10 +65,13 @@
 
 import java.rmi.MarshalledObject;
 
+import java.security.AccessControlContext;
+import java.security.AccessControlException;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
+import java.security.ProtectionDomain;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -111,6 +114,8 @@
 import sun.awt.image.ImageRepresentation;
 import sun.awt.image.ToolkitImage;
 
+import java.io.FilePermission;
+
 
 /**
  * Provides a set of functions to be shared among the DataFlavor class and
@@ -1177,8 +1182,10 @@
             (String.class.equals(flavor.getRepresentationClass()) &&
              isFlavorCharsetTextType(flavor) && isTextFormat(format))) {
 
+            String str = removeSuspectedData(flavor, contents, (String)obj);
+
             return translateTransferableString(
-                (String)obj,
+                str,
                 format);
 
         // Source data is a Reader. Convert to a String and recur. In the
@@ -1286,6 +1293,11 @@
                 throw new IOException("data translation failed");
             }
             final List list = (List)obj;
+
+            final ArrayList fileList = new ArrayList();
+
+            final ProtectionDomain userProtectionDomain = getUserProtectionDomain(contents);
+
             int nFiles = 0;
             for (int i = 0; i < list.size(); i++) {
                 Object o = list.get(i);
@@ -1293,17 +1305,18 @@
                     nFiles++;
                 }
             }
-            final String[] files = new String[nFiles];
 
             try {
                 AccessController.doPrivileged(new PrivilegedExceptionAction() {
                     public Object run() throws IOException {
-                        for (int i = 0, j = 0; i < list.size(); i++) {
-                            Object o = list.get(i);
-                            if (o instanceof File) {
-                                files[j++] = ((File)o).getCanonicalPath();
-                            } else if (o instanceof String) {
-                                files[j++] = (String)o;
+                        for (Object fileObject : list)
+                        {
+                            File file = castToFile(fileObject);
+                            if (null == System.getSecurityManager() ||
+                                !(isFileInWebstartedCache(file) ||
+                                isForbiddenToRead(file, userProtectionDomain)))
+                            {
+                                fileList.add(file.getCanonicalPath());
                             }
                         }
                         return null;
@@ -1313,10 +1326,11 @@
                 throw new IOException(pae.getMessage());
             }
 
-            for (int i = 0; i < files.length; i++) {
-                 byte[] bytes = files[i].getBytes();
-                 if (i != 0) bos.write(0);
-                 bos.write(bytes, 0, bytes.length);
+            for (int i = 0; i < fileList.size(); i++)
+            {
+                byte[] bytes = ((String)fileList.get(i)).getBytes();
+                if (i != 0) bos.write(0);
+                bos.write(bytes, 0, bytes.length);
             }
 
         // Source data is an InputStream. For arbitrary flavors, just grab the
@@ -1366,6 +1380,123 @@
         return ret;
     }
 
+    private String removeSuspectedData(DataFlavor flavor, final Transferable contents, final String str)
+            throws IOException
+    {
+        if (null == System.getSecurityManager()
+            || !flavor.isMimeTypeEqual("text/uri-list"))
+        {
+            return str;
+        }
+
+
+        String ret_val = "";
+        final ProtectionDomain userProtectionDomain = getUserProtectionDomain(contents);
+
+        try {
+            ret_val = (String) AccessController.doPrivileged(new PrivilegedExceptionAction() {
+                    public Object run() {
+
+                        StringBuffer allowedFiles = new StringBuffer(str.length());
+                        String [] uriArray = str.split("(\\s)+");
+
+                        for (String fileName : uriArray)
+                        {
+                            File file = new File(fileName);
+                            if (file.exists() &&
+                                !(isFileInWebstartedCache(file) ||
+                                isForbiddenToRead(file, userProtectionDomain)))
+                            {
+
+                                if (0 != allowedFiles.length())
+                                {
+                                    allowedFiles.append("\\r\\n");
+                                }
+
+                                allowedFiles.append(fileName);
+                            }
+                        }
+
+                        return allowedFiles.toString();
+                    }
+                });
+        } catch (PrivilegedActionException pae) {
+            throw new IOException(pae.getMessage(), pae);
+        }
+
+        return ret_val;
+    }
+
+    private static ProtectionDomain getUserProtectionDomain(Transferable contents) {
+        return contents.getClass().getProtectionDomain();
+    }
+
+    private boolean isForbiddenToRead (File file, ProtectionDomain protectionDomain)
+    {
+        if (null == protectionDomain) {
+            return false;
+        }
+        try {
+            FilePermission filePermission =
+                    new FilePermission(file.getCanonicalPath(), "read, delete");
+            if (protectionDomain.implies(filePermission)) {
+                return false;
+            }
+        } catch (IOException e) {}
+
+        return true;
+    }
+
+    // It is important do not use user's successors
+    // of File class.
+    private File castToFile(Object fileObject) throws IOException {
+        String filePath = null;
+        if (fileObject instanceof File) {
+            filePath = ((File)fileObject).getCanonicalPath();
+        } else if (fileObject instanceof String) {
+           filePath = (String) fileObject;
+        }
+        return new File(filePath);
+    }
+
+    private final static String[] DEPLOYMENT_CACHE_PROPERTIES = {
+        "deployment.system.cachedir",
+        "deployment.user.cachedir",
+        "deployment.javaws.cachedir",
+        "deployment.javapi.cachedir"
+    };
+
+    private final static ArrayList <File> deploymentCacheDirectoryList =
+            new ArrayList<File>();
+
+    private static boolean isFileInWebstartedCache(File f) {
+
+        if (deploymentCacheDirectoryList.isEmpty()) {
+            for (String cacheDirectoryProperty : DEPLOYMENT_CACHE_PROPERTIES) {
+                String cacheDirectoryPath = System.getProperty(cacheDirectoryProperty);
+                if (cacheDirectoryPath != null) {
+                    try {
+                        File cacheDirectory = (new File(cacheDirectoryPath)).getCanonicalFile();
+                        if (cacheDirectory != null) {
+                            deploymentCacheDirectoryList.add(cacheDirectory);
+                        }
+                    } catch (IOException ioe) {}
+                }
+            }
+        }
+
+        for (File deploymentCacheDirectory : deploymentCacheDirectoryList) {
+            for (File dir = f; dir != null; dir = dir.getParentFile()) {
+                if (dir.equals(deploymentCacheDirectory)) {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+
     public Object translateBytes(byte[] bytes, DataFlavor flavor,
                                  long format, Transferable localeTransferable)
         throws IOException
--- a/jdk/src/share/classes/sun/awt/image/GifImageDecoder.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/awt/image/GifImageDecoder.java	Wed Jul 05 16:52:18 2017 +0200
@@ -585,9 +585,16 @@
             System.out.print("Reading a " + width + " by " + height + " " +
                       (interlace ? "" : "non-") + "interlaced image...");
         }
-
+        int initCodeSize = ExtractByte(block, 9);
+        if (initCodeSize >= 12) {
+            if (verbose) {
+                System.out.println("Invalid initial code size: " +
+                                   initCodeSize);
+            }
+            return false;
+        }
         boolean ret = parseImage(x, y, width, height,
-                                 interlace, ExtractByte(block, 9),
+                                 interlace, initCodeSize,
                                  block, rasline, model);
 
         if (!ret) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/sun/font/CreatedFontTracker.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.font;
+
+public class CreatedFontTracker {
+
+    public static final int MAX_FILE_SIZE = 32 * 1024 * 1024;
+    public static final int MAX_TOTAL_BYTES = 10 * MAX_FILE_SIZE;
+
+    static int numBytes;
+    static CreatedFontTracker tracker;
+
+    public static synchronized CreatedFontTracker getTracker() {
+        if (tracker == null) {
+            tracker = new CreatedFontTracker();
+        }
+        return tracker;
+    }
+
+    public synchronized int getNumBytes() {
+        return numBytes;
+    }
+
+    public synchronized void addBytes(int sz) {
+        numBytes += sz;
+    }
+
+    public synchronized void subBytes(int sz) {
+        numBytes -= sz;
+    }
+}
--- a/jdk/src/share/classes/sun/font/FileFont.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/font/FileFont.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -125,9 +125,9 @@
         return true;
     }
 
-    void setFileToRemove(File file) {
+    void setFileToRemove(File file, CreatedFontTracker tracker) {
         Disposer.addObjectRecord(this,
-                                 new CreatedFontFileDisposerRecord(file));
+                         new CreatedFontFileDisposerRecord(file, tracker));
     }
 
     /* This is called when a font scaler is determined to
@@ -246,12 +246,16 @@
         return getScaler().getUnitsPerEm();
     }
 
-    private static class CreatedFontFileDisposerRecord implements DisposerRecord {
+    private static class CreatedFontFileDisposerRecord
+        implements DisposerRecord {
 
         File fontFile = null;
+        CreatedFontTracker tracker;
 
-        private CreatedFontFileDisposerRecord(File file) {
+        private CreatedFontFileDisposerRecord(File file,
+                                              CreatedFontTracker tracker) {
             fontFile = file;
+            this.tracker = tracker;
         }
 
         public void dispose() {
@@ -260,6 +264,9 @@
                       public Object run() {
                           if (fontFile != null) {
                               try {
+                                  if (tracker != null) {
+                                      tracker.subBytes((int)fontFile.length());
+                                  }
                                   /* REMIND: is it possible that the file is
                                    * still open? It will be closed when the
                                    * font2D is disposed but could this code
--- a/jdk/src/share/classes/sun/font/FontManager.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/font/FontManager.java	Wed Jul 05 16:52:18 2017 +0200
@@ -2357,19 +2357,21 @@
     static Vector<File> tmpFontFiles = null;
 
     public static Font2D createFont2D(File fontFile, int fontFormat,
-                                      boolean isCopy)
+                                      boolean isCopy,
+                                      CreatedFontTracker tracker)
         throws FontFormatException {
 
         String fontFilePath = fontFile.getPath();
         FileFont font2D = null;
         final File fFile = fontFile;
+        final CreatedFontTracker _tracker = tracker;
         try {
             switch (fontFormat) {
             case Font.TRUETYPE_FONT:
                 font2D = new TrueTypeFont(fontFilePath, null, 0, true);
                 break;
             case Font.TYPE1_FONT:
-                font2D = new Type1Font(fontFilePath, null);
+                font2D = new Type1Font(fontFilePath, null, isCopy);
                 break;
             default:
                 throw new FontFormatException("Unrecognised Font Format");
@@ -2379,6 +2381,9 @@
                 java.security.AccessController.doPrivileged(
                      new java.security.PrivilegedAction() {
                           public Object run() {
+                              if (_tracker != null) {
+                                  _tracker.subBytes((int)fFile.length());
+                              }
                               fFile.delete();
                               return null;
                           }
@@ -2387,7 +2392,7 @@
             throw(e);
         }
         if (isCopy) {
-            font2D.setFileToRemove(fontFile);
+            font2D.setFileToRemove(fontFile, tracker);
             synchronized (FontManager.class) {
 
                 if (tmpFontFiles == null) {
--- a/jdk/src/share/classes/sun/font/TrueTypeFont.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/font/TrueTypeFont.java	Wed Jul 05 16:52:18 2017 +0200
@@ -175,8 +175,17 @@
         super(platname, nativeNames);
         useJavaRasterizer = javaRasterizer;
         fontRank = Font2D.TTF_RANK;
-        verify();
-        init(fIndex);
+        try {
+            verify();
+            init(fIndex);
+        } catch (Throwable t) {
+            close();
+            if (t instanceof FontFormatException) {
+                throw (FontFormatException)t;
+            } else {
+                throw new FontFormatException("Unexpected runtime exception.");
+            }
+        }
         Disposer.addObjectRecord(this, disposerRecord);
     }
 
--- a/jdk/src/share/classes/sun/font/Type1Font.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/font/Type1Font.java	Wed Jul 05 16:52:18 2017 +0200
@@ -39,6 +39,7 @@
 import java.nio.channels.ClosedChannelException;
 import java.nio.channels.FileChannel;
 import sun.java2d.Disposer;
+import sun.java2d.DisposerRecord;
 import java.util.HashSet;
 import java.util.HashMap;
 import java.awt.Font;
@@ -76,6 +77,27 @@
  */
 public class Type1Font extends FileFont {
 
+     private static class T1DisposerRecord  implements DisposerRecord {
+        String fileName = null;
+
+        T1DisposerRecord(String name) {
+            fileName = name;
+        }
+
+        public synchronized void dispose() {
+            java.security.AccessController.doPrivileged(
+                new java.security.PrivilegedAction() {
+                    public Object run() {
+
+                        if (fileName != null) {
+                            (new java.io.File(fileName)).delete();
+                        }
+                        return null;
+                    }
+             });
+        }
+    }
+
     WeakReference bufferRef = new WeakReference(null);
 
     private String psName = null;
@@ -125,18 +147,42 @@
 
 
     /**
+     * Constructs a Type1 Font.
+     * @param platname - Platform identifier of the font. Typically file name.
+     * @param nativeNames - Native names - typically XLFDs on Unix.
+     */
+    public Type1Font(String platname, Object nativeNames)
+        throws FontFormatException {
+
+        this(platname, nativeNames, false);
+    }
+
+    /**
      * - does basic verification of the file
      * - reads the names (full, family).
      * - determines the style of the font.
      * @throws FontFormatException - if the font can't be opened
      * or fails verification,  or there's no usable cmap
      */
-    public Type1Font(String platname, Object nativeNames)
+    public Type1Font(String platname, Object nativeNames, boolean createdCopy)
         throws FontFormatException {
         super(platname, nativeNames);
         fontRank = Font2D.TYPE1_RANK;
         checkedNatives = true;
-        verify();
+        try {
+            verify();
+        } catch (Throwable t) {
+            if (createdCopy) {
+                T1DisposerRecord ref = new T1DisposerRecord(platname);
+                Disposer.addObjectRecord(bufferRef, ref);
+                bufferRef = null;
+            }
+            if (t instanceof FontFormatException) {
+                throw (FontFormatException)t;
+            } else {
+                throw new FontFormatException("Unexpected runtime exception.");
+            }
+        }
     }
 
     private synchronized ByteBuffer getBuffer() throws FontFormatException {
--- a/jdk/src/share/classes/sun/io/ByteToCharBig5.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/io/ByteToCharBig5.java	Wed Jul 05 16:52:18 2017 +0200
@@ -26,6 +26,8 @@
 
 package sun.io;
 
+import sun.nio.cs.ext.Big5;
+
 /**
  * Tables and data to convert Big5 to Unicode
  *
@@ -34,2179 +36,16 @@
 
 public class ByteToCharBig5 extends ByteToCharDoubleByte {
 
+    private final static Big5 nioCoder = new Big5();
+
     public String getCharacterEncoding() {
         return "Big5";
     }
 
     public ByteToCharBig5() {
-        super.index1 = index1;
-        super.index2 = index2;
+        super.index1 = nioCoder.getDecoderIndex1();
+        super.index2 = nioCoder.getDecoderIndex2();
         start = 0x40;
         end = 0xFE;
     }
-
-    private final static String innerIndex0=
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u3000"+
-        "\uFF0C\u3001\u3002\uFF0E\u2022\uFF1B\uFF1A\uFF1F"+
-        "\uFF01\uFE30\u2026\u2025\uFE50\uFF64\uFE52\u00B7"+
-        "\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014"+
-        "\uFE33\uFF3F\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36"+
-        "\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A"+
-        "\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E"+
-        "\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42"+
-        "\u300E\u300F\uFE43\uFE44\uFE59\uFE5A\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D"+
-        "\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B"+
-        "\u00A7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606"+
-        "\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3"+
-        "\u2105\u203E\uFFFD\uFF3F\uFFFD\uFE49\uFE4A\uFE4D"+
-        "\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D"+
-        "\u00D7\u00F7\u00B1\u221A\uFF1C\uFF1E\uFF1D\u2266"+
-        "\u2267\u2260\u221E\u2252\u2261\uFE62\uFE63\uFE64"+
-        "\uFE65\uFE66\u223C\u2229\u222A\u22A5\u2220\u221F"+
-        "\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640"+
-        "\u2642\u2641\u2609\u2191\u2193\u2190\u2192\u2196"+
-        "\u2197\u2199\u2198\u2225\u2223\u2571\u2572\uFF0F"+
-        "\uFF3C\uFF04\u00A5\u3012\u00A2\u00A3\uFF05\uFF20"+
-        "\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D"+
-        "\u339E\u33CE\u33A1\u338E\u338F\u33C4\u00B0\u5159"+
-        "\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE"+
-        "\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588"+
-        "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C"+
-        "\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595"+
-        "\u250C\u2510\u2514\u2518\u256D\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u256E"+
-        "\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3"+
-        "\u25E5\u25E4\u2571\u2572\u2573\uFF10\uFF11\uFF12"+
-        "\uFF13\uFF14\uFF15\uFF16\uFF17\uFF18\uFF19\u2160"+
-        "\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168"+
-        "\u2169\u3021\u3022\u3023\u3024\u3025\u3026\u3027"+
-        "\u3028\u3029\u5341\u5344\u5345\uFF21\uFF22\uFF23"+
-        "\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A\uFF2B"+
-        "\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32\uFF33"+
-        "\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A\uFF41"+
-        "\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49"+
-        "\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F\uFF50\uFF51"+
-        "\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59"+
-        "\uFF5A\u0391\u0392\u0393\u0394\u0395\u0396\u0397"+
-        "\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F"+
-        "\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8"+
-        "\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7"+
-        "\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF"+
-        "\u03C0\u03C1\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8"+
-        "\u03C9\u3105\u3106\u3107\u3108\u3109\u310A\u310B"+
-        "\u310C\u310D\u310E\u310F\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u3110\u3111"+
-        "\u3112\u3113\u3114\u3115\u3116\u3117\u3118\u3119"+
-        "\u311A\u311B\u311C\u311D\u311E\u311F\u3120\u3121"+
-        "\u3122\u3123\u3124\u3125\u3126\u3127\u3128\u3129"+
-        "\u02D9\u02C9\u02CA\u02C7\u02CB\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u4E00\u4E59\u4E01\u4E03"+
-        "\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B"+
-        "\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8"+
-        "\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45"+
-        "\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA"+
-        "\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973"+
-        "\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71"+
-        "\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE"+
-        "\u5F0B\u5F13\u624D\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u4E11\u4E10\u4E0D"+
-        "\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95"+
-        "\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7"+
-        "\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D"+
-        "\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB"+
-        "\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E"+
-        "\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A"+
-        "\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B"+
-        "\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E"+
-        "\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708"+
-        "\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F"+
-        "\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B"+
-        "\u72AC\u738B\u4E19\u4E16\u4E15\u4E14\u4E18\u4E3B"+
-        "\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6"+
-        "\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189"+
-        "\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F"+
-        "\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361"+
-        "\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC"+
-        "\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6"+
-        "\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB"+
-        "\u56DA\u5916\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u592E\u5931\u5974\u5976"+
-        "\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03"+
-        "\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253"+
-        "\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A"+
-        "\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41"+
-        "\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518"+
-        "\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B"+
-        "\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A"+
-        "\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69"+
-        "\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A"+
-        "\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB"+
-        "\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146"+
-        "\u5148\u5168\u5171\u518D\u51B0\u5217\u5211\u5212"+
-        "\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371"+
-        "\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404"+
-        "\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0"+
-        "\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F"+
-        "\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983"+
-        "\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88"+
-        "\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76"+
-        "\u5E74\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u5F0F\u5F1B\u5FD9\u5FD6\u620E"+
-        "\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9"+
-        "\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734"+
-        "\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57"+
-        "\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D"+
-        "\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8"+
-        "\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033"+
-        "\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC"+
-        "\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840"+
-        "\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F"+
-        "\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50"+
-        "\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46"+
-        "\u4F63\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D"+
-        "\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7"+
-        "\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA"+
-        "\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E"+
-        "\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442"+
-        "\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435"+
-        "\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C"+
-        "\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u5747\u574E\u573E\u5750\u574F\u573B"+
-        "\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999"+
-        "\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C"+
-        "\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41"+
-        "\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C"+
-        "\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62"+
-        "\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB"+
-        "\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280"+
-        "\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273"+
-        "\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286"+
-        "\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F"+
-        "\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"+
-        "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81"+
-        "\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70"+
-        "\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E"+
-        "\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076"+
-        "\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2"+
-        "\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3"+
-        "\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093"+
-        "\u809D\u8098\u809B\u809A\u80B2\u826F\u8292\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46"+
-        "\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B"+
-        "\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2"+
-        "\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E"+
-        "\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B"+
-        "\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F"+
-        "\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88"+
-        "\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154"+
-        "\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD"+
-        "\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241"+
-        "\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377"+
-        "\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475\u5496"+
-        "\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486"+
-        "\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468"+
-        "\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769"+
-        "\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948"+
-        "\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1"+
-        "\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3"+
-        "\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98"+
-        "\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3"+
-        "\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A"+
-        "\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29"+
-        "\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5"+
-        "\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015"+
-        "\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F"+
-        "\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2"+
-        "\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8"+
-        "\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5"+
-        "\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE"+
-        "\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606"+
-        "\u6602\u660E\u6600\u660F\u6615\u660A\u6607\u670D"+
-        "\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777"+
-        "\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E"+
-        "\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23"+
-        "\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3"+
-        "\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2"+
-        "\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE"+
-        "\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA"+
-        "\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u7095"+
-        "\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248"+
-        "\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9"+
-        "\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A"+
-        "\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940"+
-        "\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54"+
-        "\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1"+
-        "\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D"+
-        "\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1"+
-        "\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7"+
-        "\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1"+
-        "\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580"+
-        "\u961C\u9640\u963F\u963B\u9644\u9642\u96B9\u96E8"+
-        "\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF"+
-        "\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8"+
-        "\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA"+
-        "\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E"+
-        "\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9"+
-        "\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC"+
-        "\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7"+
-        "\u54C2\u54BD\u54AA\u54C1\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u54C4\u54C8"+
-        "\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF"+
-        "\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793"+
-        "\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF"+
-        "\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01"+
-        "\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01"+
-        "\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D"+
-        "\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D"+
-        "\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89"+
-        "\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070"+
-        "\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064"+
-        "\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE"+
-        "\u62FD\u6307\u62F1\u62F7\u62EF\u62EC\u62FE\u62F4"+
-        "\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625"+
-        "\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624"+
-        "\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6"+
-        "\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA"+
-        "\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2"+
-        "\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7"+
-        "\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C"+
-        "\u6D31\u6D1E\u6D17\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6D3B\u6D3D\u6D3E"+
-        "\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E"+
-        "\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF"+
-        "\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274"+
-        "\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD"+
-        "\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B"+
-        "\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687"+
-        "\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8"+
-        "\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814"+
-        "\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA"+
-        "\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D"+
-        "\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38"+
-        "\u7F8E\u7FBF\u8004\u8010\u800D\u8011\u8036\u80D6"+
-        "\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE"+
-        "\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305"+
-        "\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2"+
-        "\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3"+
-        "\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D"+
-        "\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0"+
-        "\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2"+
-        "\u8FEA\u8FE5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u8FED\u8FEB\u8FE4\u8FE8"+
-        "\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582"+
-        "\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED"+
-        "\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58"+
-        "\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8"+
-        "\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011"+
-        "\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019"+
-        "\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009"+
-        "\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB"+
-        "\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F"+
-        "\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5"+
-        "\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509"+
-        "\u54EE\u54EA\u54E6\u5527\u5507\u54FD\u550F\u5703"+
-        "\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957"+
-        "\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13"+
-        "\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B"+
-        "\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9"+
-        "\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB"+
-        "\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D"+
-        "\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90"+
-        "\u6059\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u6063\u6065\u6050\u6055\u606D"+
-        "\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C"+
-        "\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E"+
-        "\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350"+
-        "\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549"+
-        "\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652"+
-        "\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821"+
-        "\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829"+
-        "\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840"+
-        "\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A"+
-        "\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0"+
-        "\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59"+
-        "\u6D93\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C"+
-        "\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4"+
-        "\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD"+
-        "\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA"+
-        "\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5"+
-        "\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8"+
-        "\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720"+
-        "\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u7825\u782D\u7820\u781F\u7832\u7955"+
-        "\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A"+
-        "\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84"+
-        "\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B"+
-        "\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C"+
-        "\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1"+
-        "\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1"+
-        "\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3"+
-        "\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200"+
-        "\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352"+
-        "\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F"+
-        "\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343";
-
-    private final static String innerIndex1=
-        "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3"+
-        "\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18"+
-        "\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16"+
-        "\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77"+
-        "\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7"+
-        "\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095"+
-        "\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD"+
-        "\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2"+
-        "\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A"+
-        "\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065"+
-        "\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F"+
-        "\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2"+
-        "\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340"+
-        "\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E"+
-        "\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F"+
-        "\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541"+
-        "\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806"+
-        "\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920"+
-        "\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40\u5A3C"+
-        "\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4"+
-        "\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C"+
-        "\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11"+
-        "\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38"+
-        "\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE"+
-        "\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99"+
-        "\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089"+
-        "\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6"+
-        "\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0"+
-        "\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398"+
-        "\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8"+
-        "\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380"+
-        "\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559"+
-        "\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B"+
-        "\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664"+
-        "\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF"+
-        "\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897"+
-        "\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D"+
-        "\u68A8\u689F\u68A1\u6882\u6B32\u6BBA\u6BEB\u6BEC"+
-        "\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC"+
-        "\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1"+
-        "\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2"+
-        "\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE"+
-        "\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9"+
-        "\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C"+
-        "\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403"+
-        "\u7406\u73FE\u740D\u74E0\u74F6\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u74F7"+
-        "\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4"+
-        "\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB"+
-        "\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843"+
-        "\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20"+
-        "\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92"+
-        "\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C"+
-        "\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31"+
-        "\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A"+
-        "\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124"+
-        "\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398"+
-        "\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393"+
-        "\u8389\u83A0\u8377\u837B\u837C\u8386\u83A7\u8655"+
-        "\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB"+
-        "\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892"+
-        "\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23"+
-        "\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A"+
-        "\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66"+
-        "\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017"+
-        "\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F"+
-        "\u9022\u9016\u901B\u9014\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u90E8\u90ED"+
-        "\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED"+
-        "\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674"+
-        "\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF"+
-        "\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB"+
-        "\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098"+
-        "\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE"+
-        "\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C"+
-        "\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587"+
-        "\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A"+
-        "\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D"+
-        "\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D"+
-        "\u5820\u58F9\u58FA\u5960\u5A77\u5A9A\u5A7F\u5A92"+
-        "\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0"+
-        "\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD"+
-        "\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2"+
-        "\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1"+
-        "\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0"+
-        "\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100"+
-        "\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9"+
-        "\u63C9\u63C6\u63CD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u63D2\u63E3\u63D0"+
-        "\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB"+
-        "\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591"+
-        "\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691"+
-        "\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA"+
-        "\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE"+
-        "\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D"+
-        "\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A"+
-        "\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C"+
-        "\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20"+
-        "\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E"+
-        "\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43"+
-        "\u6E1D\u6E3E\u6ECB\u6E89\u6E19\u6E4E\u6E63\u6E44"+
-        "\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121"+
-        "\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325"+
-        "\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435"+
-        "\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526"+
-        "\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE"+
-        "\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F"+
-        "\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05"+
-        "\u7A00\u7A98\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u7A97\u7A96\u7AE5\u7AE3"+
-        "\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B"+
-        "\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55"+
-        "\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73"+
-        "\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154"+
-        "\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153"+
-        "\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0"+
-        "\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A"+
-        "\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E"+
-        "\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9"+
-        "\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1"+
-        "\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E"+
-        "\u8A3C\u8A41\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A"+
-        "\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD"+
-        "\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8"+
-        "\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1"+
-        "\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E"+
-        "\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109"+
-        "\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209"+
-        "\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B"+
-        "\u9591\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u9593\u9592\u958E\u968A\u968E"+
-        "\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1"+
-        "\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805"+
-        "\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED"+
-        "\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5"+
-        "\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF"+
-        "\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2"+
-        "\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC"+
-        "\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5"+
-        "\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858"+
-        "\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862"+
-        "\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD"+
-        "\u5ABC\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79"+
-        "\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F"+
-        "\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E"+
-        "\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106"+
-        "\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D"+
-        "\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416"+
-        "\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687"+
-        "\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u695A\u6977\u6960\u6954\u6975\u6930"+
-        "\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986"+
-        "\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3"+
-        "\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D"+
-        "\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1"+
-        "\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E"+
-        "\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166"+
-        "\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252"+
-        "\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F"+
-        "\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578"+
-        "\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4"+
-        "\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"+
-        "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE"+
-        "\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891"+
-        "\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C"+
-        "\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77"+
-        "\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93"+
-        "\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A"+
-        "\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084"+
-        "\u8171\u8170\u8178\u8165\u816E\u8173\u816B\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u8179\u817A\u8166\u8205\u8247\u8482\u8477"+
-        "\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B"+
-        "\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E"+
-        "\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE"+
-        "\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4"+
-        "\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2"+
-        "\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70"+
-        "\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62"+
-        "\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A"+
-        "\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2"+
-        "\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA"+
-        "\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A\u8F9F"+
-        "\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055"+
-        "\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041"+
-        "\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257"+
-        "\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251"+
-        "\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598"+
-        "\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7"+
-        "\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811"+
-        "\u9813\u980A\u9812\u980C\u98FC\u98F4\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82"+
-        "\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED"+
-        "\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162"+
-        "\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B"+
-        "\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7"+
-        "\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875"+
-        "\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD"+
-        "\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9"+
-        "\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1"+
-        "\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62"+
-        "\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3"+
-        "\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147\u613F\u614B"+
-        "\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A"+
-        "\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451"+
-        "\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6"+
-        "\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE"+
-        "\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0"+
-        "\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C"+
-        "\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E"+
-        "\u6F20\u6F2C\u6F0F\u6F02\u6F22\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6EFF"+
-        "\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B"+
-        "\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7"+
-        "\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292"+
-        "\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D"+
-        "\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1"+
-        "\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7"+
-        "\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31"+
-        "\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75"+
-        "\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9"+
-        "\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0"+
-        "\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5"+
-        "\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC\u7F70\u7FE0\u7FE1"+
-        "\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188"+
-        "\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E"+
-        "\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2"+
-        "\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1"+
-        "\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718"+
-        "\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8"+
-        "\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3"+
-        "\u8A8D\u8AA1\u8A93\u8AA4\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u8AAA\u8AA5"+
-        "\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C"+
-        "\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14"+
-        "\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063"+
-        "\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E"+
-        "\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298"+
-        "\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1"+
-        "\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B"+
-        "\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818"+
-        "\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF"+
-        "\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC"+
-        "\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102"+
-        "\u5108\u5109\u5105\u51DC\u5287\u5288\u5289\u528D"+
-        "\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F"+
-        "\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F"+
-        "\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9"+
-        "\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08"+
-        "\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94"+
-        "\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3"+
-        "\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E"+
-        "\u615D\u6155\u6182\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u617C\u6170\u616B"+
-        "\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4"+
-        "\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2"+
-        "\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492"+
-        "\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3"+
-        "\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23"+
-        "\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13"+
-        "\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E"+
-        "\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66"+
-        "\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A"+
-        "\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F"+
-        "\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357"+
-        "\u7469\u748B\u7483\u747E\u7480\u757F\u7620\u7629"+
-        "\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4"+
-        "\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA"+
-        "\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40"+
-        "\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4"+
-        "\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0"+
-        "\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3"+
-        "\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75"+
-        "\u7F77\u7FAF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u7FE9\u8026\u819B\u819C"+
-        "\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE"+
-        "\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC"+
-        "\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766"+
-        "\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D"+
-        "\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2"+
-        "\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2"+
-        "\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C"+
-        "\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED"+
-        "\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3"+
-        "\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21"+
-        "\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A"+
-        "\u8F1C\u8F1E\u8F25\u9069\u906E\u9068\u906D\u9077"+
-        "\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183"+
-        "\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3"+
-        "\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704"+
-        "\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821"+
-        "\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD"+
-        "\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7"+
-        "\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06"+
-        "\u9D09\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u9D03\u9EA9\u9EBE\u9ECE\u58A8"+
-        "\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA"+
-        "\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669"+
-        "\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C"+
-        "\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D"+
-        "\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9"+
-        "\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5"+
-        "\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2"+
-        "\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9"+
-        "\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59"+
-        "\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47"+
-        "\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1"+
-        "\u6FA1\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9"+
-        "\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2"+
-        "\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4"+
-        "\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C"+
-        "\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E"+
-        "\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D"+
-        "\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9"+
-        "\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D"+
-        "\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028"+
-        "\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A"+
-        "\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A"+
-        "\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A"+
-        "\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA"+
-        "\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01"+
-        "\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D"+
-        "\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35"+
-        "\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074"+
-        "\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336"+
-        "\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A";
-
-    private final static String innerIndex2=
-        "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7"+
-        "\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713"+
-        "\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B"+
-        "\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B"+
-        "\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB"+
-        "\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12"+
-        "\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121"+
-        "\u5132\u52F5\u568E\u5680\u5690\u5685\u5687\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A"+
-        "\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8"+
-        "\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB"+
-        "\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6"+
-        "\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6"+
-        "\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E"+
-        "\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8"+
-        "\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80"+
-        "\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF"+
-        "\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235"+
-        "\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646"+
-        "\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC\u77A7"+
-        "\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7"+
-        "\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C"+
-        "\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD"+
-        "\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D"+
-        "\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F"+
-        "\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F"+
-        "\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD"+
-        "\u81C9\u81BE\u81E8\u8209\u8271\u85AA\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587"+
-        "\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6"+
-        "\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944"+
-        "\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A"+
-        "\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA"+
-        "\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48"+
-        "\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D"+
-        "\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C"+
-        "\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318"+
-        "\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB"+
-        "\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E"+
-        "\u97A0\u97D3\u9846\u98B6\u9935\u9A01\u99FF\u9BAE"+
-        "\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE"+
-        "\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE"+
-        "\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2"+
-        "\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726"+
-        "\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF"+
-        "\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA"+
-        "\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375"+
-        "\u74A7\u74BF\u7515\u7656\u7658\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u7652"+
-        "\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62"+
-        "\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23"+
-        "\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52"+
-        "\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF"+
-        "\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA"+
-        "\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2"+
-        "\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59"+
-        "\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D"+
-        "\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A"+
-        "\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A"+
-        "\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9"+
-        "\u96DB\u96DE\u9724\u97A3\u97A6\u97AD\u97F9\u984D"+
-        "\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D"+
-        "\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E"+
-        "\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D"+
-        "\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF"+
-        "\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5"+
-        "\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3"+
-        "\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206"+
-        "\u720D\u7258\u72A2\u7378\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u737A\u74BD"+
-        "\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919"+
-        "\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37"+
-        "\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73"+
-        "\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5"+
-        "\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE"+
-        "\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49"+
-        "\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C"+
-        "\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E"+
-        "\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF"+
-        "\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8"+
-        "\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727"+
-        "\u9761\u97DC\u97FB\u985E\u9858\u985B\u98BC\u9945"+
-        "\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB"+
-        "\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93"+
-        "\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4"+
-        "\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518"+
-        "\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032"+
-        "\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C"+
-        "\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0"+
-        "\u8FAE\u7E7D\u7E7C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u7E82\u7F4C\u8000"+
-        "\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B"+
-        "\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70"+
-        "\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89"+
-        "\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD"+
-        "\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30"+
-        "\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F"+
-        "\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2"+
-        "\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595"+
-        "\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7"+
-        "\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC"+
-        "\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A"+
-        "\u896C\u89BD\u8B74\u8B77\u8B7D\u8D13\u8E8A\u8E8D"+
-        "\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A"+
-        "\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF"+
-        "\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF"+
-        "\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8"+
-        "\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B"+
-        "\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF"+
-        "\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A"+
-        "\u766E\u766C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u79B3\u7C60\u7C5F\u807E"+
-        "\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17"+
-        "\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D"+
-        "\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2"+
-        "\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34"+
-        "\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B"+
-        "\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65"+
-        "\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A"+
-        "\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C"+
-        "\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57"+
-        "\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E"+
-        "\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862"+
-        "\u8B93\u8B92\u8B96\u8277\u8D1B\u91C0\u946A\u9742"+
-        "\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F"+
-        "\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3"+
-        "\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1"+
-        "\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064"+
-        "\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C"+
-        "\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7"+
-        "\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E"+
-        "\u7C72\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u30FE\u309D\u309E\u3005\u3041"+
-        "\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049"+
-        "\u304A\u304B\u304C\u304D\u304E\u304F\u3050\u3051"+
-        "\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059"+
-        "\u305A\u305B\u305C\u305D\u305E\u305F\u3060\u3061"+
-        "\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069"+
-        "\u306A\u306B\u306C\u306D\u306E\u306F\u3070\u3071"+
-        "\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079"+
-        "\u307A\u307B\u307C\u307D\u307E\u307F\u3080\u3081"+
-        "\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089"+
-        "\u308A\u308B\u308C\u308D\u308E\u308F\u3090\u3091"+
-        "\u3092\u3093\u30A1\u30A2\u30A3\u30A4\u30A5\u30A6"+
-        "\u30A7\u30A8\u30A9\u30AA\u30AB\u30AC\u30AD\u30AE"+
-        "\u30AF\u30B0\u30B1\u30B2\u30B3\u30B4\u30B5\u30B6"+
-        "\u30B7\u30B8\u30B9\u30BA\u30BB\u30BC\u30BD\u30BE"+
-        "\u30BF\u30C0\u30C1\u30C2\u30C3\u30C4\u30C5\u30C6"+
-        "\u30C7\u30C8\u30C9\u30CA\u30CB\u30CC\u30CD\u30CE"+
-        "\u30CF\u30D0\u30D1\u30D2\u30D3\u30D4\u30D5\u30D6"+
-        "\u30D7\u30D8\u30D9\u30DA\u30DB\u30DC\u30DD\u30DE"+
-        "\u30DF\u30E0\u30E1\u30E2\u30E3\u30E4\u30E5\u30E6"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u30E7\u30E8\u30E9\u30EA\u30EB\u30EC"+
-        "\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3\u30F4"+
-        "\u30F5\u30F6\u0414\u0415\u0401\u0416\u0417\u0418"+
-        "\u0419\u041A\u041B\u041C\u0423\u0424\u0425\u0426"+
-        "\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E"+
-        "\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0451"+
-        "\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D"+
-        "\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445"+
-        "\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D"+
-        "\u044E\u044F\u2460\u2461\u2462\u2463\u2464\u2465"+
-        "\u2466\u2467\u2468\u2469\u2474\u2475\u2476\u2477"+
-        "\u2478\u2479\u247A\u247B\u247C\u247D\uFFFD\uFFFD"+
-        "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47"+
-        "\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E"+
-        "\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C"+
-        "\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3"+
-        "\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9"+
-        "\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723"+
-        "\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73"+
-        "\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A"+
-        "\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14"+
-        "\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22"+
-        "\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210"+
-        "\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF"+
-        "\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B"+
-        "\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A"+
-        "\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74"+
-        "\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266"+
-        "\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E"+
-        "\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18"+
-        "\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B\u6C4C"+
-        "\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75"+
-        "\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E"+
-        "\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620"+
-        "\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E"+
-        "\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F"+
-        "\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE"+
-        "\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A"+
-        "\u5454\u5445\u5419\u541C\u5425\u5418\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7"+
-        "\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906"+
-        "\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990"+
-        "\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D"+
-        "\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93"+
-        "\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88"+
-        "\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0"+
-        "\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA"+
-        "\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C"+
-        "\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270"+
-        "\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0"+
-        "\u65F4\u65F3\u65F2\u65F5\u6745\u6747\u6759\u6755"+
-        "\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19"+
-        "\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71"+
-        "\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66"+
-        "\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF"+
-        "\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397"+
-        "\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681"+
-        "\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290"+
-        "\u828F\u8285\u828E\u8291\u8293\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u828A"+
-        "\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5"+
-        "\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33"+
-        "\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74"+
-        "\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79"+
-        "\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82"+
-        "\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232"+
-        "\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392"+
-        "\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B"+
-        "\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F"+
-        "\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9"+
-        "\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780"+
-        "\u5775\u577B\u5773\u5774\u5762\u5768\u577D\u590C"+
-        "\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1"+
-        "\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8"+
-        "\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47"+
-        "\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F"+
-        "\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6"+
-        "\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23"+
-        "\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D"+
-        "\u6026\u6019\u6032\u600B\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6034\u600A"+
-        "\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010"+
-        "\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D"+
-        "\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE"+
-        "\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8"+
-        "\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603"+
-        "\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A"+
-        "\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786"+
-        "\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799"+
-        "\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80"+
-        "\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9"+
-        "\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA"+
-        "\u6CC3\u6CC6\u6CED\u6CF2\u6CD2\u6CDD\u6CB4\u6C8A"+
-        "\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0"+
-        "\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093"+
-        "\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A"+
-        "\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA"+
-        "\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0"+
-        "\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C"+
-        "\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC"+
-        "\u77F9\u77FB\u77FA\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u77F7\u7942\u793F"+
-        "\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F"+
-        "\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0"+
-        "\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC"+
-        "\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4"+
-        "\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56"+
-        "\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2"+
-        "\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A"+
-        "\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1"+
-        "\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6"+
-        "\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2"+
-        "\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1"+
-        "\u54AD\u54A5\u54CF\u54C3\u830D\u54B7\u54AE\u54D6"+
-        "\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE"+
-        "\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C"+
-        "\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5"+
-        "\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE"+
-        "\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4"+
-        "\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE"+
-        "\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7"+
-        "\u5CCB\u5CDB\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u5CDE\u5CDA\u5CC9\u5CC7"+
-        "\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE"+
-        "\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24"+
-        "\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E"+
-        "\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045"+
-        "\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F"+
-        "\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF"+
-        "\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F"+
-        "\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315"+
-        "\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621"+
-        "\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A"+
-        "\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2"+
-        "\u67C8\u67BA\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7"+
-        "\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7"+
-        "\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0"+
-        "\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB"+
-        "\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82"+
-        "\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28"+
-        "\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA"+
-        "\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D"+
-        "\u6D42\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u6D01\u6D18\u6D37\u6D03\u6D0F"+
-        "\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10"+
-        "\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5"+
-        "\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E"+
-        "\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3"+
-        "\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5"+
-        "\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8"+
-        "\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA"+
-        "\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7"+
-        "\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805"+
-        "\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C"+
-        "\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE"+
-        "\u7A80\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79"+
-        "\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91"+
-        "\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8"+
-        "\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3"+
-        "\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6"+
-        "\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307"+
-        "\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC"+
-        "\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u82E4\u82E0\u82FA\u82F3\u82ED\u8677"+
-        "\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869"+
-        "\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0"+
-        "\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB"+
-        "\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A"+
-        "\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B"+
-        "\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017"+
-        "\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A"+
-        "\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261"+
-        "\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E"+
-        "\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4"+
-        "\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1";
-
-    private final static String innerIndex3=
-        "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B"+
-        "\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6"+
-        "\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9"+
-        "\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15"+
-        "\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD"+
-        "\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1"+
-        "\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA"+
-        "\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u6041\u60A2\u6088\u6080\u6092\u6081\u609D"+
-        "\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219"+
-        "\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336"+
-        "\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341"+
-        "\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A"+
-        "\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6"+
-        "\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712"+
-        "\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B"+
-        "\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F"+
-        "\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828"+
-        "\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D"+
-        "\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4\u6BE8"+
-        "\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76"+
-        "\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91"+
-        "\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97"+
-        "\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B"+
-        "\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75"+
-        "\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2"+
-        "\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6"+
-        "\u70C7\u70DA\u70CE\u70E1\u7242\u7278\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3"+
-        "\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7"+
-        "\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA"+
-        "\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521"+
-        "\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF"+
-        "\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713"+
-        "\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727"+
-        "\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B"+
-        "\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F"+
-        "\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE"+
-        "\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85"+
-        "\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10\u7B04\u7B13"+
-        "\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84"+
-        "\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D"+
-        "\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F"+
-        "\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96"+
-        "\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA"+
-        "\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F"+
-        "\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356"+
-        "\u833F\u8341\u8326\u831C\u8322\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u8342"+
-        "\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324"+
-        "\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353"+
-        "\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2"+
-        "\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686"+
-        "\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695"+
-        "\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D"+
-        "\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883"+
-        "\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4"+
-        "\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3"+
-        "\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6"+
-        "\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8"+
-        "\u90DB\u90D7\u90DC\u90E4\u9150\u914E\u914F\u91D5"+
-        "\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F"+
-        "\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B"+
-        "\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062"+
-        "\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046"+
-        "\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D"+
-        "\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576"+
-        "\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536"+
-        "\u5535\u5530\u5552\u5545\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u550C\u5532"+
-        "\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B"+
-        "\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4"+
-        "\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF"+
-        "\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E"+
-        "\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0"+
-        "\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E"+
-        "\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53"+
-        "\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48"+
-        "\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47"+
-        "\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0"+
-        "\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28"+
-        "\u5D0D\u5D26\u5D25\u5D0F\u5D30\u5D12\u5D23\u5D1F"+
-        "\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3"+
-        "\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086"+
-        "\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9"+
-        "\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3"+
-        "\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD"+
-        "\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387"+
-        "\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C"+
-        "\u63A4\u633B\u639F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6378\u6385\u6381"+
-        "\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B"+
-        "\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C"+
-        "\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC"+
-        "\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C"+
-        "\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896"+
-        "\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C"+
-        "\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F"+
-        "\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3"+
-        "\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00"+
-        "\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD"+
-        "\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5"+
-        "\u6DC2\u6DCF\u6DC9\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7"+
-        "\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4"+
-        "\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106"+
-        "\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E"+
-        "\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318"+
-        "\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8"+
-        "\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC"+
-        "\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE"+
-        "\u75D2\u75CF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u75CB\u75CC\u75D1\u75D0"+
-        "\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732"+
-        "\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852"+
-        "\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964"+
-        "\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA"+
-        "\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47"+
-        "\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A"+
-        "\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A"+
-        "\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38"+
-        "\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E"+
-        "\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D"+
-        "\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF"+
-        "\u7FC9\u801F\u801E\u801B\u8047\u8043\u8048\u8118"+
-        "\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121"+
-        "\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A"+
-        "\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A"+
-        "\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375"+
-        "\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA"+
-        "\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F"+
-        "\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF"+
-        "\u86B7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u86C2\u86C1\u86C5\u86BA\u86B0"+
-        "\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC"+
-        "\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2"+
-        "\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899"+
-        "\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982"+
-        "\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39"+
-        "\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79"+
-        "\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD"+
-        "\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C"+
-        "\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3"+
-        "\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153"+
-        "\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9"+
-        "\u91EA\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588"+
-        "\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804"+
-        "\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3"+
-        "\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082"+
-        "\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591"+
-        "\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588"+
-        "\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C"+
-        "\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u5819\u581E\u5827\u5823\u5828\u57F5"+
-        "\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E"+
-        "\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94"+
-        "\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5"+
-        "\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83"+
-        "\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93"+
-        "\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE"+
-        "\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F"+
-        "\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D"+
-        "\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32"+
-        "\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5"+
-        "\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"+
-        "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC"+
-        "\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104"+
-        "\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8"+
-        "\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5"+
-        "\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4"+
-        "\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0"+
-        "\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568"+
-        "\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u667C\u666C\u667B\u6680\u6671\u6679\u666A"+
-        "\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC"+
-        "\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6"+
-        "\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970"+
-        "\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD"+
-        "\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD"+
-        "\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915"+
-        "\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97"+
-        "\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC"+
-        "\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45"+
-        "\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33"+
-        "\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E\u6E68"+
-        "\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39"+
-        "\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77"+
-        "\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120"+
-        "\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122"+
-        "\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288"+
-        "\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322"+
-        "\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335"+
-        "\u730C\u742E\u742C\u7430\u742B\u7416\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429"+
-        "\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA"+
-        "\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692"+
-        "\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E"+
-        "\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C"+
-        "\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E"+
-        "\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03"+
-        "\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44"+
-        "\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E"+
-        "\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67"+
-        "\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69"+
-        "\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65\u7F66\u7FA2"+
-        "\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4"+
-        "\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A"+
-        "\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D"+
-        "\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8"+
-        "\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8"+
-        "\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF"+
-        "\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F"+
-        "\u83DE\u8411\u8406\u83C2\u83F3\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u83D5"+
-        "\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE"+
-        "\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8"+
-        "\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB"+
-        "\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856"+
-        "\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6"+
-        "\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998"+
-        "\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59"+
-        "\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51"+
-        "\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE"+
-        "\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3"+
-        "\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8"+
-        "\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA\u8EF9\u8EE6\u8EEE"+
-        "\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC"+
-        "\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104"+
-        "\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107"+
-        "\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201"+
-        "\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200"+
-        "\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C"+
-        "\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C"+
-        "\u9590\u9687\u967E\u9688\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u9689\u9683"+
-        "\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770"+
-        "\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84"+
-        "\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4"+
-        "\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9"+
-        "\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3"+
-        "\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4"+
-        "\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2"+
-        "\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853"+
-        "\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E"+
-        "\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC"+
-        "\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0"+
-        "\u5ABF\u5AC8\u5ABB\u5AC6\u5AB7\u5AC0\u5ACA\u5AB4"+
-        "\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F"+
-        "\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E"+
-        "\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D"+
-        "\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF"+
-        "\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132"+
-        "\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168"+
-        "\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412"+
-        "\u6409\u6420\u6424\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6433\u6443\u641F"+
-        "\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426"+
-        "\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440"+
-        "\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E"+
-        "\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B"+
-        "\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938"+
-        "\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942"+
-        "\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933"+
-        "\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F"+
-        "\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B"+
-        "\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B"+
-        "\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B"+
-        "\uFA0D\u6BFB\u6BFC\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6"+
-        "\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1"+
-        "\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7"+
-        "\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC"+
-        "\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF"+
-        "\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154"+
-        "\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178"+
-        "\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F"+
-        "\u7150\u7153\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u7144\u714D\u715A\u724F"+
-        "\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B"+
-        "\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452"+
-        "\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446"+
-        "\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579"+
-        "\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC"+
-        "\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD"+
-        "\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756"+
-        "\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887"+
-        "\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1"+
-        "\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982"+
-        "\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15"+
-        "\u7A22\u7A13\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB"+
-        "\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73"+
-        "\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4"+
-        "\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A"+
-        "\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D"+
-        "\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5"+
-        "\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C"+
-        "\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167"+
-        "\u816F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u8144\u8161\u821D\u8249\u8244"+
-        "\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479"+
-        "\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430"+
-        "\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507"+
-        "\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432"+
-        "\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F"+
-        "\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E"+
-        "\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B"+
-        "\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C"+
-        "\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701"+
-        "\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE"+
-        "\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5"+
-        "\u89E4\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86"+
-        "\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83"+
-        "\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64"+
-        "\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91"+
-        "\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92"+
-        "\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3"+
-        "\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01"+
-        "\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u9044\u9049\u903D\u9110\u910D\u910F"+
-        "\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248"+
-        "\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283"+
-        "\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267"+
-        "\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250"+
-        "\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C"+
-        "\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA"+
-        "\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F"+
-        "\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0"+
-        "\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80"+
-        "\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA"+
-        "\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0";
-
-    private final static String innerIndex4=
-        "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627"+
-        "\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613"+
-        "\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C"+
-        "\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A"+
-        "\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894"+
-        "\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA"+
-        "\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC"+
-        "\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A"+
-        "\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D"+
-        "\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7"+
-        "\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43"+
-        "\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173"+
-        "\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A"+
-        "\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227"+
-        "\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472"+
-        "\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E"+
-        "\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C"+
-        "\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0"+
-        "\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9\u69A0"+
-        "\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E"+
-        "\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD"+
-        "\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993"+
-        "\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5"+
-        "\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0"+
-        "\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25"+
-        "\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A"+
-        "\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C"+
-        "\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6"+
-        "\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08"+
-        "\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F"+
-        "\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295"+
-        "\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471"+
-        "\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D"+
-        "\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614"+
-        "\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F"+
-        "\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E"+
-        "\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998"+
-        "\u798A\u798B\u7996\u7995\u7994\u7993\u7997\u7988"+
-        "\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26"+
-        "\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91"+
-        "\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98"+
-        "\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA"+
-        "\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5"+
-        "\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9"+
-        "\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9"+
-        "\u7F73\u7FE2\u7FE3\u7FE5\u7FDE\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u8024"+
-        "\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C"+
-        "\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE"+
-        "\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD"+
-        "\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2"+
-        "\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6"+
-        "\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB"+
-        "\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740"+
-        "\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741"+
-        "\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712"+
-        "\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724"+
-        "\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA"+
-        "\u88FE\u88EE\u88FC\u88F6\u88FB\u88F0\u88EC\u88EB"+
-        "\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB"+
-        "\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69"+
-        "\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D"+
-        "\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00"+
-        "\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120"+
-        "\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A"+
-        "\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A"+
-        "\u92A0\u9294\u92AA\u928D\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u92A6\u929A"+
-        "\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282"+
-        "\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C"+
-        "\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D"+
-        "\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783"+
-        "\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD"+
-        "\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C"+
-        "\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1"+
-        "\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1"+
-        "\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106"+
-        "\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B"+
-        "\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641"+
-        "\u564A\u5649\u5646\u5658\u565A\u5640\u5633\u563D"+
-        "\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D"+
-        "\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF"+
-        "\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02"+
-        "\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97"+
-        "\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1"+
-        "\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB"+
-        "\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1"+
-        "\u61B0\u61A2\u6189\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u619B\u6193\u61AF"+
-        "\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3"+
-        "\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C"+
-        "\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1"+
-        "\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5"+
-        "\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06"+
-        "\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF"+
-        "\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE"+
-        "\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D"+
-        "\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6"+
-        "\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2"+
-        "\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E"+
-        "\u6F87\u6FC6\u6F92\u6F8D\u6F89\u6F8C\u6F62\u6F4F"+
-        "\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72"+
-        "\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61"+
-        "\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F"+
-        "\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B"+
-        "\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E"+
-        "\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A"+
-        "\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361"+
-        "\u735A\u7359\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u7362\u7487\u7489\u748A"+
-        "\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508"+
-        "\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623"+
-        "\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D"+
-        "\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1"+
-        "\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1"+
-        "\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4"+
-        "\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9"+
-        "\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB"+
-        "\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6"+
-        "\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD"+
-        "\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067"+
-        "\u81A3\u819F\u819E\u8195\u81A2\u8199\u8197\u8216"+
-        "\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B"+
-        "\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A"+
-        "\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4"+
-        "\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512"+
-        "\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502"+
-        "\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0"+
-        "\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F"+
-        "\u8662\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u8756\u8763\u8764\u8777\u87E1"+
-        "\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751"+
-        "\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F"+
-        "\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775"+
-        "\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B"+
-        "\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909"+
-        "\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6"+
-        "\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE"+
-        "\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E"+
-        "\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD"+
-        "\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25"+
-        "\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26"+
-        "\u8E27\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A"+
-        "\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17"+
-        "\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129"+
-        "\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181"+
-        "\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9"+
-        "\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD"+
-        "\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6"+
-        "\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u92B5\u92E1\u92C6\u92B4\u957C\u95AC"+
-        "\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708"+
-        "\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E"+
-        "\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2"+
-        "\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC"+
-        "\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8"+
-        "\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2"+
-        "\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76"+
-        "\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD"+
-        "\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05"+
-        "\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117"+
-        "\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"+
-        "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C"+
-        "\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC"+
-        "\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10"+
-        "\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1"+
-        "\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2"+
-        "\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9"+
-        "\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8"+
-        "\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF"+
-        "\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533"+
-        "\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB"+
-        "\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66"+
-        "\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76"+
-        "\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A"+
-        "\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C"+
-        "\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54"+
-        "\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03"+
-        "\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8"+
-        "\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5"+
-        "\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8\u6FA2"+
-        "\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2"+
-        "\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA"+
-        "\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB"+
-        "\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B"+
-        "\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1"+
-        "\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C"+
-        "\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1"+
-        "\u779C\u779B\u77A2\u77A3\u7795\u7799\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB"+
-        "\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48"+
-        "\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3"+
-        "\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4"+
-        "\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4"+
-        "\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F"+
-        "\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B"+
-        "\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B"+
-        "\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1"+
-        "\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4"+
-        "\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556"+
-        "\u8545\u856B\u854D\u8553\u8561\u8558\u8540\u8546"+
-        "\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E"+
-        "\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560"+
-        "\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665"+
-        "\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781"+
-        "\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791"+
-        "\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926"+
-        "\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923"+
-        "\u892F\u892C\u891F\u89F1\u8AE0\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u8AE2"+
-        "\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0"+
-        "\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91"+
-        "\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C"+
-        "\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45"+
-        "\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36"+
-        "\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079"+
-        "\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190"+
-        "\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306"+
-        "\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301"+
-        "\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325"+
-        "\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329"+
-        "\u9339\u9335\u932A\u9314\u930C\u930B\u92FE\u9309"+
-        "\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA"+
-        "\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712"+
-        "\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F"+
-        "\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC"+
-        "\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9"+
-        "\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33"+
-        "\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93"+
-        "\u9B92\u9B90\u9B7A\u9B95\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u9B7D\u9B88"+
-        "\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18"+
-        "\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE"+
-        "\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125"+
-        "\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D"+
-        "\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6"+
-        "\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C"+
-        "\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7"+
-        "\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7"+
-        "\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3"+
-        "\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2"+
-        "\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1"+
-        "\u6A9E\u6A87\u6A93\u6A8E\u6A95\u6A83\u6AA8\u6AA4"+
-        "\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B"+
-        "\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC"+
-        "\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8"+
-        "\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373"+
-        "\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD"+
-        "\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584"+
-        "\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB"+
-        "\u77B2\u77B7\u77B6\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u77B4\u77B1\u77A8"+
-        "\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905"+
-        "\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56"+
-        "\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F"+
-        "\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3"+
-        "\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0"+
-        "\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33"+
-        "\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C"+
-        "\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E"+
-        "\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA"+
-        "\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583"+
-        "\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B"+
-        "\u85A4\u859A\u859E\u8577\u857C\u8589\u85A1\u857A"+
-        "\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D"+
-        "\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598"+
-        "\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0"+
-        "\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2"+
-        "\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF"+
-        "\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E"+
-        "\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2"+
-        "\u89F3\u8B1E\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u8B18\u8B16\u8B11\u8B05"+
-        "\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08"+
-        "\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71"+
-        "\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53"+
-        "\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138"+
-        "\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0"+
-        "\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358"+
-        "\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F"+
-        "\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371"+
-        "\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E"+
-        "\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE"+
-        "\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A"+
-        "\u97A1\u979C\u979E\u979D\u97D5\u97D4\u97F1\u9841"+
-        "\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C"+
-        "\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998"+
-        "\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8"+
-        "\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE"+
-        "\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B"+
-        "\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF"+
-        "\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38"+
-        "\u9D30\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u9D45\u9D42\u9D43\u9D3E\u9D37"+
-        "\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0"+
-        "\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54"+
-        "\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A"+
-        "\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D"+
-        "\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0"+
-        "\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501"+
-        "\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5"+
-        "\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7"+
-        "\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D"+
-        "\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026"+
-        "\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD"+
-        "\u7376\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB"+
-        "\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653"+
-        "\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF"+
-        "\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD"+
-        "\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D"+
-        "\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50"+
-        "\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57"+
-        "\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u81D0\u825F\u825E\u85B4\u85C6\u85C0"+
-        "\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF"+
-        "\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624"+
-        "\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB"+
-        "\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC"+
-        "\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801"+
-        "\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946"+
-        "\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30"+
-        "\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37"+
-        "\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42"+
-        "\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00"+
-        "\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67";
-
-    private final static String innerIndex5=
-        "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47"+
-        "\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5"+
-        "\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B"+
-        "\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395"+
-        "\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4"+
-        "\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3"+
-        "\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722"+
-        "\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA"+
-        "\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F"+
-        "\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07"+
-        "\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35"+
-        "\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1"+
-        "\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C"+
-        "\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C"+
-        "\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C"+
-        "\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29"+
-        "\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4"+
-        "\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD"+
-        "\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70\u5FBF"+
-        "\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584"+
-        "\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9"+
-        "\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE"+
-        "\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B"+
-        "\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A"+
-        "\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4"+
-        "\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660"+
-        "\u77C9\u77CA\u77C4\u77F1\u791D\u791B\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33"+
-        "\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75"+
-        "\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68"+
-        "\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078"+
-        "\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED"+
-        "\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8"+
-        "\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF"+
-        "\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809"+
-        "\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802"+
-        "\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D"+
-        "\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A"+
-        "\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55\u8B51\u8B42"+
-        "\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07"+
-        "\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73"+
-        "\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50"+
-        "\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7"+
-        "\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9"+
-        "\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4"+
-        "\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1"+
-        "\u9729\u972B\u972C\u9728\u9726\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u97B3"+
-        "\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D"+
-        "\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943"+
-        "\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B"+
-        "\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2"+
-        "\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0"+
-        "\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC"+
-        "\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81"+
-        "\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B"+
-        "\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85"+
-        "\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68"+
-        "\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D"+
-        "\u9F56\u9F57\u9F58\u5337\u56B2\u56B5\u56B3\u58E3"+
-        "\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9"+
-        "\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4"+
-        "\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF"+
-        "\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038"+
-        "\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213"+
-        "\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE"+
-        "\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923"+
-        "\u7927\u7928\u7924\u7929\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u79B2\u7A6E"+
-        "\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45"+
-        "\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079"+
-        "\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601"+
-        "\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C"+
-        "\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963"+
-        "\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63"+
-        "\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59"+
-        "\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141"+
-        "\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420"+
-        "\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D"+
-        "\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA"+
-        "\u9409\u93F8\u940A\u93FF\u93FC\u940C\u93F6\u9411"+
-        "\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB"+
-        "\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2"+
-        "\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34"+
-        "\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D"+
-        "\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08"+
-        "\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06"+
-        "\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92"+
-        "\u9D98\u9D90\u9D9B\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u9DA0\u9D94\u9D9C"+
-        "\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3"+
-        "\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A"+
-        "\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60"+
-        "\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297"+
-        "\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1"+
-        "\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043"+
-        "\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A"+
-        "\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F"+
-        "\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86"+
-        "\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626"+
-        "\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620"+
-        "\u8629\u861E\u8625\u8829\u881D\u881B\u8820\u8824"+
-        "\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA"+
-        "\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF"+
-        "\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145"+
-        "\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430"+
-        "\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4"+
-        "\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6"+
-        "\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42"+
-        "\u9A41\u9A3A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u9A3F\u9ACD\u9B15\u9B17"+
-        "\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C"+
-        "\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC"+
-        "\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB"+
-        "\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD"+
-        "\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE"+
-        "\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64"+
-        "\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C"+
-        "\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B"+
-        "\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E"+
-        "\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D"+
-        "\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59"+
-        "\u7C5B\u7C5A\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE"+
-        "\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C"+
-        "\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB"+
-        "\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95"+
-        "\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62"+
-        "\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445"+
-        "\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB"+
-        "\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48"+
-        "\u9A4A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u9A49\u9A52\u9A50\u9AD0\u9B19"+
-        "\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44"+
-        "\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D"+
-        "\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC"+
-        "\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5"+
-        "\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B"+
-        "\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D"+
-        "\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525"+
-        "\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A"+
-        "\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66"+
-        "\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B"+
-        "\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973"+
-        "\u89FE\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98"+
-        "\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E"+
-        "\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20"+
-        "\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59"+
-        "\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8"+
-        "\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2"+
-        "\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2"+
-        "\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD"+
-        "\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061"+
-        "\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7"+
-        "\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837"+
-        "\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D"+
-        "\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746"+
-        "\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63"+
-        "\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07"+
-        "\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD"+
-        "\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4"+
-        "\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226"+
-        "\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"+
-        "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648"+
-        "\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5"+
-        "\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749"+
-        "\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10"+
-        "\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78"+
-        "\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2"+
-        "\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74"+
-        "\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D"+
-        "\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874"+
-        "\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15"+
-        "\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482"+
-        "\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B"+
-        "\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D"+
-        "\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD";
-
-    private final static short index1[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
-        16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
-        32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
-        47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
-        63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
-        79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0
-    };
-
-    String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4,
-        innerIndex5
-    };
 }
--- a/jdk/src/share/classes/sun/io/CharToByteJohab.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/io/CharToByteJohab.java	Wed Jul 05 16:52:18 2017 +0200
@@ -46,4728 +46,4 @@
         super.index1 = nioCoder.getEncoderIndex1();
         super.index2 = nioCoder.getEncoderIndex2();
     }
-
-    private final static String innerIndex0=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'"+
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F"+
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037"+
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F"+
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047"+
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F"+
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057"+
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F"+
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067"+
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F"+
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077"+
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uD9AE\u0000\u0000\uD9B4\u0000\u0000\uD967"+
-        "\uD937\u0000\uDCA3\u0000\u0000\uD939\u0000\u0000"+
-        "\uD956\uD94E\uDD99\uDD9A\uD9A5\u0000\uD9D2\uD934"+
-        "\uD9AC\uDD98\uDCAC\u0000\uDCF9\uDCF6\uDCFA\uD9AF"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uDCA1\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uDCA2\u0000\u0000\u0000\u0000\u0000\u0000\uD94F"+
-        "\uDCAA\u0000\u0000\u0000\u0000\u0000\uDCAD\uDD3C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uDD31\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uDD33\u0000\u0000\u0000\u0000\u0000\u0000\uD950"+
-        "\uDD3A\u0000\u0000\u0000\u0000\u0000\uDD3D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uDD32\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uDCA4\uDD34"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uDD35\uDCA6\uDD36\u0000\u0000\u0000\u0000"+
-        "\uDD37\u0000\u0000\u0000\u0000\u0000\u0000\uDCA8"+
-        "\uDD38\uDCA9\uDD39\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uDD40\uDCAF\uDD3F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uDCAB\uDD3B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uDCAE\uDD3E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD9A7"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uD9B0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uD9A8\uD9AB\uD9AA\uD9AD\u0000\uD9A9\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uDB51\uDB52\uDB53\uDB54\uDB55\uDB56\uDB57"+
-        "\uDB58\uDB59\uDB5A\uDB5B\uDB5C\uDB5D\uDB5E\uDB5F"+
-        "\uDB60\uDB61\u0000\uDB62\uDB63\uDB64\uDB65\uDB66"+
-        "\uDB67\uDB68\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uDB71\uDB72\uDB73\uDB74\uDB75\uDB76\uDB77"+
-        "\uDB78\uDB79\uDB7A\uDB7B\uDB7C\uDB7D\uDB7E\uDB91"+
-        "\uDB92\uDB93\u0000\uDB94\uDB95\uDB96\uDB97\uDB98"+
-        "\uDB99\uDB9A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uDEA7\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uDEA1\uDEA2\uDEA3\uDEA4\uDEA5\uDEA6\uDEA8\uDEA9"+
-        "\uDEAA\uDEAB\uDEAC\uDEAD\uDEAE\uDEAF\uDEB0\uDEB1"+
-        "\uDEB2\uDEB3\uDEB4\uDEB5\uDEB6\uDEB7\uDEB8\uDEB9"+
-        "\uDEBA\uDEBB\uDEBC\uDEBD\uDEBE\uDEBF\uDEC0\uDEC1"+
-        "\uDED1\uDED2\uDED3\uDED4\uDED5\uDED6\uDED8\uDED9"+
-        "\uDEDA\uDEDB\uDEDC\uDEDD\uDEDE\uDEDF\uDEE0\uDEE1"+
-        "\uDEE2\uDEE3\uDEE4\uDEE5\uDEE6\uDEE7\uDEE8\uDEE9"+
-        "\uDEEA\uDEEB\uDEEC\uDEED\uDEEE\uDEEF\uDEF0\uDEF1"+
-        "\u0000\uDED7\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uD93A\u0000\u0000"+
-        "\uD93E\uD93F\u0000\u0000\uD940\uD941\u0000\u0000"+
-        "\uD9D3\uD9D4\u0000\u0000\u0000\uD935\uD936\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uD9B6\u0000\uD957\uD958\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uD968\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uDD9B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDD9C"+
-        "\u0000\uDD9D\uDD9E\uDD9F\uDDA0\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uD959\u0000\u0000\u0000\u0000"+
-        "\u0000\uD9B5\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uDC34\u0000\u0000\uD9E0\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uD9E5\uD9E2\u0000\u0000\u0000\uDC69\u0000"+
-        "\u0000\u0000\u0000\uD95A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uDCF7\uDCF8\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uDCFB\uDCFC\uDCFD\uDCFE\u0000"+
-        "\uDB40\uDB41\uDB42\uDB43\uDB44\uDB45\uDB46\uDB47"+
-        "\uDB48\uDB49\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uDB31\uDB32\uDB33\uDB34\uDB35\uDB36\uDB37\uDB38"+
-        "\uDB39\uDB3A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uD977\uD978\uD976\uD979\uD97A\uD9D5\uD9D8\uD9D6"+
-        "\uD9D9\uD9D7\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uD9A1\u0000\uD9A2\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uD9A3\u0000\uD963\uD9A4\u0000\u0000\u0000\uD964"+
-        "\uD996\u0000\u0000\uD997\u0000\u0000\u0000\uD9B3"+
-        "\u0000\uD9B2\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uD97E\u0000\u0000\uD992\uD954\u0000"+
-        "\uD960\u0000\u0000\u0000\u0000\uD93B\u0000\uD99E"+
-        "\uD99F\uD99D\uD99C\uD994\uD995\u0000\uD9B1\u0000"+
-        "\u0000\u0000\u0000\u0000\uD955\uD993\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uD93D\uD991\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uD966\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uD951\uD965\u0000\u0000\uD952\uD953\u0000\u0000"+
-        "\u0000\u0000\uD97C\uD97D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uD99A\uD99B\u0000\u0000\uD998\uD999"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uD9C1\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uD961\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uD962\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uDCE7\uDCE8\uDCE9\uDCEA\uDCEB\uDCEC\uDCED\uDCEE"+
-        "\uDCEF\uDCF0\uDCF1\uDCF2\uDCF3\uDCF4\uDCF5\u0000"+
-        "\u0000\u0000\u0000\u0000\uDD77\uDD78\uDD79\uDD7A"+
-        "\uDD7B\uDD7C\uDD7D\uDD7E\uDD91\uDD92\uDD93\uDD94"+
-        "\uDD95\uDD96\uDD97\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uDD5D\uDD5E\uDD5F\uDD60"+
-        "\uDD61\uDD62\uDD63\uDD64\uDD65\uDD66\uDD67\uDD68"+
-        "\uDD69\uDD6A\uDD6B\uDD6C\uDD6D\uDD6E\uDD6F\uDD70"+
-        "\uDD71\uDD72\uDD73\uDD74\uDD75\uDD76\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uDCCD\uDCCE\uDCCF\uDCD0\uDCD1\uDCD2\uDCD3\uDCD4"+
-        "\uDCD5\uDCD6\uDCD7\uDCD8\uDCD9\uDCDA\uDCDB\uDCDC"+
-        "\uDCDD\uDCDE\uDCDF\uDCE0\uDCE1\uDCE2\uDCE3\uDCE4"+
-        "\uDCE5\uDCE6\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uDBA1\uDBAC\uDBA2\uDBAD\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uDBA3\uDBC8\uDBC7\uDBAE"+
-        "\uDBA4\uDBC2\uDBC1\uDBAF\uDBA6\uDBC6\uDBC5\uDBB1"+
-        "\uDBA5\uDBC4\uDBC3\uDBB0\uDBA7\uDBBC\uDBC9\uDBCA"+
-        "\uDBB7\uDBCB\uDBCC\uDBB2\uDBA9\uDBBE\uDBCD\uDBCE"+
-        "\uDBB9\uDBCF\uDBD0\uDBB4\uDBA8\uDBD1\uDBD2\uDBB8"+
-        "\uDBBD\uDBD3\uDBD4\uDBB3\uDBAA\uDBD5\uDBD6\uDBBA"+
-        "\uDBBF\uDBD7\uDBD8\uDBB5\uDBAB\uDBD9\uDBDA\uDBBB"+
-        "\uDBDB\uDBDC\uDBC0\uDBDD\uDBDE\uDBDF\uDBE0\uDBE1"+
-        "\uDBE2\uDBE3\uDBE4\uDBB6\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uD9C6\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uD971\uD970\u0000\uD9C3\uD9C7\uD9C8\uD9CB\uD9CA"+
-        "\uD9C9\uD9CC\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uD973\uD972\u0000\u0000\uD9BA\uD9B9"+
-        "\u0000\u0000\u0000\u0000\uD975\uD974\u0000\u0000"+
-        "\uD9B8\uD9B7\u0000\u0000\u0000\u0000\uD96F\uD96E"+
-        "\uD9C2\u0000\u0000\uD96B\u0000\u0000\uD96D\uD96C"+
-        "\uD9C4\uD9C5\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uD96A\uD969\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uD9CF\uD9CE"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uD9D0\u0000\uD9D1\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uD95F\u0000\uD95E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uD9BC\uD9BD\u0000\uD9C0\uD9BB\uD9BE\u0000\uD9BF"+
-        "\uD9CD\uD9DB\uD9DC\u0000\uD9DD\uD9DA\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uD931\uD932\uD933\uD938\u0000\u0000\u0000\u0000"+
-        "\uD944\uD945\uD946\uD947\uD948\uD949\uD94A\uD94B"+
-        "\uD94C\uD94D\u0000\uD97B\uD942\uD943\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uDDA1\uDDA2\uDDA3\uDDA4\uDDA5\uDDA6\uDDA7"+
-        "\uDDA8\uDDA9\uDDAA\uDDAB\uDDAC\uDDAD\uDDAE\uDDAF"+
-        "\uDDB0\uDDB1\uDDB2\uDDB3\uDDB4\uDDB5\uDDB6\uDDB7"+
-        "\uDDB8\uDDB9\uDDBA\uDDBB\uDDBC\uDDBD\uDDBE\uDDBF"+
-        "\uDDC0\uDDC1\uDDC2\uDDC3\uDDC4\uDDC5\uDDC6\uDDC7"+
-        "\uDDC8\uDDC9\uDDCA\uDDCB\uDDCC\uDDCD\uDDCE\uDDCF"+
-        "\uDDD0\uDDD1\uDDD2\uDDD3\uDDD4\uDDD5\uDDD6\uDDD7"+
-        "\uDDD8\uDDD9\uDDDA\uDDDB\uDDDC\uDDDD\uDDDE\uDDDF"+
-        "\uDDE0\uDDE1\uDDE2\uDDE3\uDDE4\uDDE5\uDDE6\uDDE7"+
-        "\uDDE8\uDDE9\uDDEA\uDDEB\uDDEC\uDDED\uDDEE\uDDEF"+
-        "\uDDF0\uDDF1\uDDF2\uDDF3\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uDE31\uDE32\uDE33\uDE34\uDE35\uDE36\uDE37"+
-        "\uDE38\uDE39\uDE3A\uDE3B\uDE3C\uDE3D\uDE3E\uDE3F"+
-        "\uDE40\uDE41\uDE42\uDE43\uDE44\uDE45\uDE46\uDE47"+
-        "\uDE48\uDE49\uDE4A\uDE4B\uDE4C\uDE4D\uDE4E\uDE4F"+
-        "\uDE50\uDE51\uDE52\uDE53\uDE54\uDE55\uDE56\uDE57"+
-        "\uDE58\uDE59\uDE5A\uDE5B\uDE5C\uDE5D\uDE5E\uDE5F"+
-        "\uDE60\uDE61\uDE62\uDE63\uDE64\uDE65\uDE66\uDE67"+
-        "\uDE68\uDE69\uDE6A\uDE6B\uDE6C\uDE6D\uDE6E\uDE6F"+
-        "\uDE70\uDE71\uDE72\uDE73\uDE74\uDE75\uDE76\uDE77"+
-        "\uDE78\uDE79\uDE7A\uDE7B\uDE7C\uDE7D\uDE7E\uDE91"+
-        "\uDE92\uDE93\uDE94\uDE95\uDE96\uDE97\uDE98\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u8841\u8C41\u8444\u9041\u8446\u8447\u9441"+
-        "\u9841\u9C41\u844A\u844B\u844C\u844D\u844E\u844F"+
-        "\u8450\uA041\uA441\uA841\u8454\uAC41\uB041\uB441"+
-        "\uB841\uBC41\uC041\uC441\uC841\uCC41\uD041\u8461"+
-        "\u8481\u84A1\u84C1\u84E1\u8541\u8561\u8581\u85A1"+
-        "\u85C1\u85E1\u8641\u8661\u8681\u86A1\u86C1\u86E1"+
-        "\u8741\u8761\u8781\u87A1\uDAD4\uDAD5\uDAD6\uDAD7"+
-        "\uDAD8\uDAD9\uDADA\uDADB\uDADC\uDADD\uDADE\uDADF"+
-        "\uDAE0\uDAE1\uDAE2\uDAE3\uDAE4\uDAE5\uDAE6\uDAE7"+
-        "\uDAE8\uDAE9\uDAEA\uDAEB\uDAEC\uDAED\uDAEE\uDAEF"+
-        "\uDAF0\uDAF1\uDAF2\uDAF3\uDAF4\uDAF5\uDAF6\uDAF7"+
-        "\uDAF8\uDAF9\uDAFA\uDAFB\uDAFC\uDAFD\uDAFE\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uDD41\uDD42\uDD43\uDD44\uDD45\uDD46\uDD47\uDD48"+
-        "\uDD49\uDD4A\uDD4B\uDD4C\uDD4D\uDD4E\uDD4F\uDD50"+
-        "\uDD51\uDD52\uDD53\uDD54\uDD55\uDD56\uDD57\uDD58"+
-        "\uDD59\uDD5A\uDD5B\uDD5C\uD9DF\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uDCB1\uDCB2\uDCB3\uDCB4\uDCB5\uDCB6\uDCB7\uDCB8"+
-        "\uDCB9\uDCBA\uDCBB\uDCBC\uDCBD\uDCBE\uDCBF\uDCC0"+
-        "\uDCC1\uDCC2\uDCC3\uDCC4\uDCC5\uDCC6\uDCC7\uDCC8"+
-        "\uDCC9\uDCCA\uDCCB\uDCCC\u0000\u0000\u0000\uD9DE"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex1=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uDC59\uDC5A\uDC5B\uDC5C\uDC5D\u0000\u0000\u0000"+
-        "\uDC4A\uDC4B\uDC6C\uDC6D\uDC6E\uDC46\uDC47\uDC48"+
-        "\uDC64\uDC65\uDC66\uDC67\uDC68\uDC31\uDC32\uDC33"+
-        "\uDC35\uDC3B\uDC3C\uDC3D\uDC3E\uDC3F\uDC40\uDC41"+
-        "\uDC42\uDC43\uDC44\uDC37\uDC38\uDC39\uDC3A\uDC4D"+
-        "\uDC4E\uDC75\uDC76\uDC77\uDC78\uDC71\uDC72\uDC73"+
-        "\uDC4F\uDC50\uDC51\uDC52\uDC53\uDC54\uDC55\uDC56"+
-        "\uDC57\uDC58\uDC5E\uDC5F\uDC60\uDC61\uDC62\uDC63"+
-        "\uDC6A\uDC6B\uD9E3\uDC7C\uDC36\uDC70\uDC91\uD9E1"+
-        "\uDC4C\uDC7D\uDC45\u0000\u0000\u0000\u0000\uDC49"+
-        "\uDC7A\u0000\u0000\uDC7B\u0000\u0000\uDC6F\u0000"+
-        "\uD9E4\u0000\u0000\uDC74\uDC7E\uDC79\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF179\uF2CB\u0000\uF662\u0000\u0000\u0000\uE742"+
-        "\uF1DB\uEAB2\uEABE\uF7BB\u0000\uE996\u0000\u0000"+
-        "\u0000\uF5E4\u0000\u0000\uF4A6\uE9E0\uEBA6\u0000"+
-        "\uE29A\uE940\u0000\u0000\u0000\u0000\uECAA\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF3E9\u0000\u0000"+
-        "\u0000\u0000\uE1FA\u0000\u0000\u0000\u0000\u0000"+
-        "\uF93F\uE4A1\u0000\uF3AB\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEED1\uE43C\u0000\uE29B\u0000\u0000"+
-        "\u0000\u0000\u0000\uF3FD\u0000\uEA4F\uF8BA\uF7B9"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE262\u0000"+
-        "\uECAB\uF0E0\u0000\u0000\u0000\uE29C\uE0F7\uEDA5"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE071\u0000\uE55C\u0000\u0000"+
-        "\u0000\u0000\u0000\uF071\u0000\u0000\uE973\uEAAD"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE0EB\u0000"+
-        "\u0000\u0000\uE5AF\u0000\u0000\u0000\uE697\u0000"+
-        "\uEDF8\u0000\u0000\uEA50\uF133\u0000\uEFCD\u0000"+
-        "\uF037\uEFF6\uF8BB\u0000\uEEE9\uF2CC\u0000\u0000"+
-        "\uE376\u0000\u0000\uEA51\u0000\u0000\uED3C\u0000"+
-        "\u0000\uE75C\uF7F1\u0000\uE26F\uF834\uEE42\u0000"+
-        "\uF89D\u0000\u0000\uF84D\uE158\uF2CD\uE5D5\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE4A2\u0000"+
-        "\u0000\u0000\uF161\u0000\u0000\u0000\u0000\u0000"+
-        "\uED37\uF162\u0000\u0000\uF641\u0000\u0000\uE29D"+
-        "\u0000\u0000\uE361\uE0BF\u0000\uF1A4\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF1A8\uEA52\uF672\uF1DC"+
-        "\uE997\uEB49\u0000\u0000\u0000\uE55E\u0000\uF545"+
-        "\u0000\u0000\u0000\uE4DB\uE645\uF134\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uED76\u0000\uF3EA\u0000\u0000\u0000\uE0EC\uE0C0"+
-        "\u0000\u0000\u0000\uF194\u0000\u0000\u0000\u0000"+
-        "\u0000\uE37A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF7F2\uF135\uE36F\u0000\uEEEA\uE37B\uE961"+
-        "\uE8E9\uF9CC\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE8D7"+
-        "\u0000\u0000\u0000\u0000\uE871\u0000\uE646\u0000"+
-        "\uECDF\u0000\uEA53\u0000\uEA54\uE031\u0000\u0000"+
-        "\u0000\u0000\u0000\uF27C\u0000\u0000\uE4A3\uF247"+
-        "\uF75F\u0000\u0000\u0000\u0000\uF058\uF248\uF3AC"+
-        "\uF3A5\uEFCE\u0000\u0000\u0000\uF7BC\u0000\u0000"+
-        "\u0000\uEDF9\uF17A\uE9D6\uF1C2\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF735\u0000\u0000\u0000\u0000\u0000\uEDBA"+
-        "\uE8D8\u0000\u0000\uE032\u0000\u0000\uE3CD\u0000"+
-        "\u0000\u0000\uF27D\u0000\u0000\u0000\uF17B\uEA55"+
-        "\u0000\uECE0\u0000\uE059\uF479\u0000\uE5CE\u0000"+
-        "\uF646\u0000\uE252\uE657\u0000\uECB4\u0000\uF3AD"+
-        "\u0000\uF072\u0000\u0000\u0000\u0000\uE6C2\u0000"+
-        "\uF4A7\u0000\u0000\uE1EA\u0000\uF0EE\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE7B2\uF9A5"+
-        "\u0000\u0000\u0000\u0000\u0000\uF665\uE5E2\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF745"+
-        "\u0000\u0000\uE197\uF5B5\uED3D\u0000\u0000\u0000"+
-        "\u0000\uEEEB\uF3D5\u0000\u0000\u0000\uF34B\u0000"+
-        "\u0000\uEFB5\u0000\uE159\uF865\u0000\u0000\uEBD4"+
-        "\u0000\u0000\uE6D6\u0000\u0000\uE951\u0000\uEA56"+
-        "\uF891\uECE1\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEBF3\uE998"+
-        "\u0000\uE29E\u0000\uE8C4\u0000\uF793\u0000\u0000"+
-        "\uE974\u0000\uEDEF\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE941\u0000\u0000\u0000\uE5D6\u0000"+
-        "\u0000\uF4DA\u0000\uE0C1\u0000\uE8C3\u0000\u0000"+
-        "\u0000\uE7FA\uE4EE\u0000\u0000\u0000\uF848\u0000"+
-        "\u0000\uF9A6\uF0EF\u0000\uF536\u0000\uE15A\uF4A8"+
-        "\u0000\uF4DB\u0000\uE8A7\uF647\u0000\uE2E6\uF394"+
-        "\uE0DA\u0000\uEED2\uE6C3\uF692\uEF6E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEDA6\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEDE7\u0000\u0000\u0000\uE033"+
-        "\uE137\uF059\u0000\u0000\u0000\u0000\u0000\uF746"+
-        "\u0000\u0000\u0000\u0000\u0000\uF835\u0000\u0000"+
-        "\u0000\u0000\uF3AE\u0000\uF2CE\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE0ED\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF640\uF2CF\uEFCF\u0000"+
-        "\uF6DE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE263\u0000\u0000\u0000\u0000\uE999\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE8A8\u0000\u0000"+
-        "\u0000\uE0F8\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEAA1\uE9E1\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF5CA\uEFB6\u0000\u0000"+
-        "\u0000\u0000\uEEEC\uF27E\u0000\uF4F0\u0000\uEABF"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE15B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE351\u0000\u0000"+
-        "\u0000\uF562\uEB4A\u0000\u0000\u0000\u0000\uEAC0"+
-        "\u0000\uE270\u0000\u0000\u0000\uE962\uF9EA\u0000"+
-        "\u0000\u0000\uE698\u0000\u0000\u0000\uF05A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEF79\u0000\uECAC"+
-        "\u0000\u0000\u0000\u0000\u0000\uF4D0\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE034\u0000\uE8F8\u0000\u0000\u0000\uEA57"+
-        "\uF0F0\uF3D6\u0000\u0000\uEDE2\u0000\uE15C\u0000"+
-        "\u0000\uE0FB\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF073\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEAC1"+
-        "\u0000\uE67D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEFD0\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF249\u0000\u0000\u0000\u0000\uE5E3"+
-        "\u0000\u0000\uE3D3\u0000\uEDF0\u0000\u0000\u0000"+
-        "\uEF44\uF0C3\u0000\uF03A\uF89E\uF5F6\uF34C\uF9D4"+
-        "\uEB4B\uE253\u0000\uE34A\uF6BA\uE795\uF6CD\u0000"+
-        "\u0000\u0000\uED3E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE56F\u0000\u0000\u0000"+
-        "\u0000\u0000\uE377\u0000\u0000\uF19F\u0000\uE43E"+
-        "\uF291\uE5D7\uF074\uF732\uE1EB\uE6BF\uF8B1\u0000"+
-        "\u0000\uE1EC\u0000\u0000\u0000\uE942\uE37C\uE29F"+
-        "\uF292\u0000\u0000\u0000\uE152\u0000\u0000\u0000"+
-        "\uE37D\u0000\u0000\u0000\u0000\u0000\uEDF7\u0000"+
-        "\u0000\u0000\uF4FC\u0000\u0000\uF232\u0000\u0000"+
-        "\u0000\u0000\uE7B3\u0000\u0000\uE796\u0000\uEFB7"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE23E\u0000\u0000\u0000\u0000\uE7A2\u0000\u0000"+
-        "\u0000\u0000\uE793\u0000\uE55F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEDA7\uE5D2"+
-        "\u0000\u0000\u0000\u0000\u0000\uE639\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF532\u0000\uF3D7\u0000"+
-        "\u0000\uE5D8\u0000\uF34D\uE6D0\uE560\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE6CF\uF0EA\uF9EB\u0000"+
-        "\u0000\uE8ED\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF955\uE0C2\u0000\u0000\u0000\u0000\uF9D5\u0000"+
-        "\uF558\uEF7A\uF5F3\u0000\u0000\uF7DE\u0000\u0000"+
-        "\uE4EF\u0000\u0000\uF163\u0000\u0000\uE9C2\uF2B7"+
-        "\uEED4\u0000\uE05A\u0000\u0000\u0000\uE7FB\u0000"+
-        "\u0000\uF89F\u0000\u0000\u0000\u0000\u0000\uE63A"+
-        "\u0000\u0000\u0000\u0000\u0000\uF59A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF6F7\uE93C\u0000\u0000"+
-        "\u0000\uE6D7\uEAA2\u0000\u0000\u0000\uE24E\u0000"+
-        "\uE4F0\u0000\u0000\u0000\u0000\u0000\uF334\uEBEC"+
-        "\uE2E7\uF4CB\uF1A9\uE04E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF591\u0000\u0000\u0000\uF65E"+
-        "\u0000\u0000\uEA9D\uE34B\uE5B7\uF293\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF538\u0000\uE99A\u0000"+
-        "\u0000\u0000\u0000\uE0A7\u0000\uE85E\u0000\u0000"+
-        "\u0000\uEB76\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF1A5\uF294\u0000\u0000\u0000\u0000\uE99B"+
-        "\u0000\u0000\uF7DC\u0000\u0000\uF4DC\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF794\u0000\uF59B"+
-        "\u0000\u0000\u0000\uF993\u0000\u0000\u0000\uE34C"+
-        "\uE8F9\uE6B1\u0000\u0000\u0000\uE0FC\u0000\u0000"+
-        "\u0000\uF335\uE0FD\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE5F4\u0000\u0000\u0000\uE1ED"+
-        "\uE035\u0000\u0000\uE63B\uE352\u0000\u0000\u0000"+
-        "\u0000\uF34E\uE44D\uE134\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF846\u0000"+
-        "\u0000\uE15D\u0000\uE89C\u0000\uF65F\u0000\uEFB8"+
-        "\u0000\uE797\u0000\u0000\u0000\uE15E\u0000\u0000"+
-        "\u0000\u0000\uE6CD\u0000\u0000\uE561\uEFED\u0000"+
-        "\uE07B\uE7E2\u0000\uF9B2\u0000\uECAD\uE65C\uE7B4"+
-        "\u0000\u0000\uEBA7\uF263\uE353\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF9B3\u0000\uE5E4\u0000\u0000"+
-        "\uE2E8\u0000\uF1C3\uE342\u0000\u0000\uE2A0\uE838"+
-        "\u0000\u0000\u0000\u0000\u0000\uF760\u0000\u0000"+
-        "\uF9D6\u0000\u0000\u0000\u0000\uF761\u0000\uF762"+
-        "\uE963\u0000\u0000\u0000\u0000\uE9E2\uF8F9\uE9C1"+
-        "\u0000\uECB5\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF1DD\uE254\u0000\uE0A1\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE9E3\u0000\u0000\u0000\u0000\uF96D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF7AF\u0000\u0000\u0000\u0000\u0000\uE49D"+
-        "\uE2A1\uED38\u0000\uF546\uF1A0\u0000\u0000\uECAE"+
-        "\uEEED\uF9C1\uE872\u0000\u0000\uE743\u0000\u0000"+
-        "\u0000\uE9E4\uF391\uF693\uF892\u0000\u0000\uE3F5"+
-        "\u0000\u0000\uE85F\u0000\uE964\u0000\uE936\u0000"+
-        "\uF2BF\u0000\u0000\u0000\u0000\u0000\uE25F\u0000"+
-        "\uEB69\u0000\u0000\u0000\u0000\u0000\u0000\uE7D6"+
-        "\uF164\uF05B\u0000\u0000\uE04F\uE5B0\u0000\uE2E9"+
-        "\u0000\u0000\u0000\u0000\u0000\uF3ED\u0000\uE15F"+
-        "\u0000\u0000\u0000\u0000\uED9A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uED7D\u0000\u0000\u0000\u0000"+
-        "\uE6D8\u0000\uF9A7\u0000\u0000\u0000\u0000\uF03B"+
-        "\uF642\u0000\u0000\u0000\u0000\uE2F0\uF7BD\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEE96\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE0DB\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF4D1\u0000\u0000\u0000\u0000"+
-        "\uEFD1\uF4A9\uE370\uEFD2\u0000\uE873\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEC62\u0000\uF632\uEBF4"+
-        "\u0000\u0000\u0000\uE874\u0000\u0000\u0000\u0000"+
-        "\u0000\uEED5\uF5BF\uE2A2\uE1AF\uE2A3\u0000\u0000"+
-        "\u0000\uE1B0\uF3FE\uE333\uEBAF\uF733\u0000\uE036"+
-        "\uF6BB\uF47A\uEA58\uEFD3\u0000\u0000\u0000\u0000"+
-        "\uEA59\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF9DE\uE050\u0000\u0000\u0000"+
-        "\uF7EA\uE3CE\uF264\u0000\uE562\uE7A3\uF9A8\uE6D9"+
-        "\uF6CE\uF84E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE2D6\u0000\uE6F0\u0000\uF0E1"+
-        "\uF755\u0000\u0000\u0000\u0000\u0000\uE99C\u0000"+
-        "\u0000\uE9C3\u0000\uF7DF\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEEEF\u0000\u0000\u0000\u0000"+
-        "\uF9E5\uF633\u0000\uE7FC\uF9A9\u0000\uEEEE\u0000"+
-        "\u0000\u0000\uE5E5\u0000\u0000\u0000\u0000\u0000"+
-        "\uF2D0\u0000\uE1B1\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF6A2\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF3B2\u0000\uF3B1\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE1B2\u0000\uE83B\u0000\uE037\u0000\u0000"+
-        "\u0000\u0000\u0000\uECE2\uF8BC\uE7A4\u0000\u0000"+
-        "\uF24A\u0000\u0000\u0000\u0000\u0000\uF763\u0000"+
-        "\u0000\u0000\u0000\u0000\uF8FA\u0000\uE2A4\u0000"+
-        "\uE99D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF673\u0000\u0000\u0000"+
-        "\uF1AA\u0000\u0000\uF431\uE271\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF836\u0000\u0000\u0000\u0000"+
-        "\uF7E0\u0000\u0000\u0000\u0000\uF166\u0000\u0000"+
-        "\uED7E\uF7A1\u0000\u0000\uF8EF\u0000\u0000\u0000"+
-        "\uF7EB\uF233\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF03C\u0000\u0000\u0000\uE038\u0000\u0000"+
-        "\uF59C\u0000\u0000\u0000\u0000\uE1D6\uF998\u0000"+
-        "\u0000\u0000\uF559\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF764\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF736\u0000\uEA5A\uF456"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE6DA\u0000"+
-        "\uE4D0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE755\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF076"+
-        "\u0000\uF4DD\u0000\u0000\u0000\uED6A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF674\u0000"+
-        "\u0000\u0000\u0000\u0000\uF694\u0000\uEAC2\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7FD"+
-        "\u0000\u0000\u0000\uE198\u0000\u0000\uE4BA\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uED3F\u0000"+
-        "\u0000\u0000\u0000\uF7E1\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF336\u0000\u0000\u0000"+
-        "\uE0D3\u0000\u0000\u0000\uEB4C\u0000\uF55A\uE59C"+
-        "\u0000\uF9AA\uF7E2\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF547\uF9C2\uF940\u0000\uF9EC\uE072\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9BD"+
-        "\u0000\uF077\uEAC3\uE3D2\uE272\u0000\uE4A4\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF9AB\u0000\uEAE0"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF457\u0000\u0000\u0000"+
-        "\u0000\u0000\uEEF0\u0000\uE37E\u0000\u0000\uF4AA"+
-        "\u0000\u0000\u0000\uEA5B\uF648\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEBF5\uF3B3\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF6A3\u0000"+
-        "\u0000\uE039\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE2A5\u0000\u0000\uEAC4"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEBB0"+
-        "\u0000\u0000\uF34F\u0000\uF634\u0000\uECB6\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF856\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE391\u0000\u0000\uF9ED\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE9C4\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF999\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEE4F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEA3D\u0000\uF84F\u0000"+
-        "\u0000\u0000\u0000\u0000\uEDF1\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF1C4\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE435\u0000\u0000\uF9EE\u0000\u0000"+
-        "\u0000\uF5B6\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEBF6\uEA5C\u0000\u0000\uF96E\u0000"+
-        "\uF167\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE1DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE647\uE1B3\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF765\uEDD8\u0000\u0000\u0000"+
-        "\uE2EA\u0000\u0000\uE2D0\u0000\uF05C\u0000\u0000"+
-        "\u0000\u0000\uF03E\uF03D\u0000\u0000\uE4F1\u0000"+
-        "\uE4A5\u0000\u0000\u0000\u0000\u0000\u0000\uF6CF"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF234\u0000\u0000\u0000\u0000\uE334\u0000\u0000"+
-        "\uF432\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE392\u0000\u0000\u0000\u0000"+
-        "\uF433\u0000\uF6F8\u0000\u0000\u0000\u0000\uE343"+
-        "\u0000\u0000\uE8A9\u0000\u0000\uE4BB\uE07C\u0000"+
-        "\uF3A6\uE0D5\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF6E7\u0000\u0000\uE1DE\u0000\uF6A4\u0000"+
-        "\u0000\u0000\uF750\u0000\u0000\u0000\uE4DD\u0000"+
-        "\uE160\u0000\u0000\u0000\u0000\uE2A6\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF695\u0000\u0000\u0000"+
-        "\u0000\u0000\uEBF7\u0000\u0000\u0000\u0000\u0000"+
-        "\uE4DC\u0000\u0000\uF8A0\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF837\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF0D9\u0000\uE2A7\uF03F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uED91\u0000\u0000\u0000\uEFB9"+
-        "\uF3D8\u0000\u0000\uE768\u0000\u0000\uEB94\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEE44"+
-        "\uE99E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF4F1\u0000\u0000\u0000\uECD0\u0000\u0000\uF49D"+
-        "\u0000\uE8C6\uE393\u0000\uE394\u0000\u0000\u0000"+
-        "\uE2DC\u0000\uE4D1\u0000\u0000\uE141\uF6D8\u0000"+
-        "\uE0A8\uF0BC\uED4E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF56C\u0000"+
-        "\u0000\uE952\u0000\u0000\uF337\u0000\u0000\uEE50"+
-        "\u0000\u0000\uE07D\u0000\u0000\u0000\u0000\uEF7B"+
-        "\uEDE8\uE953\u0000\u0000\uF1DE\uE4F2\u0000\u0000"+
-        "\u0000\u0000\uE199\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE264\uEEAB\u0000\u0000\u0000\uE0C3"+
-        "\u0000\uEBB1\u0000\u0000\uF6B2\u0000\u0000\uE4F3"+
-        "\uE4D2\u0000\uF5C0\u0000\u0000\u0000\uEADD\u0000"+
-        "\u0000\uF295\uEEF1\u0000\uF9B4\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF458\u0000\u0000"+
-        "\u0000\uF4D2\u0000\u0000\uF296\u0000\uEC63\u0000"+
-        "\u0000\u0000\u0000\uE161\u0000\uEAEA\u0000\u0000"+
-        "\u0000\uEFBA\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE7D7\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF5CD\u0000\uF3F2\uF857"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE7F8\uE552\u0000\u0000\u0000\u0000\uF675\u0000"+
-        "\u0000\u0000\u0000\uE9C5\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEEF2\uF1DF\u0000\u0000\uE05B\u0000"+
-        "\u0000\uE8FA\u0000\u0000\u0000\uEF45\u0000\uE4A6"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF9B5\u0000"+
-        "\u0000\uF7C9\u0000\uED72\u0000\uF8BD\u0000\u0000"+
-        "\uE6A4\uE255\u0000\u0000\u0000\u0000\uE265\uE676"+
-        "\u0000\u0000\u0000\u0000\uEDBD\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEA5D\uF195\u0000\u0000\uF1E0"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF17C\uF8BE\uEAEB\u0000\uEBF8\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF7BE"+
-        "\u0000\u0000\u0000\u0000\uE395\uEB3A\uEF72\u0000"+
-        "\u0000\uEC64\uE49F\u0000\uEDA8\u0000\u0000\u0000"+
-        "\u0000\u0000\uE7D3\u0000\u0000\u0000\u0000\uE4DE"+
-        "\u0000\uF548\uF6BC\uE99F\u0000\uEF7C\uED77\u0000"+
-        "\u0000\uECF7\u0000\u0000\u0000\u0000\u0000\uF138"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF893\u0000"+
-        "\u0000\u0000\u0000\u0000\uEDF2\u0000\u0000\uE396"+
-        "\uE43F\uE975\u0000\u0000\u0000\u0000\uE335\uF3B4"+
-        "\uF941\uE19A\u0000\u0000\uE9C6\uF861\u0000\uF6DF"+
-        "\u0000\u0000\uF838\u0000\u0000\u0000\u0000\u0000"+
-        "\uF297\u0000\uEA5E\u0000\u0000\u0000\u0000\uEEF3"+
-        "\u0000\u0000\uF6AC\uF0C4\uF1E1\uEB3B\uE9C7\u0000"+
-        "\u0000\u0000\u0000\uE443\uE44F\u0000\u0000\u0000"+
-        "\uE05C\u0000\u0000\u0000\u0000\uF8BF\u0000\u0000"+
-        "\u0000\u0000\uEDFD\uE9E5\uE75D\u0000\u0000\u0000"+
-        "\u0000\u0000\uF196\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE397\u0000\u0000\uEF7D\uE362"+
-        "\u0000\uE7D8\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF676\u0000\u0000"+
-        "\uE8AA\u0000\u0000\u0000\uF6E0\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE769\u0000\uF533\u0000\u0000\uF56D\u0000"+
-        "\u0000\u0000\u0000\uF2D1\u0000\u0000\uE7B5\u0000"+
-        "\u0000\uF1AB\u0000\uECB7\u0000\u0000\u0000\u0000"+
-        "\uF24B\uE1B4\u0000\uEB95\uF05D\u0000\u0000\u0000"+
-        "\u0000\uF197\uEF7E\u0000\uE0A9\uF3AF\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE05D\u0000"+
-        "\uF139\u0000\uF47B\u0000\uF9EF\u0000\uF7F3\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEE51\u0000\u0000\uF168\u0000\u0000\u0000\uF1AC"+
-        "\u0000\uF05E\u0000\uEF6F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEA5F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE436\u0000\u0000\uEEF4\uE3D6\u0000\u0000\uEE52"+
-        "\uECE3\u0000\u0000\u0000\u0000\uED40\u0000\u0000"+
-        "\u0000\uE744\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF635\u0000"+
-        "\u0000\u0000\u0000\u0000\uF4DE\u0000\u0000\u0000"+
-        "\u0000\uE6A5\u0000\u0000\u0000\u0000\uF6E8\u0000"+
-        "\u0000\uEF56\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF8E6\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE9E6\u0000\u0000\u0000\uE9A0\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE76A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE83C\uF040\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uECB8\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE03A\uEBF9\u0000\uF041\u0000\u0000\u0000"+
-        "\u0000\uF47C\u0000\u0000\uF87E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF265\u0000\u0000\u0000\u0000\uF7F4\u0000"+
-        "\u0000\uE47C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF8FB\u0000\u0000"+
-        "\u0000\uF9F0\u0000\uEB4D\uE273\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF756\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEA3E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEAC5\u0000\u0000\uEDBE\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF1AD\uF87A\u0000\u0000\uE1EE\uF1A6\u0000\uF1AE"+
-        "\uF37D\u0000\uE9A1\u0000\uF1AF\uF99A\u0000\uE77B"+
-        "\u0000\u0000\u0000\uE19B\uE1B5\u0000\u0000\u0000"+
-        "\u0000\uF839\u0000\uEBDD\u0000\u0000\u0000\u0000"+
-        "\uEC65\uF1CF\u0000\u0000\u0000\uE9A2\u0000\u0000"+
-        "\uF7CA\u0000\uF078\u0000\uEDED\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE4EB\u0000\uEFD4"+
-        "\uEBFA\uED5C\u0000\uEBE4\uEF57\u0000\u0000\uE26B"+
-        "\u0000\u0000\u0000\uE965\u0000\uF6B5\uF995\uF395"+
-        "\uE23F\uF3B5\uF2D2\uEF58\uF0F1\u0000\u0000\u0000"+
-        "\u0000\u0000\uE0D4\uEB4E\uECF8\uF079\uF942\u0000"+
-        "\u0000\u0000\u0000\u0000\uEB96\u0000\uE2E0\u0000"+
-        "\uF235\u0000\u0000\uF83A\uEE53\uEBB2\uE03B\u0000"+
-        "\uECE4\uEFBB\u0000\u0000\u0000\u0000\u0000\uEC66"+
-        "\uF4F2\u0000\uF266\uF042\uE398\uF169\uE85B\uE2A8"+
-        "\u0000\u0000\u0000\u0000\uE9A3\u0000\u0000\u0000"+
-        "\uE76B\u0000\uF7CE\uEFD5\uECD1\u0000\u0000\uE44C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE73C\uF4CC"+
-        "\u0000\uE1FB\uF666\u0000\uEEF5\uEF91\uECF9\uE44B"+
-        "\uF4F3\uECFB\u0000\uEA60\uE240\u0000\uE699\uF3D9"+
-        "\u0000\u0000\u0000\u0000\u0000\uF5C1\uE954\u0000"+
-        "\uF5BB\u0000\uEA61\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE976\u0000\u0000\uEA62\u0000\u0000\uF1E2"+
-        "\uF298\uF05F\uF37E\uECFC\u0000\uE4DF\uE4F4\uEBB3"+
-        "\u0000\uEBB4\u0000\u0000\u0000\u0000\uF563\u0000"+
-        "\u0000\uEAC6\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEFD6\u0000\u0000\u0000"+
-        "\uE8AB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF636\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uECB9\uF0C5\uF539\uE1B6\uE49B\u0000\uE83D\uE473"+
-        "\uE2D1\u0000\u0000\u0000\u0000\uE0DC\uE19C\u0000"+
-        "\uE2DD\u0000\u0000\uEF39\u0000\uECBB\uECBA\u0000"+
-        "\u0000\uEB6A\u0000\u0000\u0000\uF299\u0000\u0000"+
-        "\u0000\u0000\u0000\uE943\u0000\u0000\u0000\u0000"+
-        "\uE4F5\u0000\uE6A6\u0000\uF645\uE6DB\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEBD5\u0000\u0000\uE57A"+
-        "\u0000\uEAA3\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF9DF\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE399\uF1D4\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE0AA\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uED6B\u0000\uEBFB\uE0A2\u0000\u0000\u0000"+
-        "\u0000\uE4E0\u0000\uED4F\u0000\uF8C0\u0000\uE84E"+
-        "\uED5D\u0000\uE649\u0000\u0000\u0000\uF2C0\u0000"+
-        "\uEBFC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF649\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEAC7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uED41\u0000\u0000\u0000\u0000\u0000\u0000\uE977"+
-        "\uE978\u0000\u0000\u0000\uF866\u0000\uE4F6\u0000"+
-        "\u0000\u0000\u0000\uF3DA\u0000\uF894\u0000\u0000";
-
-    private final static String innerIndex2=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEC9F"+
-        "\u0000\u0000\u0000\u0000\u0000\uE5CF\uE39A\u0000"+
-        "\u0000\uE1DF\u0000\u0000\uF5CB\u0000\uED92\uE0AB"+
-        "\u0000\uE6C4\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uECA0"+
-        "\u0000\uE9DA\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE83E\uE07E\u0000\u0000\u0000"+
-        "\uE5B9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uECA1\u0000\u0000\uEF73\u0000\u0000\uF4AB"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE2A9"+
-        "\u0000\u0000\u0000\uE4F7\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE593\u0000\u0000"+
-        "\uE274\u0000\uEF94\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEDF5\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEEAE\u0000\uE64A\u0000\uEAEC\uED50\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEF74\u0000\u0000"+
-        "\u0000\u0000\uE745\u0000\u0000\u0000\uED6C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF549\uF3B6\u0000"+
-        "\u0000\uEC6E\uEBB5\u0000\u0000\uE1EF\uF3A7\uE275"+
-        "\uE0DD\u0000\u0000\uE7E3\u0000\u0000\uF4AC\u0000"+
-        "\u0000\uE39B\uF13B\uEA63\uF6E9\u0000\u0000\uF7F5"+
-        "\u0000\u0000\u0000\u0000\u0000\uEBDE\uE0EE\u0000"+
-        "\u0000\u0000\uECBC\uF766\u0000\u0000\uE8EE\u0000"+
-        "\u0000\u0000\u0000\u0000\uF9F1\u0000\u0000\u0000"+
-        "\u0000\uF6B6\u0000\u0000\u0000\u0000\uF56E\u0000"+
-        "\u0000\uF47D\u0000\uE8D9\u0000\uF338\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEBFD\u0000\u0000"+
-        "\u0000\u0000\u0000\uEA64\u0000\uEB3C\u0000\u0000"+
-        "\u0000\u0000\u0000\uF1E3\u0000\u0000\uE4E1\u0000"+
-        "\uEAC8\u0000\u0000\u0000\u0000\uE7B6\u0000\uF9AC"+
-        "\uF2D3\u0000\u0000\u0000\uED51\uF77B\u0000\uE8AC"+
-        "\u0000\u0000\u0000\u0000\uF956\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE73D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF64A"+
-        "\u0000\uE8DF\uE4D3\uF757\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE05E\uF751\uE444\u0000\u0000\uE944"+
-        "\uF849\uE05F\u0000\uF943\uF07A\uF07B\uE39C\u0000"+
-        "\u0000\u0000\u0000\u0000\uF1E4\u0000\u0000\uE9E7"+
-        "\u0000\u0000\uEAC9\u0000\u0000\u0000\u0000\uEAED"+
-        "\u0000\u0000\u0000\u0000\u0000\uF24C\u0000\uF2C1"+
-        "\u0000\u0000\uE162\u0000\uE9A4\u0000\u0000\u0000"+
-        "\uEACA\u0000\u0000\u0000\u0000\u0000\uE4F8\uF3A8"+
-        "\u0000\u0000\u0000\uE1B7\u0000\uF2D4\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uED6D\uEAEE\uE0AC"+
-        "\uEFBC\u0000\u0000\u0000\u0000\u0000\uF07C\u0000"+
-        "\u0000\u0000\uEACB\u0000\u0000\u0000\u0000\u0000"+
-        "\uF7BF\uE63F\uE5C6\u0000\u0000\u0000\u0000\u0000"+
-        "\uE2AA\u0000\u0000\uE239\u0000\u0000\uE69A\u0000"+
-        "\u0000\u0000\uF3B7\uF29A\u0000\u0000\u0000\uE7D9"+
-        "\uF4DF\u0000\uF758\uE256\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE5E6\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF576\u0000\u0000\uEE55\uF2D5"+
-        "\u0000\u0000\uE0EF\uF96F\u0000\u0000\u0000\u0000"+
-        "\u0000\uE937\u0000\u0000\uE677\u0000\u0000\u0000"+
-        "\u0000\u0000\uF759\u0000\u0000\u0000\u0000\uECD2"+
-        "\u0000\uECBD\u0000\uE2E1\uF350\uF16A\u0000\uE9D7"+
-        "\uF8F0\u0000\u0000\uF13C\u0000\u0000\u0000\uF339"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF867\uF8C1"+
-        "\u0000\uE450\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEDB0\u0000\u0000\u0000\uF1E5\u0000\u0000"+
-        "\u0000\u0000\uE0AD\u0000\uF7B0\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF6A5\u0000\uE0AE\u0000\uE83F\u0000\uE746\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE4A7\uF8B2"+
-        "\u0000\uF9C4\u0000\uF13D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF8A1\u0000\u0000\u0000\uEDE9\uEFEE"+
-        "\u0000\uF4F4\uF795\uF351\uEA3F\uF740\u0000\u0000"+
-        "\uF4E0\uEEAF\u0000\u0000\u0000\u0000\u0000\uE8AD"+
-        "\u0000\uEE45\u0000\u0000\uF7A8\u0000\u0000\uE9D8"+
-        "\uEF69\uF2D6\u0000\u0000\u0000\uE4E2\u0000\uEC6F"+
-        "\u0000\u0000\uF970\uE6C8\uF9AD\u0000\u0000\u0000"+
-        "\uEAEF\uE163\uE4F9\u0000\u0000\u0000\u0000\uE592"+
-        "\uE8C7\uEA65\u0000\u0000\u0000\u0000\uF396\u0000"+
-        "\uE5D0\uEDD9\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF957\uE966\uEC70\u0000\u0000\u0000\uE840\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF4A3\u0000\uE4EC"+
-        "\u0000\uF55B\u0000\u0000\u0000\uF9C5\u0000\u0000"+
-        "\u0000\u0000\u0000\uECFD\u0000\uF7B1\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE39D\uF16B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF5BC\uF434"+
-        "\uE75E\uE75F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF5F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF671\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE447\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF8EC\u0000\uE9C8"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uED78"+
-        "\u0000\u0000\uE451\u0000\u0000\u0000\uF767\u0000"+
-        "\u0000\u0000\u0000\u0000\uE64B\uEA66\u0000\u0000"+
-        "\uF6BD\uF13E\u0000\u0000\u0000\uE371\u0000\uEB97"+
-        "\uF043\u0000\uE266\u0000\u0000\u0000\u0000\uE135"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF198\uEC71\uECBE\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF958\u0000\u0000"+
-        "\uE1F0\u0000\uF7F6\u0000\u0000\uEAF0\u0000\u0000"+
-        "\u0000\uEDBF\u0000\u0000\u0000\uE24F\u0000\u0000"+
-        "\u0000\u0000\uF971\uF1B0\uF9D1\uF64B\u0000\u0000"+
-        "\uF7CF\uF0DA\uE051\u0000\uE448\uE1F1\u0000\uECD3"+
-        "\uF9E6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEE7D\u0000\u0000"+
-        "\u0000\uECFA\u0000\u0000\uF33A\uF7D0\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF972\u0000\uF737\u0000"+
-        "\u0000\u0000\uEBE5\uF29B\u0000\u0000\u0000\uEEF6"+
-        "\uF07D\u0000\u0000\uF944\uF5C2\u0000\u0000\uE6DC"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF397\u0000\uE9E8\uE4ED\uF5FC\u0000\uE84F\u0000"+
-        "\uE19D\u0000\u0000\u0000\uE4FA\uF534\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF2D7\u0000\uE553"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF8E3\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF8ED\u0000\uEB3D\u0000\u0000\uF07E"+
-        "\uF8B3\uED52\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF677\uE46D\u0000\uEACC\u0000\u0000\uF959\u0000"+
-        "\u0000\uEDA9\uEB98\uF643\u0000\u0000\u0000\u0000"+
-        "\u0000\uEBFE\u0000\u0000\u0000\u0000\uE0F0\u0000"+
-        "\uF091\uF092\u0000\u0000\u0000\uE850\uF744\uF0F2"+
-        "\u0000\u0000\u0000\u0000\u0000\uED53\u0000\u0000"+
-        "\u0000\u0000\uEFD7\uED93\u0000\u0000\u0000\uE091"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE267"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF95A\u0000\u0000\u0000\uF4E1\u0000\u0000\uE0C4"+
-        "\u0000\u0000\u0000\u0000\uECE5\u0000\uE0C5\uF044"+
-        "\u0000\u0000\uEFBD\u0000\uE6C9\u0000\u0000\uF0DB"+
-        "\uF1B1\u0000\uE153\uF6BE\uF95B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF796\u0000\uE7B7\u0000\u0000"+
-        "\uF4D3\uF4D4\u0000\u0000\u0000\uF6E4\u0000\uF6D1"+
-        "\u0000\u0000\uE747\uE241\uE052\u0000\u0000\uF8B4"+
-        "\uE0C6\u0000\u0000\uF398\u0000\u0000\uE5E7\u0000"+
-        "\uF060\u0000\u0000\u0000\u0000\u0000\uE164\uE0AF"+
-        "\u0000\u0000\u0000\u0000\u0000\uF53A\uEFAF\u0000"+
-        "\u0000\uF5C3\uEFD8\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE9E9\u0000\u0000\u0000\uF3F3\u0000"+
-        "\uE5FB\uEA4B\u0000\u0000\uF59D\u0000\u0000\u0000"+
-        "\uF9F3\uF9F2\uF6A6\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE9C9\u0000\u0000\uE563"+
-        "\u0000\uE138\u0000\uE851\uE165\u0000\uE7E4\u0000"+
-        "\u0000\u0000\uF85A\u0000\u0000\u0000\uEDE3\u0000"+
-        "\u0000\u0000\uE4BC\u0000\u0000\u0000\uE092\u0000"+
-        "\u0000\u0000\u0000\uE354\u0000\u0000\u0000\uE060"+
-        "\uF83B\uF0EB\uEEF8\uE7E5\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE3D7\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF4A4\u0000\u0000\u0000\uE59D\uF973"+
-        "\uF868\u0000\uF4D5\u0000\uE2AB\u0000\u0000\uF0F3"+
-        "\uE5FC\u0000\u0000\u0000\u0000\u0000\u0000\uE4D4"+
-        "\uE1FC\u0000\uE7E6\u0000\uEC9B\uEC31\uF0D4\u0000"+
-        "\uEB99\uED42\uE19E\u0000\u0000\u0000\uF8E4\u0000"+
-        "\u0000\u0000\uF53B\u0000\u0000\u0000\u0000\uE34D"+
-        "\u0000\uE093\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF2B8\u0000\u0000\u0000\uE6C0\u0000"+
-        "\uF29C\uF9F4\u0000\u0000\uE4E3\u0000\uF8C2\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE5E8\uE8AE"+
-        "\uEBB6\uF747\u0000\u0000\u0000\u0000\u0000\uEB4F"+
-        "\uF8C3\uE9EA\u0000\uEC32\u0000\uF236\u0000\u0000"+
-        "\u0000\u0000\u0000\uF678\u0000\u0000\u0000\u0000"+
-        "\uF697\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE9CA\u0000"+
-        "\u0000\uE372\u0000\u0000\u0000\u0000\uE9A6\u0000"+
-        "\u0000\uE9EB\u0000\u0000\uED9B\u0000\u0000\uECAF"+
-        "\uE39E\u0000\u0000\u0000\uF59E\u0000\u0000\u0000"+
-        "\u0000\uE14C\uF6EA\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEDE4\uEAF1\u0000\u0000\uF6E1\u0000\uF7F7"+
-        "\uF2B9\u0000\u0000\uF768\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF7A9\u0000\u0000\u0000\u0000"+
-        "\u0000\uF769\u0000\u0000\u0000\uF24D\u0000\u0000"+
-        "\u0000\uE756\u0000\u0000\uED73\uF5CE\u0000\u0000"+
-        "\u0000\u0000\uE9D9\u0000\u0000\u0000\u0000\uE7E7"+
-        "\uE449\uE5C3\u0000\u0000\uE875\uE860\u0000\uE3D9"+
-        "\uE268\u0000\uE0DE\uF53C\uE89D\u0000\uF679\uEF95"+
-        "\uE2AC\uF392\u0000\uF59F\uE8C8\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE250\uECD4\uE3CF\uF3F5"+
-        "\u0000\uE1F2\u0000\uE2EB\u0000\u0000\u0000\uE1B8"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uECA6\uE3DA"+
-        "\u0000\uF435\u0000\u0000\u0000\u0000\u0000\uF436"+
-        "\u0000\uED5E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE4FB\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF3A9\u0000\u0000\u0000\uF459"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF2D8\uEE59\u0000\uE748\uF895\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF4B5\u0000\u0000\uF734\u0000\u0000\uE3F3"+
-        "\uEE58\u0000\u0000\u0000\u0000\uF76A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE979"+
-        "\uEA67\u0000\u0000\u0000\u0000\u0000\uE0DF\u0000"+
-        "\u0000\u0000\uE2EC\u0000\u0000\u0000\u0000\uF56F"+
-        "\u0000\u0000\uE3F4\uE44A\u0000\u0000\u0000\uEAF2"+
-        "\u0000\u0000\u0000\uEBB7\u0000\u0000\u0000\u0000"+
-        "\uEC33\uE4FC\u0000\u0000\uF1E6\u0000\u0000\u0000"+
-        "\u0000\u0000\uE8C9\u0000\u0000\u0000\uED9C\u0000"+
-        "\uE2DE\u0000\u0000\uE260\u0000\u0000\u0000\u0000"+
-        "\uE5D3\uF4F5\uF6AE\u0000\u0000\uF2C8\u0000\uE1F3"+
-        "\uF5CF\uEDF3\uF352\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE061\u0000\u0000\u0000\uF093\u0000\uE336\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7DA"+
-        "\uF33B\u0000\u0000\u0000\u0000\u0000\uF0E7\u0000"+
-        "\u0000\u0000\uEDC0\uF945\u0000\u0000\u0000\u0000"+
-        "\u0000\uED54\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE139\uF9C6\u0000"+
-        "\u0000\u0000\u0000\u0000\uF045\u0000\uEDAA\uEABA"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEBDF\u0000\uE861"+
-        "\u0000\u0000\u0000\u0000\uEBB8\u0000\uEF96\uE4FD"+
-        "\u0000\u0000\u0000\u0000\uEC34\u0000\u0000\u0000"+
-        "\u0000\u0000\uF45A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE876\uF6B3\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF9CD\u0000\u0000\u0000\uF4B6\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF267\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF5C4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE734\u0000\u0000\u0000\u0000\u0000\uF437"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE7B8\uE7B9\uF2C9\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE65E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF6CB\uEAAE\uEF97\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE445\u0000\u0000\u0000\uE4D5\u0000"+
-        "\u0000\u0000\u0000\u0000\uF55C\uE89E\u0000\u0000"+
-        "\u0000\u0000\u0000\uE7E8\u0000\uF6EB\uF5C9\u0000"+
-        "\uF4BC\u0000\uE862\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE4B5\u0000\u0000\u0000\u0000"+
-        "\u0000\uEF46\u0000\u0000\uE65F\uF54A\u0000\uF6C9"+
-        "\u0000\u0000\uE13A\u0000\u0000\uF353\uE166\u0000"+
-        "\u0000\u0000\uE363\u0000\uE4BD\u0000\u0000\u0000"+
-        "\uE8FB\u0000\uE0E0\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE4E4\uF699\u0000\u0000\uE5BA\uF4CD\uE0E1"+
-        "\u0000\u0000\u0000\u0000\uF0F4\u0000\u0000\u0000"+
-        "\u0000\u0000\uF53D\u0000\uF93A\u0000\u0000\u0000"+
-        "\u0000\u0000\uF6EC\u0000\u0000\u0000\uEF98\u0000"+
-        "\uE877\u0000\u0000\u0000\uF6CC\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEDC1\u0000\u0000\u0000\u0000\uEB7E\u0000\u0000"+
-        "\u0000\u0000\u0000\uE5FD\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE276\uF93B\uE5BB\u0000\u0000\uF438"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEC35\uE1B9"+
-        "\uF094\uE0C7\u0000\uE1F4\u0000\u0000\uE8AF\uF2D9"+
-        "\u0000\u0000\u0000\u0000\u0000\uE1BA\u0000\u0000"+
-        "\uF99B\u0000\u0000\u0000\u0000\uEAF3\uE277\uE852"+
-        "\u0000\uE2AD\u0000\u0000\u0000\u0000\uEEF9\uF738"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF4E2\u0000"+
-        "\u0000\u0000\uE094\uEAA4\u0000\u0000\uE554\u0000"+
-        "\u0000\u0000\u0000\u0000\uE167\uEDC2\u0000\u0000"+
-        "\u0000\u0000\uE1BB\u0000\uF2DA\uF268\u0000\uE9A7"+
-        "\uEC36\u0000\u0000\u0000\u0000\u0000\uEB50\u0000"+
-        "\u0000\u0000\uE640\uF75A\u0000\uF99C\u0000\uE7FE"+
-        "\u0000\u0000\u0000\u0000\uEA40\u0000\u0000\u0000"+
-        "\uE9EC\uE878\u0000\u0000\u0000\u0000\u0000\uE570"+
-        "\u0000\uE69B\u0000\uE1D7\uEA68\u0000\u0000\uF49A"+
-        "\u0000\uED66\u0000\u0000\uE355\uF53E\u0000\uE9A8"+
-        "\u0000\u0000\u0000\uF1C5\uF4D6\u0000\u0000\uEA69"+
-        "\uECE6\u0000\u0000\u0000\u0000\u0000\u0000\uE4A8"+
-        "\u0000\uE8B0\u0000\u0000\uEDDA\uECBF\u0000\u0000"+
-        "\u0000\uE8B1\u0000\u0000\u0000\uE5E9\u0000\u0000"+
-        "\u0000\u0000\u0000\uEB51\uF2DB\u0000\u0000\uF379"+
-        "\u0000\u0000\uE6B2\u0000\u0000\u0000\u0000\uE39F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE7E9\u0000\u0000\uE3A0\u0000\uF17D\uE4A9\u0000"+
-        "\uF439\uF354\u0000\u0000\uEC72\uEFEF\u0000\u0000"+
-        "\u0000\uF7D1\u0000\u0000\uEFD9\u0000\u0000\u0000"+
-        "\u0000\u0000\uEF6A\uE853\uE854\uE555\u0000\uEEFA"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE1E0\uECB0"+
-        "\u0000\uE8B2\uF8C4\u0000\uF4E3\u0000\uE7A5\uF8E7"+
-        "\uE9CB\uE364\u0000\uEE46\uEB3E\uF9DA\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE945\uEB9A"+
-        "\uEEB1\u0000\u0000\u0000\u0000\uF5F0\u0000\uE76C"+
-        "\uF1C6\u0000\u0000\u0000\u0000\uEBB9\u0000\uECC0"+
-        "\uF7C0\uEFF0\u0000\u0000\uE7DB\u0000\uF4E4\u0000"+
-        "\u0000\u0000\uE946\uED79\u0000\u0000\u0000\u0000"+
-        "\u0000\uF355\uECC1\uF95C\uF95D\u0000\u0000\u0000"+
-        "\u0000\uF45B\u0000\uF45C\u0000\u0000\u0000\uED5F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF3DB\u0000\uF869\u0000\uF3B8\uF9F5\uEB9B"+
-        "\u0000\u0000\u0000\u0000\uEEFB\uF947\uF974\uF8C5"+
-        "\uECE7\uE749\u0000\uF69A\u0000\u0000\uE955\uE168"+
-        "\u0000\u0000\u0000\uEB3F\uF577\u0000\uF2DC\uE2FC"+
-        "\uF2DD\u0000\uF43A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF9BE\u0000\u0000\uE03C"+
-        "\uF9BB\uF9C7\u0000\u0000\u0000\u0000\uEEB2\u0000"+
-        "\uF061\uEAF4\u0000\u0000\u0000\u0000\uE3EC\uED6E"+
-        "\uEDC3\u0000\u0000\u0000\u0000\uE7A6\u0000\u0000"+
-        "\uE1BC\u0000\uF4E5\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF1D5\u0000\u0000\uE7BA\u0000"+
-        "\u0000\u0000\uF1E7\uF8B5\uF77C\u0000\u0000\u0000"+
-        "\u0000\uEB77\u0000\uE169\u0000\u0000\uE556\u0000"+
-        "\u0000\u0000\u0000\u0000\uEEA5\u0000\uE5F5\uE4BE"+
-        "\u0000\uF99D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uED94\u0000"+
-        "\u0000\uEAF5\u0000\u0000\uEF9A\uF77D\u0000\u0000"+
-        "\uE257\u0000\u0000\u0000\u0000\u0000\uF9F6\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEF68\u0000\uE1D8\uEED6\uE16A\u0000\u0000\uE073"+
-        "\uEAF6\uF357\uF356\u0000\uE74A\u0000\uF3F4\uF592"+
-        "\uF5CC\u0000\u0000\uF975\u0000\u0000\u0000\u0000"+
-        "\uF055\uF095\u0000\uE9DB\u0000\uE967\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEA9F\uF49B\u0000\uE5C7"+
-        "\u0000\u0000\u0000\uE760\u0000\uF358\uE3A1\uE3A2"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE7D4\uE678"+
-        "\uE7CA\u0000\uE841\uE757\uE972\uF4CE\uF5F4\u0000"+
-        "\u0000\uF3B9\u0000\u0000\uE863\u0000\uF67A\u0000"+
-        "\u0000\u0000\uE2F5\u0000\u0000\uF9AE\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE062\u0000"+
-        "\u0000\uEAB4\u0000\u0000\u0000\u0000\uE6DD\uF84A"+
-        "\uF237\uF5BD\u0000\uF797\u0000\u0000\uF1E8\u0000"+
-        "\u0000\u0000\u0000\u0000\uE571\u0000\uE3A3\uEBD6"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF7F8\u0000\uE8CA"+
-        "\uE0F9\uE564\u0000\uE7DC\u0000\uF24E\u0000\uF6ED"+
-        "\u0000\u0000\u0000\uE47E\u0000\u0000\uEBE6\uF6F9"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE9ED"+
-        "\u0000\uEF6B\u0000\uE8B3\u0000\u0000\u0000\uE3F7"+
-        "\uEB40\u0000\u0000\uE572\u0000\uF667\u0000\uE6F9"+
-        "\u0000\u0000\uE76D\u0000\uE1FD\uF43B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE1BD"+
-        "\uF752\u0000\u0000\uF43C\u0000\u0000\uE03D\uE03E"+
-        "\uE2AE\u0000\u0000\u0000\u0000\u0000\uECC2\u0000"+
-        "\u0000\u0000\u0000\u0000\uE947\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE8DA"+
-        "\uE7BB\uE095\uF663\uEE9A\uF097\u0000\u0000\u0000"+
-        "\u0000\u0000\uF098\u0000\u0000\uF69B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE2AF\u0000\u0000\uE063\u0000\u0000\uE03F"+
-        "\uE440\uF3BA\u0000\uE6B3\uECC3\uF4FD\uEA6A\u0000"+
-        "\u0000\u0000\u0000\uEA6B\u0000\u0000\uF2DE\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEC73\uF29D\u0000\u0000\uEAF7\uE6CA"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE278\uE8DB\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF3BB\u0000\u0000\u0000\u0000\uEFF1"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF847\uE356\u0000\u0000\uE13B\uF238\u0000\u0000"+
-        "\uE0FA\uF7F9\uE19F\uE4FE\u0000\u0000\u0000\u0000"+
-        "\uED60\u0000\u0000\u0000\u0000\u0000\uF47E\u0000"+
-        "\uE565\uEACD\u0000\uF948\uE3D0\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF45D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF6D2\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE064"+
-        "\u0000\uE5D9\u0000\u0000\u0000\uE76E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE1D9"+
-        "\u0000\u0000\u0000\uF239\uF64C\u0000\u0000\uE16B"+
-        "\u0000\u0000\u0000\u0000\u0000\uF359\u0000\uF99E"+
-        "\u0000\uEF59\uF5A0\u0000\u0000\u0000\u0000\uEEFC"+
-        "\uE6DE\u0000\u0000\u0000\u0000\uEA6C\u0000\uF33C"+
-        "\uE1A0\uE1E1\u0000\uEBBA\u0000\uE8EF\uE842\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE3A5\uE948\u0000\u0000"+
-        "\u0000\uE798\u0000\uE3A4\u0000\uE1E2\u0000\u0000"+
-        "\u0000\u0000\uE97A\u0000\u0000\uF399\u0000\uF35A"+
-        "\uE34E\u0000\uE9DC\u0000\u0000\u0000\u0000\uE566"+
-        "\uE4D6\u0000\u0000\u0000\u0000\u0000\u0000\uF1D0"+
-        "\uE1A1\u0000\u0000\u0000\u0000\u0000\uEAB5\u0000"+
-        "\u0000\u0000\uEAF8\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE531\uE242\u0000\u0000\u0000\u0000\u0000"+
-        "\uEF5A\u0000\u0000\u0000\u0000\uF0F5\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uECD5\uF5D0\u0000"+
-        "\u0000\u0000\uF5A1\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7A7"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEDAB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEE5B\u0000\uF5F1"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEDC5\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF7A3\uEB6B\uF67B\u0000\uE0F1"+
-        "\u0000\uE7EA\uF5A2\u0000\u0000\u0000\uE6D1\u0000"+
-        "\uE3F8\uF09A\uF09B\uE843\u0000\u0000\u0000\u0000"+
-        "\uF2DF\u0000\u0000\uF3EF\u0000\uEDF6\uF24F\uEC74"+
-        "\u0000\u0000\u0000\u0000\u0000\uE34F\u0000\uF83C"+
-        "\uF5D1\uEEB3\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEFBE\u0000\u0000"+
-        "\u0000\u0000\u0000\uF45E\uE8B4\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF95E\u0000\uE9EE"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEEB4\u0000"+
-        "\u0000\u0000\u0000\u0000\uE6B4\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF6B4\u0000\u0000\u0000\u0000"+
-        "\u0000\uE1BE\u0000\uE879\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE2B0\uF6D9\uF4E6\u0000\u0000"+
-        "\uE269\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE23A\u0000\uE0C8\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE337\u0000\uF35B\u0000\uE357"+
-        "\u0000\u0000\uED55\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE8E0\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE5DA\u0000\uE6A7\u0000\u0000\u0000\uF250"+
-        "\u0000\uF798\u0000\u0000\u0000\u0000\uF5D2\uF1E9"+
-        "\u0000\uE7BC\u0000\uEDC6\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF5A3\u0000\u0000"+
-        "\uE864\uEC37\uF8FC\u0000\u0000\uF3DC\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE096\u0000\u0000\u0000"+
-        "\uEF9C\u0000\u0000\uE279\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEFF8\uEC75\u0000\u0000\u0000\u0000"+
-        "\uE349\uE594\u0000\u0000\u0000\u0000\u0000\uE3A6"+
-        "\u0000\uEACE\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF996\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE4AA\u0000\u0000\u0000\uE13C\u0000\u0000\u0000"+
-        "\u0000\uF2E0\u0000\u0000\u0000\uEDE5\uE365\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE8FC"+
-        "\u0000\u0000\u0000\u0000\uF976\u0000\u0000\u0000"+
-        "\u0000\u0000\uE0FE\uF1EA\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEA41\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF7E3\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE532\uE2F6\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE660\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE5EA\uF3EE\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF85B\u0000"+
-        "\u0000\u0000\u0000\uEDA1\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE5B1\u0000\u0000\u0000"+
-        "\u0000\u0000\uE2ED\u0000\uF1EB\u0000\u0000\u0000"+
-        "\u0000\u0000\uE5B2\u0000\u0000\u0000\uE5BC\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF9E2\uF4AD\u0000\uF9DB\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEFB0\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE3A7\u0000\u0000\uF9E3\uE243\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF9E4\uF85E"+
-        "\u0000\u0000\u0000\u0000\uE040\u0000\uF6A7\u0000"+
-        "\uE2B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEE32"+
-        "\u0000\uF946\uF43D\uF2E1\uF4AE\uE956\uE7EB\u0000"+
-        "\u0000\u0000\uEF70\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEBA8\u0000\u0000\u0000\u0000\uE5F6"+
-        "\uE2FD\u0000\u0000\uEA6D\u0000\u0000\u0000\uE7D1"+
-        "\u0000\u0000\u0000\uED7A\uF45F\u0000\uF6BF\u0000"+
-        "\u0000\uEC76\uEC38\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uECD6\u0000"+
-        "\uF1D1\u0000\u0000\u0000\u0000\u0000\uEFF9\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE641\uEA42"+
-        "\u0000\u0000\uEB78\u0000\u0000\uE4AB\u0000\uF0DC"+
-        "\u0000\u0000\uEAAF\u0000\uE053\u0000\u0000\uF29E"+
-        "\u0000\uF9C3\u0000\u0000\u0000\uF0F6\uE2B2\u0000"+
-        "\u0000\u0000\u0000\uE7EC\u0000\uE7BD\u0000\uE76F"+
-        "\u0000\u0000\uE548\uF0BE\uE9EF\u0000\uE9F0\uE9F1"+
-        "\uE9F2\u0000\u0000\uE7BE\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF8C6\uE2B3\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF29F\u0000\u0000\u0000\u0000\u0000\u0000\uED3B"+
-        "\u0000\uE855\u0000\uE77C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE3A8\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEC39\u0000\u0000\uEA4C"+
-        "\uEEB5\u0000\u0000\u0000\u0000\u0000\uE8F0\u0000"+
-        "\uF2E2\uF3F0\uE2B4\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE8F1\u0000"+
-        "\uEB41\u0000\u0000\u0000\u0000\uEAA5\u0000\uF7D2"+
-        "\u0000\u0000\uEEFD\u0000\u0000\uEE33\uF8F1\uE0B0"+
-        "\uF43E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE1E7\u0000\uEF6C\u0000\u0000\uEED7\u0000\u0000"+
-        "\uF6C0\u0000\uE373\u0000\u0000\u0000\uE831\u0000"+
-        "\u0000\u0000\uE14D\u0000\u0000\uE3A9\uE9CC\u0000"+
-        "\u0000\uECFE\uE3AA\uEF3A\u0000\uF046\uF7FA\uEE5C"+
-        "\uF668\u0000\u0000\u0000\uE557\u0000\u0000\u0000"+
-        "\uE7CB\u0000\uE7D2\uE4CB\uE799\uE839\uF5F8\u0000"+
-        "\u0000\uEA6E\uF43F\uF739\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE758\u0000\u0000\uF251\u0000"+
-        "\u0000\u0000\u0000\uF7C1\u0000\u0000\u0000\u0000"+
-        "\uE9F3\uF09C\u0000\uF64D\uEBBB\uE1BF\uF564\uEE5D"+
-        "\u0000\uF95F\uF8A2\u0000\uEB6C\u0000\u0000\u0000"+
-        "\u0000\uF54B\uE865\u0000\uF7B2\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF8F2\u0000\uE8F6\u0000\uEA6F"+
-        "\u0000\u0000\u0000\uE8F2\u0000\u0000\u0000\u0000"+
-        "\u0000\uF76C\uF6EE\uF0E8\u0000\uE49C\u0000\u0000"+
-        "\uF3BC\u0000\u0000\uF86A\u0000\u0000\uE87A\uE856"+
-        "\uF6C1\u0000\u0000\uEEB6\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex3=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEDC7\uE63C\u0000\u0000\u0000"+
-        "\u0000\uE957\u0000\u0000\u0000\u0000\u0000\uEBA9"+
-        "\u0000\uEC3A\u0000\uE5A6\u0000\u0000\uE567\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF460\u0000\uF09D"+
-        "\u0000\uEB6D\uF8F3\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF3BD\u0000\u0000\uEC77\uF9D7\u0000"+
-        "\uE258\uF047\u0000\uF950\u0000\uF9E7\uF6EF\u0000"+
-        "\u0000\uE6B5\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF2BA\uF3DD\u0000\uEA43\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEF5B\u0000\u0000\uF76D\u0000"+
-        "\u0000\uF8C7\uE5C8\u0000\uE6DF\u0000\uE9A9\u0000"+
-        "\u0000\u0000\u0000\u0000\uEFB1\u0000\u0000\uF83D"+
-        "\uF669\uF896\u0000\u0000\u0000\u0000\u0000\uF73A"+
-        "\u0000\u0000\u0000\u0000\u0000\uEE7E\u0000\uE16C"+
-        "\uEBBC\uEB91\u0000\u0000\uEFBF\uF99F\uEE5E\u0000"+
-        "\u0000\uEBD7\u0000\uEE5F\u0000\uF593\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uED95"+
-        "\u0000\u0000\uED9D\u0000\u0000\uF7E4\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF2E3\u0000\u0000\uE2EE\uF64E\uEB42\uF9A0\uE3AB"+
-        "\u0000\u0000\u0000\uE6FA\u0000\u0000\u0000\uF8C8"+
-        "\u0000\uEC67\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE533\uF39A\uE6A8\u0000\u0000\u0000\uEBE7\u0000"+
-        "\u0000\uE4BF\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF2E4\u0000\uE6C5\uF0E2\u0000\u0000\uF977\u0000"+
-        "\u0000\uED32\u0000\uEC78\u0000\uEE60\u0000\uF8E8"+
-        "\uF578\uEDF4\uF54C\uF565\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEAB6"+
-        "\u0000\uF949\uF252\uE097\u0000\u0000\u0000\uF2E5"+
-        "\uE0E2\uE534\u0000\uEA70\uE89F\uED56\uEF4E\u0000"+
-        "\u0000\u0000\u0000\uEB6E\uF644\uF062\u0000\uF7FB"+
-        "\u0000\u0000\uEB52\u0000\uE074\u0000\uEEB7\u0000"+
-        "\uF09F\u0000\uE7DD\u0000\uE844\uF23A\uF8E9\u0000"+
-        "\u0000\u0000\u0000\uE8CB\uE845\u0000\u0000\u0000"+
-        "\u0000\u0000\uF3BE\u0000\u0000\uE4AC\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF8C9\u0000"+
-        "\uEACF\u0000\u0000\uE4C0\uECD7\u0000\uF2E6\uF960"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEFC0"+
-        "\u0000\u0000\u0000\uF5D3\u0000\u0000\uF16C\uF6B7"+
-        "\u0000\u0000\uF048\uE3F9\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE958\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF049\u0000\u0000\u0000\u0000\u0000\uF3DE\u0000"+
-        "\u0000\u0000\u0000\u0000\uE6B6\uE2B5\u0000\uE7A8"+
-        "\u0000\u0000\uF17E\u0000\u0000\uE9AA\u0000\u0000"+
-        "\u0000\u0000\uE1A2\uEF3E\u0000\u0000\u0000\uEBBD"+
-        "\u0000\uF461\u0000\u0000\u0000\u0000\uEFC1\u0000"+
-        "\u0000\u0000\uE49E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE8B5\u0000\uF4E7\uE7A0\u0000\u0000"+
-        "\u0000\uF961\u0000\uF1B2\uF53F\u0000\uF8A3\u0000"+
-        "\u0000\uF951\u0000\uF23B\uE535\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF594"+
-        "\u0000\u0000\u0000\u0000\uF269\u0000\u0000\u0000"+
-        "\uF8CA\u0000\u0000\u0000\u0000\u0000\uE1E3\uE74B"+
-        "\u0000\uEDDB\uF799\u0000\u0000\u0000\uF664\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE6A9"+
-        "\u0000\uE0C9\u0000\u0000\uEE61\uF35C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE73E\u0000\uF7D3\uE5FE\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE74C\uF440\u0000\u0000\u0000"+
-        "\u0000\uEC3B\uF4E8\u0000\u0000\u0000\u0000\u0000"+
-        "\uF2C2\u0000\u0000\u0000\u0000\u0000\u0000\uF1EC"+
-        "\u0000\uEEB8\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE8A0\u0000\u0000\uE14E\u0000\u0000\uF49E"+
-        "\uE87B\u0000\uEC68\uF1D6\u0000\u0000\uE661\uEB43"+
-        "\u0000\u0000\uF962\u0000\uF0C8\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE4C1\uF35D\u0000"+
-        "\uE2F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF1D2\u0000\uE568\uE959\uE6F1\u0000"+
-        "\u0000\uEABB\u0000\u0000\uF4A5\u0000\u0000\u0000"+
-        "\uF55D\u0000\u0000\u0000\u0000\uF3BF\uF741\u0000"+
-        "\uEFFA\u0000\u0000\u0000\uF8CB\u0000\u0000\uE065"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF7D4\uF6CA\u0000\u0000\uE658"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF978\uF4BD"+
-        "\u0000\uF2A0\u0000\uEEFE\u0000\u0000\u0000\u0000"+
-        "\u0000\uE4C2\u0000\u0000\u0000\u0000\uE4B6\u0000"+
-        "\uE13D\uF69C\uE642\uE468\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEED8\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uECA5\u0000\u0000"+
-        "\u0000\u0000\uEEB9\u0000\u0000\u0000\u0000\uF33D"+
-        "\uF8CC\uF0A1\u0000\u0000\uE536\u0000\u0000\u0000"+
-        "\u0000\uF8CD\u0000\uE5BD\uF3DF\u0000\u0000\uF69D"+
-        "\u0000\uEA44\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE5EB\u0000"+
-        "\u0000\uEDC8\u0000\u0000\u0000\uF8A4\uE549\u0000"+
-        "\u0000\uEA71\u0000\uED33\u0000\u0000\u0000\uE6B7"+
-        "\u0000\uF77E\u0000\u0000\u0000\uEA45\u0000\u0000"+
-        "\uE662\u0000\uF7D5\uEEBA\uF0D5\uE5F7\uF2E7\uEBBE"+
-        "\u0000\u0000\u0000\uF83E\u0000\u0000\u0000\uE679"+
-        "\uE67E\u0000\u0000\u0000\u0000\u0000\u0000\uEEBB"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF15B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE5B3\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE244\u0000\u0000\u0000"+
-        "\uF8A5\uEBEE\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF6A8\u0000\u0000\u0000\u0000\uF8CE\u0000\u0000"+
-        "\u0000\u0000\u0000\uE74D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF8FD\u0000\u0000\u0000\u0000"+
-        "\uF979\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE2B6\u0000\u0000\u0000\uF1C7\uF23C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE16D\u0000\u0000"+
-        "\u0000\u0000\uF637\u0000\u0000\u0000\uEE9C\u0000"+
-        "\u0000\u0000\uF5A4\u0000\u0000\u0000\u0000\u0000"+
-        "\uF9DC\uF1B3\uE259\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF2E8\u0000\u0000\uEBBF\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF86B\uE0E3\uF6A9\u0000\uF8A6"+
-        "\u0000\u0000\u0000\uE949\u0000\u0000\u0000\uF3C0"+
-        "\uF1C8\uF2C3\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE63D\u0000\u0000\uF9CE\u0000\u0000\u0000\uEF31"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF8F4\uE5A7\u0000\u0000\u0000\uF3F6\u0000\uEE63"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE16E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF742\u0000\u0000\u0000\uE97B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF9B6\u0000\u0000\u0000"+
-        "\u0000\uEDEA\u0000\u0000\uF3E0\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE8CC\uE9CD\u0000\u0000\u0000\uE558\u0000"+
-        "\u0000\uE7ED\u0000\u0000\u0000\u0000\uF5A5\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEE9D\u0000\u0000\u0000\u0000\u0000\uEE64\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9C8"+
-        "\u0000\uE631\uF9BF\u0000\uF963\u0000\uF2A1\u0000"+
-        "\uEEBC\u0000\u0000\u0000\u0000\u0000\uE3EE\u0000"+
-        "\u0000\uEE65\u0000\u0000\uEFF2\u0000\uEAB0\u0000"+
-        "\u0000\u0000\u0000\u0000\uE770\uF94A\uF9AF\uF35E"+
-        "\u0000\uE8E1\u0000\u0000\uEDC9\u0000\uF1B4\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEB53\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uECD8\u0000\u0000\u0000"+
-        "\u0000\uEFFB\uF038\u0000\u0000\u0000\u0000\uF9B7"+
-        "\u0000\u0000\uF8A7\u0000\uEFC2\u0000\u0000\u0000"+
-        "\u0000\uF9F7\u0000\u0000\u0000\u0000\u0000\uEC69"+
-        "\u0000\u0000\uE97C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEF32\u0000\u0000\u0000"+
-        "\u0000\uEE92\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF9F8\uF9F9\u0000\u0000\u0000\uF64F\u0000"+
-        "\u0000\uEEA7\u0000\uEE67\u0000\u0000\u0000\u0000"+
-        "\uE595\uE559\u0000\u0000\u0000\u0000\uE69C\u0000"+
-        "\uE6F2\u0000\uEBC0\u0000\uE8E2\uEE68\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEEBD"+
-        "\u0000\u0000\u0000\u0000\u0000\uF35F\uF4BE\uEC3C"+
-        "\u0000\u0000\u0000\u0000\u0000\uF5B7\uEB92\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF9B8\uECE8\u0000\uE537\uEF9E"+
-        "\uF862\u0000\u0000\u0000\u0000\u0000\uF791\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE663\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE5B4\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF360\u0000\uF6F0\uF243\u0000\u0000"+
-        "\uF04A\u0000\uF063\u0000\u0000\uF1C9\uE9AB\u0000"+
-        "\u0000\u0000\uEDAC\uF9A1\u0000\uEAD0\uF143\u0000"+
-        "\uEAD1\u0000\u0000\u0000\u0000\u0000\uF1ED\uF748"+
-        "\uF6FA\u0000\u0000\u0000\uF73B\u0000\u0000\u0000"+
-        "\u0000\u0000\uF570\u0000\u0000\u0000\u0000\u0000"+
-        "\uE54A\uED43\u0000\uEFDA\u0000\uEA46\u0000\uE7BF"+
-        "\u0000\uE7C0\uE691\u0000\u0000\u0000\u0000\uE7CC"+
-        "\u0000\uE83A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEAE5\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF6E5\u0000\u0000\u0000\uE142\u0000\u0000"+
-        "\uEAF9\uE6E0\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE54B\u0000\u0000\u0000\u0000\uF9FA"+
-        "\u0000\u0000\u0000\u0000\uE143\u0000\u0000\uE8F3"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEAD2\u0000\uE25A\u0000\uF26A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uED74\u0000"+
-        "\uF8CF\u0000\u0000\u0000\u0000\u0000\u0000\uE2B7"+
-        "\u0000\uF253\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE27A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEC3D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE6E1\uF897\u0000\u0000\uE5C9\uF73C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEED9\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF4E9\u0000"+
-        "\u0000\u0000\u0000\uE77D\uECC4\uF393\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEF75\u0000\u0000"+
-        "\u0000\uEB9C\uF254\uE7DE\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF0A2\uF0A3"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF952\uF04B"+
-        "\u0000\u0000\u0000\u0000\uEF3B\uEA72\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF1EF\u0000\uEF33\u0000\u0000\u0000\u0000\uE2F1"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE54C\u0000\uF97A\u0000\u0000\u0000\u0000\u0000"+
-        "\uEEBE\u0000\uF994\u0000\u0000\uE644\u0000\u0000"+
-        "\uEC3E\u0000\uE4B7\uF85C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF86C\u0000\uF1B5\uEBE3"+
-        "\u0000\uEF3C\u0000\uEF6D\u0000\u0000\uF2E9\u0000"+
-        "\u0000\u0000\u0000\u0000\uF54D\u0000\uE2B8\uEFDB"+
-        "\uE3AC\u0000\u0000\u0000\u0000\u0000\u0000\uE857"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0C9"+
-        "\u0000\uEF5C\u0000\u0000\u0000\uEA47\u0000\u0000"+
-        "\u0000\u0000\uE64C\uE4E5\u0000\u0000\u0000\u0000"+
-        "\u0000\uF86D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE866\u0000\uE041\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE858\uEAA6\u0000\uF7B3\uF462\u0000\uE054"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE25B\u0000"+
-        "\u0000\uE1F5\u0000\u0000\u0000\uF9B0\uE5A8\u0000"+
-        "\uF3C1\u0000\u0000\uEC79\uE95A\uF144\uF850\u0000"+
-        "\u0000\uF8A8\uE338\u0000\u0000\uE87C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7EE"+
-        "\u0000\uEB9D\u0000\u0000\u0000\uF2EA\uF86E\u0000"+
-        "\u0000\uEB54\u0000\uE2B9\u0000\uE5CA\uE6E2\uEC3F"+
-        "\u0000\uE6B8\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEF5D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF66A\u0000\u0000\u0000\u0000"+
-        "\uF2A2\uEC6A\uF69E\u0000\u0000\uF8D0\uE3AD\u0000"+
-        "\uE1E4\u0000\uE3AE\uE97D\uEF5E\u0000\uF39B\uE245"+
-        "\uEE9E\u0000\u0000\uE6FB\uE366\uE9F5\uF6F1\u0000"+
-        "\uF69F\u0000\uE8F7\u0000\u0000\u0000\u0000\uF8EA"+
-        "\uEFDC\uE7C1\u0000\uF5F2\uEB55\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF064\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF7C2\u0000\uF04C"+
-        "\u0000\uE455\uF8D1\uEEC0\uF0A5\u0000\uEAFA\uECA2"+
-        "\uE6B9\u0000\uEFC3\u0000\uEF9F\uEF3F\u0000\u0000"+
-        "\uF463\uF8A9\uE735\u0000\u0000\u0000\u0000\uE5CB"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE358\u0000"+
-        "\u0000\u0000\uE3AF\uE6E3\u0000\u0000\u0000\uEB56"+
-        "\u0000\uE632\u0000\uF1F0\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE6F3\u0000\u0000\u0000\uF964\u0000\uE867\uE16F"+
-        "\u0000\uF464\u0000\uE3B0\u0000\uE170\u0000\uE8FD"+
-        "\uF4BF\u0000\uF361\u0000\u0000\u0000\u0000\u0000"+
-        "\uF94B\u0000\uEC40\u0000\u0000\uEE35\u0000\u0000"+
-        "\u0000\uEC6B\u0000\u0000\u0000\uEADE\u0000\uEB57"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF491\u0000"+
-        "\u0000\u0000\uE171\u0000\u0000\u0000\u0000\uE67A"+
-        "\u0000\u0000\u0000\u0000\uEEC2\u0000\u0000\u0000"+
-        "\uE246\u0000\uF4C0\u0000\uE1FE\u0000\u0000\u0000"+
-        "\uF8D2\u0000\uF79A\uF6FB\u0000\u0000\uEF4F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEF47\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF1B6"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE94A\u0000\u0000\uE144\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF3F7\u0000\u0000\u0000\uEF48\u0000\u0000"+
-        "\uE098\u0000\uED34\uF566\u0000\u0000\u0000\uEAE6"+
-        "\u0000\u0000\u0000\uEAA7\u0000\uEAE7\uEBC1\u0000"+
-        "\uEFC4\u0000\u0000\uE95B\uEFC5\u0000\u0000\u0000"+
-        "\uF2A3\uF0A6\uE0A3\uECE9\u0000\u0000\u0000\uE3FB"+
-        "\uF2A4\u0000\uF2EB\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE344"+
-        "\u0000\u0000\u0000\u0000\uE1A3\u0000\u0000\uEF76"+
-        "\u0000\uF2A5\u0000\uE4CC\uE87D\u0000\u0000\u0000"+
-        "\u0000\uE6BA\u0000\uF465\uF5E5\uE7EF\u0000\u0000"+
-        "\u0000\u0000\uF7B4\u0000\u0000\uE5D4\uF9CF\u0000"+
-        "\u0000\u0000\uE8E3\u0000\u0000\u0000\u0000\uF3E1"+
-        "\uF146\u0000\u0000\u0000\u0000\uF8FE\uE4D7\u0000"+
-        "\uE3B1\u0000\uE0B1\u0000\u0000\u0000\u0000\uE3B2"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE0B2\uF3C2"+
-        "\u0000\u0000\uF571\uF7B5\u0000\u0000\uEBC3\uEBC2"+
-        "\u0000\uF0F7\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEAA8\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE0CA\u0000\u0000"+
-        "\u0000\u0000\u0000\uEE49\u0000\u0000\u0000\u0000"+
-        "\u0000\uF76E\uF7AA\uE099\u0000\uF1B7\u0000\u0000"+
-        "\uE4B8\uF466\u0000\u0000\uE569\uF255\uF492\u0000"+
-        "\u0000\u0000\uE042\u0000\u0000\uE94B\u0000\uF3F8"+
-        "\u0000\u0000\u0000\u0000\u0000\uF147\u0000\u0000"+
-        "\u0000\u0000\uEDCA\u0000\uF650\uF9DD\u0000\u0000"+
-        "\uE573\uE172\u0000\uF6D4\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE6E5\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE4C3\u0000\uE736\u0000\uF651\u0000\u0000\u0000"+
-        "\u0000\u0000\uE9F6\u0000\uE1C0\u0000\u0000\u0000"+
-        "\uEDDC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEDCB\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEBC4\u0000\u0000\u0000\u0000\u0000\uEF40"+
-        "\uF540\uF4EA\uE87E\u0000\uE6BB\u0000\uEC41\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE6AA\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE69D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uED6F\u0000\uE066\u0000"+
-        "\u0000\u0000\uF0A8\u0000\u0000\u0000\uE8FE\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF652\u0000\u0000\uF2BB\u0000\u0000\u0000"+
-        "\u0000\uE59F\u0000\u0000\uEB58\u0000\u0000\u0000"+
-        "\uEF49\u0000\uF2A6\u0000\u0000\u0000\u0000\u0000"+
-        "\uE1A4\u0000\u0000\uE596\uE8A1\uE8DC\uE8DD\u0000"+
-        "\u0000\u0000\u0000\u0000\uF26C\u0000\uE0CB\uF965"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE27B\u0000"+
-        "\uE1C1\u0000\u0000\uF8D3\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF7AB\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF5D4\u0000\u0000\u0000\u0000\uE7A9"+
-        "\u0000\u0000\uEFDD\uE8CD\u0000\u0000\uE9CE\u0000"+
-        "\uEEC3\u0000\uF15C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF7EC\u0000\u0000\u0000\uE0CC\u0000"+
-        "\u0000\u0000\u0000\uEB9E\uE538\u0000\uF1D3\uE791"+
-        "\u0000\uF467\u0000\uE09A\uE891\u0000\u0000\uE664"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE7CD\u0000"+
-        "\u0000\u0000\uE77E\u0000\uF451\u0000\u0000\u0000"+
-        "\uEAD3\u0000\u0000\u0000\uE892\u0000\uEC7A\u0000"+
-        "\u0000\uEB9F\u0000\u0000\uE79A\u0000\u0000\u0000"+
-        "\uF6AF\uE846\u0000\uE067\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF468\u0000"+
-        "\uE79B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF86F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE2EF"+
-        "\uE7C2\u0000\uF362\u0000\uED61\u0000\u0000\u0000"+
-        "\uF4B7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF870\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF2EC\u0000\u0000\u0000\u0000"+
-        "\u0000\uEC42\u0000\uE54D\u0000\u0000\uE7CE\u0000"+
-        "\u0000\u0000\u0000\uF572\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE539\u0000\u0000\u0000\u0000\uE1C2\uEEDA"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF469\u0000\u0000\u0000\u0000"+
-        "\u0000\uE7AA\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE74E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE93D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEC7B\uE69E\u0000\u0000"+
-        "\uE09B\u0000\u0000\uE56A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF567\uE131\u0000\u0000\uE2BA"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF5B8"+
-        "\u0000\u0000\u0000\uE7C3\uE378\u0000\u0000\u0000"+
-        "\u0000\u0000\uECC5\uF0F8\u0000\uF441\u0000\u0000"+
-        "\u0000\uE2BB\u0000\u0000\u0000\uE4AD\uEF71\uE27C"+
-        "\u0000\u0000\u0000\uEB44\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEA73\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE9F7\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF442\uF4F6\uF66B"+
-        "\u0000\u0000\u0000\u0000\uE6FE\u0000\u0000\u0000"+
-        "\u0000\u0000\uF76F\u0000\uF6F2\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE339\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEE6A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF5A6\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE6BC\uE173\u0000\u0000\uEE6B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE9DD\u0000\u0000\u0000"+
-        "\u0000\uE3B3\u0000\u0000\u0000\u0000\u0000\uF2ED"+
-        "\u0000\u0000\u0000\u0000\uE66E\uED96\uEBEF\u0000"+
-        "\u0000\uE9F8\u0000\u0000\u0000\u0000\u0000\uEF5F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE075\u0000\u0000\u0000\uE931"+
-        "\u0000\uEB45\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF93C\uF93D\uE737\u0000\u0000\u0000"+
-        "\u0000\uF1B8\u0000\u0000\u0000\uE8B6\u0000\u0000"+
-        "\u0000\u0000\uE692\uF4AF\u0000\u0000\uE1A5\u0000"+
-        "\uE893\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE738\u0000\u0000\u0000\uE174\u0000\u0000\uE3B4"+
-        "\u0000\u0000\u0000\u0000\u0000\uE068\u0000\u0000"+
-        "\u0000\u0000\u0000\uE894\u0000\u0000\u0000\u0000"+
-        "\u0000\uF5A7\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF5A8\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEE36\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE5EC\uE5F8\uE895\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uECC6\u0000\u0000\u0000\uEA74\u0000"+
-        "\uEA75\uE3B5\u0000\u0000\u0000\u0000\u0000\uE3B6"+
-        "\uE3B7\uF443\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEFDE\u0000\u0000\u0000\u0000\u0000\uF363\uF444"+
-        "\u0000\u0000\uF364\uE0E4\uF8D4\uF5E6\uECEA\u0000"+
-        "\uEA76\u0000\u0000\u0000\u0000\uEAD4\u0000\u0000"+
-        "\uF79B\u0000\u0000\u0000\u0000\uF33E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE3B8\u0000\u0000\u0000\u0000\uE66F"+
-        "\u0000\uE367\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF931\uF2EE\uE968"+
-        "\u0000\uEFDF\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEDDD\uF9FB"+
-        "\u0000\u0000\uEB59\u0000\u0000\u0000\uE659\u0000"+
-        "\u0000\uE53A\u0000\uEDCC\u0000\u0000\u0000\u0000"+
-        "\u0000\uEFE0\u0000\u0000\u0000\uE368\uF932\uE54E"+
-        "\uEC43\uEA77\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE94C\uE446\uF5D5\u0000\u0000\u0000\u0000"+
-        "\u0000\uE231\uF5A9\u0000\u0000\uE9F9\u0000\u0000"+
-        "\uE9FA\u0000\u0000\u0000\u0000\u0000\u0000\uF365"+
-        "\u0000\u0000\u0000\u0000\uF66F\u0000\uF46A\uED7B"+
-        "\u0000\uF493\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF149\u0000\u0000\u0000\u0000"+
-        "\uF9FC\u0000\u0000\u0000\u0000\uEBAA\u0000\u0000"+
-        "\uE069\u0000\u0000\uF2EF\u0000\uF5AA\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF19B\u0000\u0000\uF73D"+
-        "\u0000\uF452\uF653\u0000\uE6D2\u0000\u0000\uF7A2"+
-        "\uF366\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF39C\u0000"+
-        "\u0000\uF670\u0000\u0000\u0000\u0000\uEFF3\uF453"+
-        "\u0000\u0000\u0000\uE53B\uE043\uE1A6\u0000\uE1C3"+
-        "\uE1DA\u0000\u0000\u0000\u0000\u0000\uE7CF\u0000"+
-        "\u0000\uF654\u0000\u0000\u0000\uF26D\uEEC4\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEC44"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEAE2\uEEDB\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEF41\u0000\uF93E\u0000\u0000\u0000\u0000"+
-        "\uEDCD\u0000\u0000\u0000\uF87B\u0000\uE2BC\u0000"+
-        "\u0000\uE2E2\uE1F6\u0000\u0000\uF2F0\u0000\uF54E"+
-        "\u0000\uE55D\u0000\u0000\uF4B8\u0000\u0000\u0000"+
-        "\uEFA1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF494\uF4EB\u0000\uF367\u0000\u0000"+
-        "\uE2D7\u0000\u0000\u0000\u0000\u0000\u0000\uE2DF"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEF50\uEF51\u0000\u0000\u0000\uE2E3\uEFA2"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE33A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF4C1\uE33B\u0000\uE574"+
-        "\u0000\u0000\uF2BC\uE731\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7DF"+
-        "\u0000\uF4D7\u0000\u0000\u0000\uE94D\u0000\uE175"+
-        "\uF1F1\u0000\u0000\uF3E2\u0000\uE56B\u0000\u0000"+
-        "\u0000\u0000\uEC45\u0000\u0000\uE076\u0000\uE4AE"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE176\u0000"+
-        "\u0000\uF3D3\uF5E7\u0000\u0000\u0000\u0000\uE06A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF8EE"+
-        "\u0000\uEBC5\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEAE9\u0000\uF26E\u0000\u0000\uF6C2\u0000"+
-        "\uE732\u0000\u0000\u0000\u0000\u0000\uE9AC\u0000"+
-        "\u0000\u0000\u0000\u0000\uF33F\uE64D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEBAB\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF7B6\u0000"+
-        "\u0000\uE597\u0000\uE359\uF2A7\uEC7C\u0000\uE8EA"+
-        "\uE25C\uF5E8\uF6D5\u0000\uE4CD\u0000\uF4FE\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE345\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEBA0\u0000\uEAFB\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEE6D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEF34\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE0CD"+
-        "\u0000\u0000\u0000\uF2A8\u0000\u0000\u0000\uF244"+
-        "\u0000\u0000\u0000\u0000\uE868\uE3B9\u0000\uEAA9"+
-        "\u0000\u0000\uF4B0\u0000\u0000\uE154\u0000\u0000"+
-        "\u0000\uE247\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF2A9\u0000\u0000"+
-        "\u0000\uEAD5\u0000\u0000\uF1D7\u0000\u0000\u0000"+
-        "\uF256\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF2BD\uF966\u0000\u0000\uE8F4\u0000\uF2AA\uF749"+
-        "\u0000\uF5E9\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uECD9\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEBC6\u0000\u0000\u0000\uE54F\u0000\u0000\u0000"+
-        "\u0000\uEA78\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF37A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF4C2\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE4AF\u0000"+
-        "\u0000\uE06B\u0000\u0000\u0000\u0000\u0000\uF967"+
-        "\u0000\u0000\uF1D8\uEBC7\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF568\uE643\uE9AD"+
-        "\u0000\u0000\u0000\uE5BE\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF3C3\uF26F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE67B\u0000\u0000\u0000\uF569\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE6E6\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE847\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE9FB\u0000\u0000\u0000\u0000"+
-        "\u0000\uE9CF\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE733\u0000\u0000\uE869\u0000\uF368"+
-        "\uF2C4\u0000\u0000\u0000\u0000\u0000\u0000\uEBD8"+
-        "\u0000\u0000\u0000\u0000\u0000\uF3D4\u0000\uF1F2"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE5DB\u0000"+
-        "\u0000\uE5DC\uF4C4\uE0D7\u0000\u0000\u0000\u0000"+
-        "\u0000\uEC46\u0000\u0000\u0000\u0000\uF2F1\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF8D5\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE4D8\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE9D0\uF369"+
-        "\uE0B3\u0000\u0000\u0000\u0000\u0000\u0000\uE5DD"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE1A7\u0000\u0000\uE33C\u0000";
-
-    private final static String innerIndex4=
-        "\uE3BA\u0000\uF3C4\u0000\uEDB3\uF8F5\uEFE1\uF9E0"+
-        "\uF94C\u0000\uE832\uE833\u0000\uE431\u0000\u0000"+
-        "\uE491\u0000\u0000\u0000\uEC7D\u0000\u0000\uEA79"+
-        "\uE26C\uF445\uE374\uE9D1\u0000\u0000\u0000\u0000"+
-        "\uEBC8\uE8B7\uEAE3\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF1B9\uF3C5\u0000\uF4CF\uE6AB"+
-        "\uEBAC\u0000\u0000\uECEB\u0000\uF257\u0000\u0000"+
-        "\u0000\uEBC9\uE09C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF39D\uF871\uF36A\uE177\uE896\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE14F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE27D\u0000"+
-        "\u0000\uE5A9\uF872\u0000\u0000\u0000\uE375\u0000"+
-        "\uF0D6\u0000\uF16F\u0000\u0000\u0000\uEAFC\u0000"+
-        "\u0000\uF6D6\uEA7A\uE0B4\u0000\u0000\uF2BE\u0000"+
-        "\u0000\uE145\u0000\u0000\u0000\u0000\u0000\uE2BD"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF2F2\uEC47"+
-        "\u0000\u0000\u0000\uE178\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF39E\u0000\u0000\u0000"+
-        "\uE670\u0000\uF3C6\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEC48\uF0AB\u0000\u0000"+
-        "\u0000\uE0B5\uE761\u0000\uF55E\uF4F7\u0000\u0000"+
-        "\uE6C6\u0000\uE3BB\uF6AA\u0000\uF1CA\uE6D3\uE79C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF655"+
-        "\u0000\u0000\uE3CC\uE9FC\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEAFD\u0000"+
-        "\uF7E5\u0000\uEB5A\u0000\u0000\uF49F\uE4B0\u0000"+
-        "\uF595\uE859\u0000\uEE6E\u0000\u0000\u0000\u0000"+
-        "\uF74A\uEF60\u0000\u0000\uE79D\u0000\u0000\uF065"+
-        "\u0000\u0000\u0000\u0000\uE633\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF656\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF46B\uED9E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEF42\u0000\u0000"+
-        "\u0000\u0000\u0000\uE86A\u0000\uF46C\uF8D6\uEFB2"+
-        "\u0000\uF23D\u0000\uF873\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE97E\u0000\u0000\uF5EA\uEE70"+
-        "\u0000\uF39F\u0000\u0000\u0000\u0000\u0000\uE6AC"+
-        "\u0000\u0000\u0000\u0000\u0000\uF5C5\uF270\u0000"+
-        "\u0000\uE8E5\u0000\uE9DE\u0000\u0000\uE7F0\uEFA3"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF3F9\u0000\uF454\uEB5B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEFA4\u0000"+
-        "\u0000\uEC49\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uECB1\uF97B\uE1A8\u0000\uE146\u0000\u0000"+
-        "\uF36B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEE4A\u0000\u0000\uE1A9\u0000\u0000\u0000"+
-        "\u0000\u0000\uF4C3\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEBD9\u0000\u0000\uF2AB"+
-        "\u0000\u0000\u0000\uEEC5\u0000\u0000\uEB79\u0000"+
-        "\uF4C5\u0000\u0000\uE550\uE5BF\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE9AE\u0000"+
-        "\uF7FC\u0000\uE150\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEDA2\u0000\u0000\u0000"+
-        "\uE248\u0000\u0000\u0000\uE762\uF7D6\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF3AA\uE261\u0000\u0000\uF657\u0000"+
-        "\uE8EB\u0000\uEAFE\u0000\u0000\uE771\u0000\uF6F3"+
-        "\u0000\uE6E7\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE5A0\u0000\u0000"+
-        "\uE3BC\u0000\uEDCF\u0000\uE0B6\u0000\uE848\u0000"+
-        "\u0000\u0000\u0000\u0000\uE1C4\u0000\u0000\u0000"+
-        "\u0000\u0000\uE64E\u0000\u0000\u0000\uEC4A\u0000"+
-        "\u0000\u0000\u0000\u0000\uE2D8\u0000\u0000\u0000"+
-        "\uEB5C\uF0F9\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF9FD\u0000\u0000\u0000\u0000\u0000"+
-        "\uE6E8\uE0D8\u0000\u0000\u0000\uEFE2\u0000\u0000"+
-        "\u0000\uEF4A\u0000\u0000\u0000\uECC7\u0000\u0000"+
-        "\u0000\u0000\uF15D\u0000\uF15E\u0000\uE64F\u0000"+
-        "\u0000\u0000\uECA7\u0000\uEAD6\uF9E8\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF271"+
-        "\uF638\uE9FD\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF74B\u0000\uEF61\u0000\u0000\u0000\u0000"+
-        "\uF7D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE27E\u0000\u0000\uF15F\u0000\u0000\u0000"+
-        "\uEFA5\uE665\u0000\uE1C5\u0000\uF1BA\uE3BD\u0000"+
-        "\u0000\uE2BE\u0000\u0000\uF14B\u0000\u0000\u0000"+
-        "\uE441\u0000\u0000\u0000\u0000\uE179\u0000\uE7C4"+
-        "\uEFFC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE3BE\u0000\u0000"+
-        "\u0000\u0000\u0000\uF14C\u0000\u0000\uEDAD\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF6B0\u0000\uE17A"+
-        "\u0000\u0000\u0000\uE4C4\u0000\u0000\uE650\u0000"+
-        "\u0000\u0000\uE69F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEBA1\u0000"+
-        "\uEA4D\u0000\uF639\u0000\u0000\u0000\uE834\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE634"+
-        "\uF5C6\u0000\uEBA2\uEFC6\u0000\u0000\u0000\uF455"+
-        "\u0000\u0000\u0000\u0000\u0000\uF579\uE67C\uF0D3"+
-        "\u0000\u0000\u0000\u0000\uF14D\uEC6C\uEA7B\uF36C"+
-        "\u0000\uF0BF\u0000\uE6CE\uE3BF\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF5AB\u0000"+
-        "\u0000\u0000\u0000\uF7FD\u0000\uE06C\u0000\u0000"+
-        "\u0000\uE1C6\uF446\u0000\u0000\uE9FE\u0000\u0000"+
-        "\u0000\uE147\uE8B8\u0000\u0000\u0000\u0000\uE379"+
-        "\u0000\uE26D\uF0C0\u0000\uF9A2\u0000\u0000\u0000"+
-        "\u0000\u0000\uF75B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF066\uF3B0\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE8CE\u0000\uF6C3\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE8CF\uE0A4\u0000\u0000\uF770\u0000"+
-        "\u0000\uF8D7\u0000\u0000\uF0CA\uEB31\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE25D\u0000\u0000\uE56C\u0000\u0000\u0000"+
-        "\uF9D8\u0000\u0000\u0000\u0000\uE498\u0000\u0000"+
-        "\u0000\u0000\uF447\u0000\u0000\uF898\uF63A\uF899"+
-        "\uE776\u0000\uF541\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEF62\u0000\uE055\uE17B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEC7E\u0000\u0000\u0000\u0000"+
-        "\u0000\uEC4B\u0000\uF6AD\u0000\u0000\u0000\uF771"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF4EC\u0000\u0000\u0000\u0000\uEA31\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uED9F\u0000\u0000\uECEC\u0000"+
-        "\uE9AF\uE9B0\u0000\u0000\uE0B7\uEF63\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEBA3\uE470\u0000"+
-        "\u0000\u0000\u0000\uF3A0\u0000\u0000\u0000\u0000"+
-        "\uEFA6\uE0F2\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF1F3\uE969\uEB5D\u0000\u0000\u0000\u0000\uF6DA"+
-        "\uE8B9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE13E\u0000\uE86B\u0000\u0000\u0000\u0000\uE1C7"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE9B1\u0000\uE73F\uECA3\u0000\u0000"+
-        "\uE291\u0000\u0000\uF495\u0000\u0000\u0000\u0000"+
-        "\uF743\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEB5E\u0000\uF5FD\u0000\u0000"+
-        "\u0000\u0000\uF0EC\u0000\u0000\uE4C5\uF97C\uE46B"+
-        "\uE57B\u0000\uEA32\u0000\u0000\u0000\uEDE6\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF340\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE5C4\u0000\u0000\u0000\u0000\u0000\u0000\uF1F4"+
-        "\u0000\u0000\u0000\uECED\u0000\uEF52\u0000\uF1F5"+
-        "\uE6FC\u0000\uF1BB\u0000\u0000\uF63B\u0000\u0000"+
-        "\u0000\u0000\u0000\uF448\uF658\u0000\u0000\u0000"+
-        "\u0000\u0000\uE4E6\uF46D\uE2BF\u0000\uF0AC\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE2C0\u0000\uEE38"+
-        "\uF9E9\u0000\uE2C1\u0000\uEB6F\uEA7C\u0000\u0000"+
-        "\u0000\u0000\uEB32\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF54F\uEC91\u0000\uE7F1\uF3C7"+
-        "\u0000\uE0B8\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF7FE\uE8BA\uE897\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF67C\uE86C\uF874"+
-        "\u0000\uEB5F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE9B2\u0000\u0000\u0000\u0000\uEE39\u0000\uF2F3"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF4ED\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF0FA\u0000\uF7E6\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE06D\uE5DE"+
-        "\u0000\uE06E\uEAE4\u0000\u0000\u0000\uEE9F\u0000"+
-        "\uF5AC\u0000\u0000\u0000\u0000\u0000\uED97\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEFE3\u0000\uF1CB\uE2E4\u0000"+
-        "\u0000\u0000\uE763\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE9B3\uE57C\u0000\u0000\uF449\u0000\uEAB7"+
-        "\u0000\u0000\u0000\u0000\u0000\uE0CE\uF8D8\u0000"+
-        "\u0000\uE369\u0000\u0000\uE9D2\uF6F4\uEEDC\uED35"+
-        "\u0000\uF933\u0000\uE8BB\u0000\u0000\u0000\uF44A"+
-        "\uEFFD\uE35A\u0000\uF5D6\uE7C5\uED44\u0000\uF1A7"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF04D\uEEA0\u0000\uF6C4\uF5AD\u0000\uE7E0"+
-        "\u0000\u0000\u0000\uE044\u0000\u0000\uF772\uE2C2"+
-        "\u0000\uF14E\u0000\u0000\u0000\uEDB4\uE1C8\uF258"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEEC8\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE1C9\uF7B7\u0000"+
-        "\u0000\uF3E8\uE7F2\uE8F5\uE045\uE7C6\u0000\u0000"+
-        "\u0000\uE759\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7AB"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF1BC\u0000\u0000\uE764\u0000\u0000\u0000\uE96A"+
-        "\u0000\uEC4C\u0000\u0000\uF97D\uF170\uE4A0\u0000"+
-        "\uEFC7\uEE3A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEC92\u0000\u0000\u0000\u0000\u0000\u0000\uF84B"+
-        "\u0000\uF5AE\uF8AA\u0000\u0000\u0000\u0000\uF19D"+
-        "\u0000\uF14F\uF968\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE575\u0000\u0000\u0000\uF7C3"+
-        "\u0000\u0000\u0000\uF272\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE6E9\uF1F6\u0000\u0000\u0000\uEA7D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE17C\u0000"+
-        "\uECEE\u0000\u0000\u0000\u0000\u0000\uEF64\u0000"+
-        "\u0000\u0000\uF89A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE9B4\uED45\uE740\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE765\u0000\u0000"+
-        "\u0000\uF57A\u0000\u0000\u0000\uE249\u0000\u0000"+
-        "\u0000\uE671\uE2D2\u0000\uE346\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE232\u0000\u0000\uF4EE\u0000"+
-        "\u0000\u0000\u0000\u0000\uF4F8\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE95C\u0000\uE35B\u0000\u0000\u0000\uF934"+
-        "\uE1CA\uE6D4\uEA33\u0000\uED70\u0000\u0000\u0000"+
-        "\u0000\uF259\u0000\u0000\u0000\uEC6D\u0000\u0000"+
-        "\u0000\u0000\u0000\uF5FE\uE53C\u0000\u0000\u0000"+
-        "\u0000\u0000\uE5D1\u0000\uE792\uF753\uF067\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF5D7\u0000\u0000\uE74F\u0000\u0000\u0000"+
-        "\u0000\uF9C0\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF0AD\u0000\u0000\u0000\u0000\uE5AA\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEEA8\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF25A"+
-        "\u0000\u0000\u0000\uE077\u0000\u0000\u0000\u0000"+
-        "\u0000\uF773\u0000\uE56D\u0000\u0000\uF068\u0000"+
-        "\u0000\u0000\u0000\uF8D9\uF1F7\u0000\u0000\uEDB5"+
-        "\u0000\u0000\u0000\u0000\u0000\uE33D\u0000\u0000"+
-        "\u0000\u0000\uF3F1\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEC4D\u0000\u0000\u0000\uECC8\u0000\u0000\u0000"+
-        "\u0000\uE7D5\u0000\u0000\uEAAA\u0000\u0000\u0000"+
-        "\u0000\uE8BC\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF774\u0000\u0000\u0000\u0000\u0000"+
-        "\uF3FA\u0000\u0000\uEDB6\uF4EF\u0000\u0000\uF8DA"+
-        "\uEBE0\u0000\uE7AC\u0000\uF5EB\u0000\uEB46\u0000"+
-        "\u0000\uEFC8\u0000\uE0CF\u0000\uECC9\u0000\u0000"+
-        "\u0000\uEA7E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEC4E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE991\u0000\uE635\u0000"+
-        "\u0000\u0000\u0000\u0000\uEC93\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE6A0\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE7A1\u0000\uE750\uE96B\u0000\u0000\uF1BD"+
-        "\uEAB8\u0000\uF035\u0000\u0000\u0000\uE6AD\u0000"+
-        "\u0000\uF4F9\u0000\uF1F8\u0000\uF5C7\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEBCA\uF0E3\u0000\uF46E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF75C\u0000\uF069"+
-        "\u0000\uE4C6\u0000\uE8E6\u0000\u0000\u0000\u0000"+
-        "\u0000\uF5AF\u0000\u0000\u0000\u0000\uE292\u0000"+
-        "\u0000\u0000\u0000\uEFFE\u0000\u0000\u0000\u0000"+
-        "\u0000\uF8B6\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEC94\u0000\u0000\u0000\u0000"+
-        "\uE2F2\uF6B9\uE7F3\u0000\u0000\uEBCB\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE86D\u0000\u0000\uE849"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0FB"+
-        "\u0000\uE0B9\u0000\u0000\uF1F9\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEB70\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF550\u0000"+
-        "\uF9BC\uEAB1\uECEF\u0000\u0000\u0000\u0000\uEB33"+
-        "\uF9B9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF341\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE1CB\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF1BE\u0000\u0000\u0000\uE5C0\uECF0\uF1FA"+
-        "\u0000\u0000\u0000\u0000\u0000\uEFE4\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE5ED\uEEDD\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE598\uEDB7\u0000\u0000"+
-        "\u0000\uE8E7\uEC4F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF25B"+
-        "\u0000\u0000\uE6F4\uF36D\u0000\u0000\u0000\uE23B"+
-        "\u0000\u0000\uEEDE\u0000\u0000\u0000\uE666\uEBCC"+
-        "\u0000\u0000\uEF43\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEDEE\uE932"+
-        "\u0000\u0000\uEB60\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE5B5\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE5A1"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF8DB\u0000"+
-        "\uF7CB\u0000\u0000\u0000\uE0F3\uF535\u0000\u0000"+
-        "\u0000\u0000\u0000\uF858\uE667\u0000\uEFE5\uF8DC"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9D0"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF8F6\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE835\u0000\uE8BD\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF172\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE1F7\uF36E\u0000\u0000\u0000"+
-        "\u0000\uF659\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEA91"+
-        "\u0000\u0000\u0000\uE4B1\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF97E\u0000\u0000\u0000"+
-        "\u0000\uEF53\u0000\uF3C8\u0000\u0000\u0000\uE293"+
-        "\u0000\u0000\u0000\u0000\uF7ED\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF496\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uED46\u0000"+
-        "\uF5B9\u0000\uE992\uECF1\u0000\u0000\u0000\u0000"+
-        "\uEF35\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF44B\u0000\uEA34\u0000\uE85C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE079\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uECDA\u0000\uF969"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF06A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF7C4\u0000"+
-        "\uECA4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF8DD\u0000\uF2CA\u0000"+
-        "\uEF54\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE5CC\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF0D7\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7AD"+
-        "\u0000\u0000\uF8AB\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE4D9\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE5A2\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF66E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE898\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEB61\u0000\u0000\uEFA8"+
-        "\u0000\u0000\uF5F9\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF83F\u0000\uF0FC\u0000\u0000\uEB7A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uECB2\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE5C5"+
-        "\u0000\u0000\uF3E3\uE5EE\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE1CC\u0000\u0000\u0000\u0000\uF1D9\u0000"+
-        "\u0000\u0000\u0000\uE751\u0000\u0000\u0000\u0000"+
-        "\uF87C\u0000\u0000\u0000\u0000\u0000\uF3EB\u0000"+
-        "\u0000\u0000\u0000\u0000\uF84C\uEE72\u0000\u0000"+
-        "\u0000\u0000\uF875\uEC9C\u0000\u0000\u0000\uE046"+
-        "\u0000\uED47\u0000\uF06B\u0000\uF5FA\u0000\u0000"+
-        "\u0000\uF8AC\uE2C3\uF0FD\u0000\u0000\u0000\u0000"+
-        "\uF79C\u0000\u0000\uEAB9\u0000\u0000\u0000\u0000"+
-        "\uEBF1\u0000\uE434\u0000\u0000\u0000\u0000\uF5FB"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE36A\uE36B"+
-        "\u0000\uF04E\uE7B1\u0000\u0000\u0000\u0000\u0000"+
-        "\uE047\u0000\u0000\uE4E7\u0000\uF775\u0000\u0000"+
-        "\u0000\u0000\uE4B2\u0000\u0000\u0000\uEC50\uF46F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE1E5\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF7AC\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE1CD\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF23E\uE63E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE6EA"+
-        "\u0000\u0000\u0000\u0000\uEEE0\uF0AE\u0000\u0000"+
-        "\u0000\uE2D9\u0000\u0000\uE95D\uF1FB\u0000\uEA92"+
-        "\u0000\uE6EB\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEA35\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEAD7\uE8D0\uE8D1\u0000\u0000"+
-        "\uE5A3\u0000\u0000\u0000\u0000\uF342\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE96C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE078\u0000\uF776\uE95E\u0000\u0000\u0000\u0000"+
-        "\uF06C\uE8D2\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEFB3\u0000\u0000"+
-        "\u0000\u0000\uF6DB\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uECA8\u0000"+
-        "\uE6AE\u0000\u0000\uEB71\u0000\u0000\u0000\u0000"+
-        "\u0000\uE0BA\u0000\u0000\uEDD1\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE36C"+
-        "\u0000\u0000\u0000\u0000\uE5C1\u0000\u0000\u0000"+
-        "\u0000\u0000\uE75A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uECA9\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEB34"+
-        "\u0000\uEFA9\u0000\uE4C7\u0000\u0000\uE96D\uF73E"+
-        "\u0000\u0000\u0000\uE148\u0000\u0000\u0000\uE33E"+
-        "\u0000\u0000\u0000\uE794\u0000\u0000\uECCA\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE13F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE53D\uF661\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE35C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE056\u0000\u0000\uE5C2\u0000\u0000"+
-        "\uE24A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE057\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF840\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEAD8\u0000\u0000\u0000"+
-        "\uF5BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEDEB\u0000\uF2F4\uE9B5\u0000\u0000\u0000\u0000"+
-        "\uE1AA\u0000\uECF2\u0000\uF8F7\u0000\uF6D0\u0000"+
-        "\u0000\u0000\u0000\uF9BA\u0000\u0000\uF9E1\uF6A0"+
-        "\uE3C0\u0000\u0000\uEF55\u0000\uED48\u0000\uEBE8"+
-        "\u0000\u0000\u0000\uE151\u0000\uE47D\u0000\u0000"+
-        "\u0000\u0000\uE8BE\u0000\u0000\uEB72\u0000\u0000"+
-        "\u0000\uF859\u0000\u0000\uEBCD\u0000\uE048\u0000"+
-        "\u0000\u0000\uF470\uF3C9\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEA93\u0000\u0000\u0000\uF36F\uF754\u0000\u0000"+
-        "\u0000\u0000\u0000\uF25C\u0000\u0000\uEA94\u0000"+
-        "\uEEC9\u0000\uEC95\uEEE1\u0000\u0000\uECCB\u0000"+
-        "\u0000\uECCC\u0000\u0000\u0000\uE2F8\uF2AC\u0000"+
-        "\uF9FE\uF935\uF841\uEAD9\u0000\uEB62\u0000\u0000"+
-        "\u0000\uF56A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF3CA\u0000\uE233"+
-        "\u0000\u0000\u0000\u0000\uF44C\uF173\u0000\u0000"+
-        "\u0000\u0000\u0000\uEB35\u0000\uF6AB\u0000\u0000"+
-        "\uF0AF\u0000\u0000\u0000\u0000\u0000\uEDDE\u0000"+
-        "\uEBA4\uE1AB\u0000\uE7F4\uEF36\uE1CE\uEBE9\u0000"+
-        "\uF991\u0000\uEB73\u0000\u0000\u0000\u0000\u0000"+
-        "\uEC51\u0000\uE234\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEA36\u0000\u0000\uF0FE\u0000\uF0DD\uF370"+
-        "\u0000\u0000\uF56B\u0000\uEC96\u0000\u0000\uE4C8"+
-        "\u0000\u0000\u0000\uF57B\u0000\uF245\u0000\uF5D8"+
-        "\u0000\u0000\uE5DF\u0000\u0000\u0000\uE675\u0000"+
-        "\u0000\u0000\u0000\uF0B0\uF573\u0000\u0000\u0000"+
-        "\u0000\uECCD\u0000\u0000\u0000\u0000\uF596\uF842"+
-        "\u0000\u0000\uF2F5\uE06F\u0000\uF0B1\uF1BF\u0000"+
-        "\u0000\uF9C9\u0000\u0000\u0000\u0000\uED36\uF7A4"+
-        "\uF343\u0000\uEDEC\u0000\u0000\u0000\uE3E7\u0000"+
-        "\uE7C7\uED67\uF06D\u0000\uE599\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE84A\u0000"+
-        "\uE85D\u0000\u0000\u0000\uF7CC\u0000\uEBDA\uE8BF"+
-        "\u0000\uE155\uF160\uE0BB\u0000\uEA95\u0000\u0000"+
-        "\uEFAA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE7C8\u0000\u0000\uF273\uE6BD\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE2C4\u0000\u0000\u0000\u0000"+
-        "\u0000\uE35D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF936\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF3FB\u0000\u0000\u0000\u0000\uF9D2\uE3C1"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uECDB\u0000\uE4C9\u0000\uE95F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE17D\u0000"+
-        "\u0000\u0000\u0000\u0000\uEA37\u0000\u0000\uEE4B"+
-        "\uF131\u0000\u0000\u0000\uE149\u0000\u0000\uF8DE"+
-        "\u0000\u0000\u0000\u0000\u0000\uEEE2\u0000\u0000"+
-        "\uE551\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE938\u0000\u0000\u0000\u0000\u0000"+
-        "\uEC52\u0000\uF4D8\uEDD3\u0000\u0000\uF4D9\u0000"+
-        "\u0000\u0000\uF4C6\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE1DB"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE1AC"+
-        "\u0000\uF953\u0000\u0000\u0000\u0000\uE577\u0000"+
-        "\uE3C2\u0000\uF7A5\u0000\uEF65\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uECCE\u0000\u0000"+
-        "\u0000\u0000\uE55A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEADA\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF8DF\uEEE3\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF79D\uECCF\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF5B0\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE777\u0000\uE7C9\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF73F\uF2F6\u0000"+
-        "\uE9B6\uF23F\uE1F8\u0000\u0000\u0000\u0000\uEA48"+
-        "\uF937\uF6FC\uF6B1\uE24B\uF531\u0000\u0000\uF25D"+
-        "\uEBAE\u0000\u0000\uF153\uE2FE\u0000\uF74F\uE772"+
-        "\uE4E8\u0000\u0000\uEA38\uF574\uF152\u0000\uE7F5"+
-        "\uF7C5\uE9D3\uE693\uF19E\uF992\u0000\u0000\uF1C0"+
-        "\uE049\u0000\uF274\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF471\u0000\uEA49\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE694\u0000\uEA96\u0000\uEADB\u0000"+
-        "\uE8D3\u0000\uF877\uE773\uF551\u0000\uE9B7\u0000"+
-        "\u0000\u0000\uF497\u0000\u0000\uE53E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE695\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE9B8\uE2C5\uEADF\u0000\u0000";
-
-    private final static String innerIndex5=
-        "\u0000\u0000\u0000\u0000\uF44E\uF631\u0000\uF0CB"+
-        "\uF3FC\u0000\uF4C7\u0000\u0000\uEB7B\u0000\u0000"+
-        "\u0000\u0000\u0000\uF1FC\u0000\u0000\uEBDB\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF275\u0000\uEA97\u0000"+
-        "\u0000\u0000\u0000\uF863\u0000\u0000\u0000\u0000"+
-        "\uF3CB\u0000\u0000\uE33F\uE9B9\u0000\u0000\uE3C3"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF5B1\u0000\u0000"+
-        "\u0000\u0000\uF056\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF371\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF63C\u0000\u0000\u0000\u0000"+
-        "\uF5D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF37B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE9BA\u0000\u0000\u0000\uF44F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF6C5\u0000"+
-        "\u0000\u0000\u0000\uE8A2\uF498\u0000\u0000\uE04A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF6F5\u0000\uE0E5\u0000\u0000"+
-        "\u0000\uF276\u0000\uEB63\u0000\u0000\u0000\u0000"+
-        "\uE235\u0000\u0000\u0000\u0000\u0000\u0000\uE668"+
-        "\u0000\u0000\u0000\uE53F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEFC9\u0000\u0000\u0000\u0000\uE4CE"+
-        "\uF552\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE0E6\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF3A1\u0000\u0000\u0000\u0000\u0000"+
-        "\uF0B2\u0000\u0000\u0000\u0000\uF3A2\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF0B3\u0000\uF344\u0000\u0000\uE0F4"+
-        "\uE540\uF4B2\uF8B7\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF5EC\u0000\u0000\u0000\u0000\u0000\uF277"+
-        "\uF542\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF5ED\u0000\uE2F3\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF372\u0000\u0000\u0000\u0000\u0000\uF25E"+
-        "\u0000\u0000\uF3CC\u0000\u0000\uEDB8\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE6F5\uECF3\uE2E5\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE2C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF4B3\uED68\uE2F9\uE2DA\u0000\u0000"+
-        "\u0000\u0000\uF85D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEE73"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF472\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF5EE\u0000\u0000\uE04B\u0000\u0000\uECDC\u0000"+
-        "\u0000\u0000\u0000\uE294\u0000\uE669\u0000\u0000"+
-        "\u0000\uF240\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF575\uE752\uE960\uE17E\u0000\u0000"+
-        "\u0000\u0000\u0000\uE5E0\uF65A\uF9CA\uE766\uF55F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE636\uE94E"+
-        "\u0000\uE8D4\uE6C7\u0000\u0000\u0000\u0000\uF4A0"+
-        "\u0000\u0000\u0000\uF3CD\u0000\u0000\u0000\u0000"+
-        "\uEC53\uE96E\u0000\uE96F\u0000\u0000\uF2AD\uEE3B"+
-        "\u0000\u0000\u0000\u0000\uF7DD\uF04F\u0000\u0000"+
-        "\u0000\uF2AE\u0000\u0000\u0000\uF560\uE295\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEE3C\u0000\uE26E"+
-        "\u0000\u0000\uE5F9\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uECF4\uE1D0\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE5B8\u0000\u0000\uF6FD\u0000"+
-        "\uE939\u0000\u0000\u0000\u0000\uEA98\u0000\uE93A"+
-        "\uF473\uEFB4\uE46C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEFE6\u0000\u0000\uECF6\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEECA\u0000"+
-        "\u0000\uE35E\u0000\u0000\uE899\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE04C\u0000"+
-        "\u0000\u0000\uF278\uE86E\u0000\uF499\u0000\u0000"+
-        "\uEC9D\u0000\uE136\u0000\u0000\u0000\u0000\uE84B"+
-        "\u0000\uF279\u0000\u0000\u0000\uF5DA\u0000\u0000"+
-        "\uF6DC\uEBEA\uE251\uE541\u0000\uF9B1\uEE4D\u0000"+
-        "\uF8AD\u0000\u0000\uF777\u0000\uEBCE\u0000\uF6E2"+
-        "\uF5EF\uE2C7\u0000\u0000\uE542\uE191\u0000\uE578"+
-        "\u0000\uF25F\uF6D7\u0000\u0000\uEB36\uE651\uEBDC"+
-        "\uF373\uF3E4\uE993\uE637\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF597\u0000"+
-        "\u0000\uF3CE\uF474\u0000\u0000\uE340\u0000\u0000"+
-        "\uF191\u0000\u0000\u0000\uF7BA\u0000\uF0B5\u0000"+
-        "\u0000\uE57D\uEC54\u0000\u0000\u0000\u0000\uEFE7"+
-        "\u0000\u0000\uF0B4\uF031\u0000\uF74C\uE236\u0000"+
-        "\uF7C6\uF96A\u0000\uE543\uE4B9\uF06E\u0000\u0000"+
-        "\u0000\uEFAB\u0000\u0000\uEBE1\uE4CF\uF598\u0000"+
-        "\uF050\uEBCF\u0000\uE14A\u0000\u0000\u0000\u0000"+
-        "\u0000\uF27A\u0000\u0000\u0000\uF374\uF4B4\uE57E"+
-        "\u0000\u0000\uF450\u0000\u0000\uF3E5\u0000\uF553"+
-        "\uEB64\u0000\uF0B6\u0000\uE6A1\uE0E8\u0000\uF7AD"+
-        "\uEFAD\uE774\uF843\uEC55\uF94D\u0000\u0000\uF154"+
-        "\uE741\u0000\uE93B\u0000\u0000\u0000\u0000\uE5A4"+
-        "\u0000\uF0E9\u0000\u0000\u0000\uEF4B\u0000\u0000"+
-        "\u0000\uE767\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF8AE\uE3E1\u0000\u0000\uE8C0\u0000"+
-        "\uF5BE\u0000\uEA99\u0000\u0000\u0000\u0000\uE09D"+
-        "\uF6C6\uE2C8\u0000\u0000\u0000\uEBD0\u0000\u0000"+
-        "\uF260\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEFF4\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE296\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE5CD\u0000"+
-        "\u0000\uE2DB\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE9BB\u0000\u0000\u0000\u0000\uE23C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEFE8\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE544\u0000\u0000"+
-        "\u0000\u0000\uED57\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF5DB\u0000\u0000\uF851\u0000\u0000"+
-        "\u0000\uEA39\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE59A"+
-        "\u0000\u0000\u0000\u0000\u0000\uF2F7\u0000\u0000"+
-        "\u0000\u0000\uE4B3\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF0B7\uF2F8\uF5DC\uF1CC\uE8D5\uF3CF\u0000"+
-        "\u0000\u0000\uF3D0\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF5B2\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE7AE\uE5AC\u0000\uEC56\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF9A3\u0000\uF8E5"+
-        "\uEAAB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEC97"+
-        "\u0000\uF63D\u0000\uF5B3\u0000\uF345\u0000\u0000"+
-        "\u0000\u0000\uEBA5\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF5DD\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF132\uF1FD\u0000\uF5B4\uF8B8"+
-        "\u0000\uE8A3\u0000\u0000\uE65A\uE0D9\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEDD4\u0000\u0000\u0000\u0000\u0000\u0000\uF4FA"+
-        "\u0000\uF0B8\u0000\uEB47\uE6EC\uF3EC\uEDAF\uE5E1"+
-        "\uE6ED\uE3D1\u0000\u0000\u0000\u0000\u0000\uEBF2"+
-        "\uF2F9\u0000\u0000\u0000\uE9BC\uF66C\u0000\u0000"+
-        "\u0000\u0000\u0000\uF375\u0000\u0000\u0000\uF554"+
-        "\u0000\u0000\uEFE9\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF4FB\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE591\u0000\u0000"+
-        "\uE132\uF6FE\uEABC\u0000\u0000\u0000\u0000\uF0CD"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE347\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE652\u0000\u0000\u0000"+
-        "\u0000\u0000\uEF3D\u0000\u0000\u0000\u0000\uF2AF"+
-        "\uE0A5\u0000\u0000\u0000\u0000\uE0E9\u0000\u0000"+
-        "\u0000\uF878\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE156"+
-        "\u0000\u0000\u0000\uEE77\u0000\u0000\uF057\u0000"+
-        "\u0000\u0000\uE8A4\u0000\uE2C9\uEC9E\uF2FA\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF0DE\u0000\u0000\uF5C8\u0000\uE56E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uEB65\u0000\uF2B0\u0000\u0000\uEC57\u0000"+
-        "\uE7AF\u0000\u0000\u0000\uF7E7\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEEE5\u0000\u0000\uE2CA\uEBD1"+
-        "\u0000\uEC58\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF2FB\u0000\u0000\uF89B"+
-        "\u0000\u0000\uE994\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEB37\u0000\u0000\u0000"+
-        "\u0000\u0000\uF778\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE0EA\u0000\u0000\u0000\uE0BC\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE672\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF5DE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF5DF\u0000\uF246\u0000\u0000\u0000\uEC98\uE4CA"+
-        "\uF2FC\uE3C4\uF2B1\u0000\uE3C5\u0000\uE36E\u0000"+
-        "\uE7E1\u0000\u0000\uEB48\u0000\u0000\uE1D1\uF4B9"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEECC\u0000\uE638\uE237\u0000\uE545\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uED58\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE4B4\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF0B9\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE0F5\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF66D\u0000\uF3A3\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE157\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEFCA\u0000\uEBF0\u0000"+
-        "\u0000\u0000\uF5E0\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF8AF\u0000\u0000\u0000\uE0D1"+
-        "\u0000\u0000\u0000\u0000\uF8E0\uF475\u0000\u0000"+
-        "\uF192\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF37C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF27B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEFCB\u0000"+
-        "\u0000\uE192\u0000\u0000\uE6AF\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF4A1\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF997\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF3A4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEB66\u0000\u0000"+
-        "\u0000\u0000\u0000\uF2B2\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF561\u0000\u0000"+
-        "\uF6A1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF3D1\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE09E\uE09F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE25E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF4C8\u0000\uF4BA"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF1FE"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE836\u0000\u0000\uEB7C\u0000\u0000\u0000\u0000"+
-        "\u0000\uF75D\u0000\uE0D2\u0000\u0000\u0000\uF0CE"+
-        "\u0000\uF7D8\uF7D9\uE070\uE85A\u0000\u0000\u0000"+
-        "\uE0A6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE058\uF7EE\uE8EC\u0000\u0000"+
-        "\uE341\u0000\u0000\u0000\u0000\uE5EF\u0000\u0000"+
-        "\u0000\uEE95\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEEA2\uED69\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uED71"+
-        "\u0000\u0000\uF954\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF7EF\uE2F4\uF6E6\u0000"+
-        "\u0000\u0000\u0000\u0000\uE24C\u0000\u0000\u0000"+
-        "\u0000\uF555\uE933\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE9BD\u0000\u0000\u0000"+
-        "\u0000\uF556\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF731\u0000\u0000\u0000\uEF66\u0000"+
-        "\u0000\u0000\uE8C1\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF376\u0000\u0000\u0000\uED49"+
-        "\uF67D\u0000\uF7AE\u0000\uE9BE\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE6B0\uE778\uE0BD\u0000\u0000"+
-        "\uF7DA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF75E\uF7F0\uEB7D\uECB3\uF543"+
-        "\u0000\u0000\uF052\uF476\uF346\u0000\u0000\u0000"+
-        "\u0000\u0000\uE8D6\u0000\u0000\u0000\u0000\u0000"+
-        "\uF0E4\u0000\u0000\uF477\u0000\uE6D5\uE546\uF7E8"+
-        "\uE6C1\u0000\u0000\u0000\u0000\uEDD5\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEFEA\uE6CC\u0000"+
-        "\u0000\u0000\uE4E9\uEC59\u0000\uF96B\uE1AD\u0000"+
-        "\u0000\u0000\u0000\u0000\uE140\uF032\u0000\u0000"+
-        "\uED98\uE350\u0000\uF347\uF231\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE6F6\u0000\u0000\u0000\uEC5A"+
-        "\uEC5B\u0000\uF85F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF0DF\u0000\u0000\u0000\u0000\u0000\uE65B"+
-        "\u0000\u0000\u0000\uF544\u0000\u0000\u0000\u0000"+
-        "\uF1CD\uED62\u0000\u0000\uF039\uED4A\uF4A2\uE1D2"+
-        "\u0000\uF65B\u0000\uF3E6\uF1C1\uEF4C\uF261\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF377\uEC5C\u0000"+
-        "\u0000\uED3A\u0000\uF5E1\uF1DA\u0000\u0000\u0000"+
-        "\u0000\u0000\uE6EE\uE3F1\u0000\u0000\u0000\u0000"+
-        "\uEFEB\uEFEC\uEB74\u0000\u0000\u0000\u0000\uE837"+
-        "\uE9D4\u0000\uF033\u0000\u0000\u0000\uE653\uE696"+
-        "\u0000\uE86F\u0000\uF2B3\u0000\u0000\u0000\u0000"+
-        "\uEC5D\u0000\u0000\u0000\u0000\u0000\uF2FD\uF478"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF2C5\u0000\uEEE7\u0000\u0000\uE6FD\u0000"+
-        "\u0000\uEECE\u0000\u0000\uEADC\u0000\uF7C7\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7F6"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEAAC\u0000\uE66A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE934\u0000\u0000\u0000\uF348\u0000\u0000"+
-        "\u0000\u0000\uE5FA\u0000\uED99\u0000\u0000\u0000"+
-        "\uE654\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF57C\u0000\u0000\u0000\u0000\uF2FE\u0000"+
-        "\u0000\u0000\u0000\u0000\uF331\u0000\uEA3A\u0000"+
-        "\u0000\uE84C\uE79E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF864\u0000\u0000\u0000\uF175\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF938\u0000\u0000\uF176"+
-        "\u0000\u0000\uE75B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF8B9\u0000\uED63\u0000\uE1F9"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE2D3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE07A\u0000\u0000\uE2D4\u0000\uF74D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF557\u0000"+
-        "\u0000\u0000\u0000\uF06F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF7DB\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE547\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF0E5\u0000\u0000\uEBD2\u0000"+
-        "\u0000\u0000\u0000\uF034\u0000\u0000\u0000\uF852"+
-        "\uF8E1\uF87D\uF332\uE193\u0000\uF833\uEC99\u0000"+
-        "\uEC5E\u0000\uEFF5\u0000\uEBEB\u0000\u0000\u0000"+
-        "\uEEE8\uEF67\uE89A\uE55B\u0000\u0000\u0000\uF6F6"+
-        "\uE655\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE579\u0000\u0000"+
-        "\uF89C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE194\uF6DD\u0000\uEA4A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE238\u0000"+
-        "\u0000\u0000\u0000\u0000\uF349\uEDA0\uED59\u0000"+
-        "\u0000\u0000\u0000\u0000\uED64\u0000\u0000\u0000"+
-        "\uF053\u0000\uF2B4\u0000\u0000\u0000\uE6BE\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF8E2\u0000\uE1D3"+
-        "\u0000\u0000\u0000\uF2B5\u0000\u0000\u0000\uF879"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF7A6\u0000\u0000\u0000\u0000\u0000\u0000\uEABD"+
-        "\u0000\uF6C7\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uF79F\u0000\u0000\uF79E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEA3B\uE8E8\u0000\u0000\uECDD"+
-        "\u0000\uEBE2\uE3C6\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF660\uF0E6\uE89B"+
-        "\u0000\u0000\u0000\u0000\uF157\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uEA9A\uF779\uECDE\u0000"+
-        "\u0000\u0000\u0000\uE297\u0000\u0000\u0000\u0000"+
-        "\u0000\uF853\uEDD7\u0000\uF158\u0000\u0000\u0000"+
-        "\uF4C9\u0000\u0000\uED4B\u0000\u0000\u0000\u0000"+
-        "\uEE3E\u0000\u0000\u0000\u0000\u0000\uF2B6\u0000"+
-        "\uE94F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE24D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE753\u0000\u0000"+
-        "\u0000\uE35F\u0000\uE2FA\uF4CA\uEB67\u0000\u0000"+
-        "\u0000\uE3C7\uEFAE\u0000\uEF4D\u0000\u0000\uF854"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uEC5F\u0000"+
-        "\u0000\uF855\u0000\u0000\u0000\uF7B8\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE970\u0000\u0000"+
-        "\uF8B0\u0000\u0000\u0000\uE739\uEDDF\uF7A7\u0000"+
-        "\u0000\uF67E\u0000\uF65C\uEC9A\u0000\u0000\u0000"+
-        "\u0000\uF193\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE870\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF3D2\uE45C\uE2CB\u0000\u0000\uE04D\u0000\u0000"+
-        "\u0000\uE9BF\u0000\u0000\u0000\uF691\u0000\uEA9B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF844\u0000\u0000"+
-        "\u0000\uE5AD\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3E7"+
-        "\u0000\uEA4E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE950\u0000\u0000\u0000\u0000\u0000\uE3C8\uE3C9"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF74E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE0F6\u0000\u0000\u0000\u0000"+
-        "\uE59B\u0000\u0000\u0000\u0000\u0000\uF5E2\uEBD3"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE779\u0000\u0000\uF7A0\u0000\uE2CC\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF9A4\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE298\u0000\uF860"+
-        "\u0000\u0000\uE195\uEE4E\u0000\u0000\u0000\uF63E"+
-        "\u0000\u0000\uE5F0\u0000\u0000\uE3CA\u0000\u0000"+
-        "\u0000\uF94E\uE5F1\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE1E9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uF845\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEC60\uF599\u0000\u0000\u0000"+
-        "\uE1D4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEEA3\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uE8A5\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEC61\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE6A2"+
-        "\u0000\u0000\uF6E3\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uF036\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE331\u0000\u0000\u0000"+
-        "\u0000\uE26A\uF8EB\uE8A6\uE8DE\uE775\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF070"+
-        "\u0000\u0000\u0000\u0000\uE73A\u0000\u0000\u0000"+
-        "\u0000\u0000\uEDE0\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE66B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF2C6\u0000"+
-        "\u0000\uF77A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uED65"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE299\u0000\u0000\uEB68\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE6EF\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uF57D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE1E6\u0000\u0000\u0000"+
-        "\uE196\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF5E3\u0000\u0000"+
-        "\uED5A\u0000\uE971\u0000\u0000\uF7C8\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF94F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEF37\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE754\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE0BE"+
-        "\u0000\uE93E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE6F7"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uF378\u0000\uE9C0"+
-        "\u0000\uE2CD\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uE995\uE7B0\u0000\uEE79\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex6=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uED4C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF054\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\uED7C\u0000"+
-        "\uED75\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uF8F8\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE14B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uED4D\u0000\u0000"+
-        "\uE1DC\uE7F7\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE9DF\u0000\u0000\u0000"+
-        "\u0000\u0000\uF1CE\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uE7D0\u0000\u0000\u0000\u0000\u0000\uEDA3"+
-        "\u0000\u0000\u0000\u0000\uF7CD\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE1AE\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE2CE"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF63F\u0000\u0000\u0000\u0000\u0000"+
-        "\uF9D3\uF0ED\uE66C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uEDA4\u0000\u0000\u0000\uE5B6\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE66D\u0000\u0000"+
-        "\u0000\uF7E9\u0000\u0000\u0000\uEEA4\u0000\uE673"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE3CB\uE674\u0000\u0000\u0000\uE5F2"+
-        "\u0000\u0000\u0000\u0000\u0000\uEA9C\u0000\uE6F8"+
-        "\u0000\u0000\u0000\u0000\u0000\uE77A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE2D5\uE79F\u0000\u0000"+
-        "\u0000\u0000\u0000\uE73B\u0000\u0000\uF9CB\u0000"+
-        "\u0000\u0000\u0000\uF96C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uEB38\uE5F3\u0000"+
-        "\u0000\uF9D9\u0000\u0000\uE133\u0000\u0000\u0000"+
-        "\uE7F9\u0000\u0000\uE4EA\uF5F5\u0000\uF2C7\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE4DA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE84D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEF38"+
-        "\uE93F\u0000\u0000\u0000\u0000\u0000\uF333\u0000"+
-        "\u0000\u0000\u0000\uE1D5\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uEB39\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\uEA3C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uF34A\uF241\u0000\u0000\uF242\u0000"+
-        "\u0000\u0000\uF65D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF262"+
-        "\u0000\uE656\u0000\u0000\u0000\u0000\u0000\uEB75"+
-        "\u0000\u0000\uF4BB\u0000\uEDE1\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uED5B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\uE6A3\u0000\u0000"+
-        "\uE8C2\u0000\u0000\u0000\u0000\uE0A0\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\uE2CF\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u8861\u8862\u8863\u8864\u8865\u8866\u8867\u8868"+
-        "\u8869\u886A\u886B\u886C\u886D\u886E\u886F\u8870"+
-        "\u8871\u8873\u8874\u8875\u8876\u8877\u8878\u8879"+
-        "\u887A\u887B\u887C\u887D\u8881\u8882\u8883\u8884"+
-        "\u8885\u8886\u8887\u8888\u8889\u888A\u888B\u888C"+
-        "\u888D\u888E\u888F\u8890\u8891\u8893\u8894\u8895"+
-        "\u8896\u8897\u8898\u8899\u889A\u889B\u889C\u889D"+
-        "\u88A1\u88A2\u88A3\u88A4\u88A5\u88A6\u88A7\u88A8"+
-        "\u88A9\u88AA\u88AB\u88AC\u88AD\u88AE\u88AF\u88B0"+
-        "\u88B1\u88B3\u88B4\u88B5\u88B6\u88B7\u88B8\u88B9"+
-        "\u88BA\u88BB\u88BC\u88BD\u88C1\u88C2\u88C3\u88C4"+
-        "\u88C5\u88C6\u88C7\u88C8\u88C9\u88CA\u88CB\u88CC"+
-        "\u88CD\u88CE\u88CF\u88D0\u88D1\u88D3\u88D4\u88D5"+
-        "\u88D6\u88D7\u88D8\u88D9\u88DA\u88DB\u88DC\u88DD"+
-        "\u88E1\u88E2\u88E3\u88E4\u88E5\u88E6\u88E7\u88E8"+
-        "\u88E9\u88EA\u88EB\u88EC\u88ED\u88EE\u88EF\u88F0"+
-        "\u88F1\u88F3\u88F4\u88F5\u88F6\u88F7\u88F8\u88F9"+
-        "\u88FA\u88FB\u88FC\u88FD\u8941\u8942\u8943\u8944"+
-        "\u8945\u8946\u8947\u8948\u8949\u894A\u894B\u894C"+
-        "\u894D\u894E\u894F\u8950\u8951\u8953\u8954\u8955"+
-        "\u8956\u8957\u8958\u8959\u895A\u895B\u895C\u895D"+
-        "\u8961\u8962\u8963\u8964\u8965\u8966\u8967\u8968"+
-        "\u8969\u896A\u896B\u896C\u896D\u896E\u896F\u8970"+
-        "\u8971\u8973\u8974\u8975\u8976\u8977\u8978\u8979"+
-        "\u897A\u897B\u897C\u897D\u8981\u8982\u8983\u8984"+
-        "\u8985\u8986\u8987\u8988\u8989\u898A\u898B\u898C"+
-        "\u898D\u898E\u898F\u8990\u8991\u8993\u8994\u8995"+
-        "\u8996\u8997\u8998\u8999\u899A\u899B\u899C\u899D"+
-        "\u89A1\u89A2\u89A3\u89A4\u89A5\u89A6\u89A7\u89A8"+
-        "\u89A9\u89AA\u89AB\u89AC\u89AD\u89AE\u89AF\u89B0"+
-        "\u89B1\u89B3\u89B4\u89B5\u89B6\u89B7\u89B8\u89B9"+
-        "\u89BA\u89BB\u89BC\u89BD\u89C1\u89C2\u89C3\u89C4"+
-        "\u89C5\u89C6\u89C7\u89C8\u89C9\u89CA\u89CB\u89CC"+
-        "\u89CD\u89CE\u89CF\u89D0\u89D1\u89D3\u89D4\u89D5"+
-        "\u89D6\u89D7\u89D8\u89D9\u89DA\u89DB\u89DC\u89DD"+
-        "\u89E1\u89E2\u89E3\u89E4\u89E5\u89E6\u89E7\u89E8"+
-        "\u89E9\u89EA\u89EB\u89EC\u89ED\u89EE\u89EF\u89F0"+
-        "\u89F1\u89F3\u89F4\u89F5\u89F6\u89F7\u89F8\u89F9"+
-        "\u89FA\u89FB\u89FC\u89FD\u8A41\u8A42\u8A43\u8A44"+
-        "\u8A45\u8A46\u8A47\u8A48\u8A49\u8A4A\u8A4B\u8A4C"+
-        "\u8A4D\u8A4E\u8A4F\u8A50\u8A51\u8A53\u8A54\u8A55"+
-        "\u8A56\u8A57\u8A58\u8A59\u8A5A\u8A5B\u8A5C\u8A5D"+
-        "\u8A61\u8A62\u8A63\u8A64\u8A65\u8A66\u8A67\u8A68"+
-        "\u8A69\u8A6A\u8A6B\u8A6C\u8A6D\u8A6E\u8A6F\u8A70"+
-        "\u8A71\u8A73\u8A74\u8A75\u8A76\u8A77\u8A78\u8A79"+
-        "\u8A7A\u8A7B\u8A7C\u8A7D\u8A81\u8A82\u8A83\u8A84"+
-        "\u8A85\u8A86\u8A87\u8A88\u8A89\u8A8A\u8A8B\u8A8C"+
-        "\u8A8D\u8A8E\u8A8F\u8A90\u8A91\u8A93\u8A94\u8A95"+
-        "\u8A96\u8A97\u8A98\u8A99\u8A9A\u8A9B\u8A9C\u8A9D"+
-        "\u8AA1\u8AA2\u8AA3\u8AA4\u8AA5\u8AA6\u8AA7\u8AA8"+
-        "\u8AA9\u8AAA\u8AAB\u8AAC\u8AAD\u8AAE\u8AAF\u8AB0"+
-        "\u8AB1\u8AB3\u8AB4\u8AB5\u8AB6\u8AB7\u8AB8\u8AB9"+
-        "\u8ABA\u8ABB\u8ABC\u8ABD\u8AC1\u8AC2\u8AC3\u8AC4"+
-        "\u8AC5\u8AC6\u8AC7\u8AC8\u8AC9\u8ACA\u8ACB\u8ACC"+
-        "\u8ACD\u8ACE\u8ACF\u8AD0\u8AD1\u8AD3\u8AD4\u8AD5"+
-        "\u8AD6\u8AD7\u8AD8\u8AD9\u8ADA\u8ADB\u8ADC\u8ADD"+
-        "\u8AE1\u8AE2\u8AE3\u8AE4\u8AE5\u8AE6\u8AE7\u8AE8"+
-        "\u8AE9\u8AEA\u8AEB\u8AEC\u8AED\u8AEE\u8AEF\u8AF0"+
-        "\u8AF1\u8AF3\u8AF4\u8AF5\u8AF6\u8AF7\u8AF8\u8AF9"+
-        "\u8AFA\u8AFB\u8AFC\u8AFD\u8B41\u8B42\u8B43\u8B44"+
-        "\u8B45\u8B46\u8B47\u8B48\u8B49\u8B4A\u8B4B\u8B4C"+
-        "\u8B4D\u8B4E\u8B4F\u8B50\u8B51\u8B53\u8B54\u8B55"+
-        "\u8B56\u8B57\u8B58\u8B59\u8B5A\u8B5B\u8B5C\u8B5D"+
-        "\u8B61\u8B62\u8B63\u8B64\u8B65\u8B66\u8B67\u8B68"+
-        "\u8B69\u8B6A\u8B6B\u8B6C\u8B6D\u8B6E\u8B6F\u8B70"+
-        "\u8B71\u8B73\u8B74\u8B75\u8B76\u8B77\u8B78\u8B79"+
-        "\u8B7A\u8B7B\u8B7C\u8B7D\u8B81\u8B82\u8B83\u8B84"+
-        "\u8B85\u8B86\u8B87\u8B88\u8B89\u8B8A\u8B8B\u8B8C"+
-        "\u8B8D\u8B8E\u8B8F\u8B90\u8B91\u8B93\u8B94\u8B95"+
-        "\u8B96\u8B97\u8B98\u8B99\u8B9A\u8B9B\u8B9C\u8B9D"+
-        "\u8BA1\u8BA2\u8BA3\u8BA4\u8BA5\u8BA6\u8BA7\u8BA8"+
-        "\u8BA9\u8BAA\u8BAB\u8BAC\u8BAD\u8BAE\u8BAF\u8BB0"+
-        "\u8BB1\u8BB3\u8BB4\u8BB5\u8BB6\u8BB7\u8BB8\u8BB9"+
-        "\u8BBA\u8BBB\u8BBC\u8BBD\u8C61\u8C62\u8C63\u8C64"+
-        "\u8C65\u8C66\u8C67\u8C68\u8C69\u8C6A\u8C6B\u8C6C"+
-        "\u8C6D\u8C6E\u8C6F\u8C70\u8C71\u8C73\u8C74\u8C75"+
-        "\u8C76\u8C77\u8C78\u8C79\u8C7A\u8C7B\u8C7C\u8C7D"+
-        "\u8C81\u8C82\u8C83\u8C84\u8C85\u8C86\u8C87\u8C88"+
-        "\u8C89\u8C8A\u8C8B\u8C8C\u8C8D\u8C8E\u8C8F\u8C90"+
-        "\u8C91\u8C93\u8C94\u8C95\u8C96\u8C97\u8C98\u8C99"+
-        "\u8C9A\u8C9B\u8C9C\u8C9D\u8CA1\u8CA2\u8CA3\u8CA4"+
-        "\u8CA5\u8CA6\u8CA7\u8CA8\u8CA9\u8CAA\u8CAB\u8CAC"+
-        "\u8CAD\u8CAE\u8CAF\u8CB0\u8CB1\u8CB3\u8CB4\u8CB5"+
-        "\u8CB6\u8CB7\u8CB8\u8CB9\u8CBA\u8CBB\u8CBC\u8CBD"+
-        "\u8CC1\u8CC2\u8CC3\u8CC4\u8CC5\u8CC6\u8CC7\u8CC8"+
-        "\u8CC9\u8CCA\u8CCB\u8CCC\u8CCD\u8CCE\u8CCF\u8CD0"+
-        "\u8CD1\u8CD3\u8CD4\u8CD5\u8CD6\u8CD7\u8CD8\u8CD9"+
-        "\u8CDA\u8CDB\u8CDC\u8CDD\u8CE1\u8CE2\u8CE3\u8CE4"+
-        "\u8CE5\u8CE6\u8CE7\u8CE8\u8CE9\u8CEA\u8CEB\u8CEC"+
-        "\u8CED\u8CEE\u8CEF\u8CF0\u8CF1\u8CF3\u8CF4\u8CF5"+
-        "\u8CF6\u8CF7\u8CF8\u8CF9\u8CFA\u8CFB\u8CFC\u8CFD"+
-        "\u8D41\u8D42\u8D43\u8D44\u8D45\u8D46\u8D47\u8D48"+
-        "\u8D49\u8D4A\u8D4B\u8D4C\u8D4D\u8D4E\u8D4F\u8D50"+
-        "\u8D51\u8D53\u8D54\u8D55\u8D56\u8D57\u8D58\u8D59"+
-        "\u8D5A\u8D5B\u8D5C\u8D5D\u8D61\u8D62\u8D63\u8D64"+
-        "\u8D65\u8D66\u8D67\u8D68\u8D69\u8D6A\u8D6B\u8D6C"+
-        "\u8D6D\u8D6E\u8D6F\u8D70\u8D71\u8D73\u8D74\u8D75"+
-        "\u8D76\u8D77\u8D78\u8D79\u8D7A\u8D7B\u8D7C\u8D7D"+
-        "\u8D81\u8D82\u8D83\u8D84\u8D85\u8D86\u8D87\u8D88"+
-        "\u8D89\u8D8A\u8D8B\u8D8C\u8D8D\u8D8E\u8D8F\u8D90"+
-        "\u8D91\u8D93\u8D94\u8D95\u8D96\u8D97\u8D98\u8D99"+
-        "\u8D9A\u8D9B\u8D9C\u8D9D\u8DA1\u8DA2\u8DA3\u8DA4"+
-        "\u8DA5\u8DA6\u8DA7\u8DA8\u8DA9\u8DAA\u8DAB\u8DAC"+
-        "\u8DAD\u8DAE\u8DAF\u8DB0\u8DB1\u8DB3\u8DB4\u8DB5"+
-        "\u8DB6\u8DB7\u8DB8\u8DB9\u8DBA\u8DBB\u8DBC\u8DBD"+
-        "\u8DC1\u8DC2\u8DC3\u8DC4\u8DC5\u8DC6\u8DC7\u8DC8"+
-        "\u8DC9\u8DCA\u8DCB\u8DCC\u8DCD\u8DCE\u8DCF\u8DD0"+
-        "\u8DD1\u8DD3\u8DD4\u8DD5\u8DD6\u8DD7\u8DD8\u8DD9"+
-        "\u8DDA\u8DDB\u8DDC\u8DDD\u8DE1\u8DE2\u8DE3\u8DE4"+
-        "\u8DE5\u8DE6\u8DE7\u8DE8\u8DE9\u8DEA\u8DEB\u8DEC"+
-        "\u8DED\u8DEE\u8DEF\u8DF0\u8DF1\u8DF3\u8DF4\u8DF5"+
-        "\u8DF6\u8DF7\u8DF8\u8DF9\u8DFA\u8DFB\u8DFC\u8DFD"+
-        "\u8E41\u8E42\u8E43\u8E44\u8E45\u8E46\u8E47\u8E48"+
-        "\u8E49\u8E4A\u8E4B\u8E4C\u8E4D\u8E4E\u8E4F\u8E50"+
-        "\u8E51\u8E53\u8E54\u8E55\u8E56\u8E57\u8E58\u8E59"+
-        "\u8E5A\u8E5B\u8E5C\u8E5D\u8E61\u8E62\u8E63\u8E64"+
-        "\u8E65\u8E66\u8E67\u8E68\u8E69\u8E6A\u8E6B\u8E6C"+
-        "\u8E6D\u8E6E\u8E6F\u8E70\u8E71\u8E73\u8E74\u8E75"+
-        "\u8E76\u8E77\u8E78\u8E79\u8E7A\u8E7B\u8E7C\u8E7D"+
-        "\u8E81\u8E82\u8E83\u8E84\u8E85\u8E86\u8E87\u8E88"+
-        "\u8E89\u8E8A\u8E8B\u8E8C\u8E8D\u8E8E\u8E8F\u8E90"+
-        "\u8E91\u8E93\u8E94\u8E95\u8E96\u8E97\u8E98\u8E99"+
-        "\u8E9A\u8E9B\u8E9C\u8E9D\u8EA1\u8EA2\u8EA3\u8EA4"+
-        "\u8EA5\u8EA6\u8EA7\u8EA8\u8EA9\u8EAA\u8EAB\u8EAC"+
-        "\u8EAD\u8EAE\u8EAF\u8EB0\u8EB1\u8EB3\u8EB4\u8EB5"+
-        "\u8EB6\u8EB7\u8EB8\u8EB9\u8EBA\u8EBB\u8EBC\u8EBD"+
-        "\u8EC1\u8EC2\u8EC3\u8EC4\u8EC5\u8EC6\u8EC7\u8EC8"+
-        "\u8EC9\u8ECA\u8ECB\u8ECC\u8ECD\u8ECE\u8ECF\u8ED0"+
-        "\u8ED1\u8ED3\u8ED4\u8ED5\u8ED6\u8ED7\u8ED8\u8ED9"+
-        "\u8EDA\u8EDB\u8EDC\u8EDD\u8EE1\u8EE2\u8EE3\u8EE4"+
-        "\u8EE5\u8EE6\u8EE7\u8EE8\u8EE9\u8EEA\u8EEB\u8EEC"+
-        "\u8EED\u8EEE\u8EEF\u8EF0\u8EF1\u8EF3\u8EF4\u8EF5"+
-        "\u8EF6\u8EF7\u8EF8\u8EF9\u8EFA\u8EFB\u8EFC\u8EFD"+
-        "\u8F41\u8F42\u8F43\u8F44\u8F45\u8F46\u8F47\u8F48"+
-        "\u8F49\u8F4A\u8F4B\u8F4C\u8F4D\u8F4E\u8F4F\u8F50"+
-        "\u8F51\u8F53\u8F54\u8F55\u8F56\u8F57\u8F58\u8F59"+
-        "\u8F5A\u8F5B\u8F5C\u8F5D\u8F61\u8F62\u8F63\u8F64"+
-        "\u8F65\u8F66\u8F67\u8F68\u8F69\u8F6A\u8F6B\u8F6C"+
-        "\u8F6D\u8F6E\u8F6F\u8F70\u8F71\u8F73\u8F74\u8F75"+
-        "\u8F76\u8F77\u8F78\u8F79\u8F7A\u8F7B\u8F7C\u8F7D"+
-        "\u8F81\u8F82\u8F83\u8F84\u8F85\u8F86\u8F87\u8F88"+
-        "\u8F89\u8F8A\u8F8B\u8F8C\u8F8D\u8F8E\u8F8F\u8F90"+
-        "\u8F91\u8F93\u8F94\u8F95\u8F96\u8F97\u8F98\u8F99"+
-        "\u8F9A\u8F9B\u8F9C\u8F9D\u8FA1\u8FA2\u8FA3\u8FA4"+
-        "\u8FA5\u8FA6\u8FA7\u8FA8\u8FA9\u8FAA\u8FAB\u8FAC"+
-        "\u8FAD\u8FAE\u8FAF\u8FB0\u8FB1\u8FB3\u8FB4\u8FB5"+
-        "\u8FB6\u8FB7\u8FB8\u8FB9\u8FBA\u8FBB\u8FBC\u8FBD"+
-        "\u9061\u9062\u9063\u9064\u9065\u9066\u9067\u9068"+
-        "\u9069\u906A\u906B\u906C\u906D\u906E\u906F\u9070"+
-        "\u9071\u9073\u9074\u9075\u9076\u9077\u9078\u9079"+
-        "\u907A\u907B\u907C\u907D\u9081\u9082\u9083\u9084"+
-        "\u9085\u9086\u9087\u9088\u9089\u908A\u908B\u908C"+
-        "\u908D\u908E\u908F\u9090\u9091\u9093\u9094\u9095"+
-        "\u9096\u9097\u9098\u9099\u909A\u909B\u909C\u909D"+
-        "\u90A1\u90A2\u90A3\u90A4\u90A5\u90A6\u90A7\u90A8"+
-        "\u90A9\u90AA\u90AB\u90AC\u90AD\u90AE\u90AF\u90B0"+
-        "\u90B1\u90B3\u90B4\u90B5\u90B6\u90B7\u90B8\u90B9"+
-        "\u90BA\u90BB\u90BC\u90BD\u90C1\u90C2\u90C3\u90C4"+
-        "\u90C5\u90C6\u90C7\u90C8\u90C9\u90CA\u90CB\u90CC"+
-        "\u90CD\u90CE\u90CF\u90D0\u90D1\u90D3\u90D4\u90D5"+
-        "\u90D6\u90D7\u90D8\u90D9\u90DA\u90DB\u90DC\u90DD"+
-        "\u90E1\u90E2\u90E3\u90E4\u90E5\u90E6\u90E7\u90E8"+
-        "\u90E9\u90EA\u90EB\u90EC\u90ED\u90EE\u90EF\u90F0"+
-        "\u90F1\u90F3\u90F4\u90F5\u90F6\u90F7\u90F8\u90F9"+
-        "\u90FA\u90FB\u90FC\u90FD\u9141\u9142\u9143\u9144"+
-        "\u9145\u9146\u9147\u9148\u9149\u914A\u914B\u914C"+
-        "\u914D\u914E\u914F\u9150\u9151\u9153\u9154\u9155"+
-        "\u9156\u9157\u9158\u9159\u915A\u915B\u915C\u915D"+
-        "\u9161\u9162\u9163\u9164\u9165\u9166\u9167\u9168"+
-        "\u9169\u916A\u916B\u916C\u916D\u916E\u916F\u9170"+
-        "\u9171\u9173\u9174\u9175\u9176\u9177\u9178\u9179"+
-        "\u917A\u917B\u917C\u917D\u9181\u9182\u9183\u9184"+
-        "\u9185\u9186\u9187\u9188\u9189\u918A\u918B\u918C"+
-        "\u918D\u918E\u918F\u9190\u9191\u9193\u9194\u9195"+
-        "\u9196\u9197\u9198\u9199\u919A\u919B\u919C\u919D"+
-        "\u91A1\u91A2\u91A3\u91A4\u91A5\u91A6\u91A7\u91A8"+
-        "\u91A9\u91AA\u91AB\u91AC\u91AD\u91AE\u91AF\u91B0"+
-        "\u91B1\u91B3\u91B4\u91B5\u91B6\u91B7\u91B8\u91B9"+
-        "\u91BA\u91BB\u91BC\u91BD\u91C1\u91C2\u91C3\u91C4"+
-        "\u91C5\u91C6\u91C7\u91C8\u91C9\u91CA\u91CB\u91CC"+
-        "\u91CD\u91CE\u91CF\u91D0\u91D1\u91D3\u91D4\u91D5"+
-        "\u91D6\u91D7\u91D8\u91D9\u91DA\u91DB\u91DC\u91DD"+
-        "\u91E1\u91E2\u91E3\u91E4\u91E5\u91E6\u91E7\u91E8"+
-        "\u91E9\u91EA\u91EB\u91EC\u91ED\u91EE\u91EF\u91F0"+
-        "\u91F1\u91F3\u91F4\u91F5\u91F6\u91F7\u91F8\u91F9"+
-        "\u91FA\u91FB\u91FC\u91FD\u9241\u9242\u9243\u9244"+
-        "\u9245\u9246\u9247\u9248\u9249\u924A\u924B\u924C"+
-        "\u924D\u924E\u924F\u9250\u9251\u9253\u9254\u9255"+
-        "\u9256\u9257\u9258\u9259\u925A\u925B\u925C\u925D"+
-        "\u9261\u9262\u9263\u9264\u9265\u9266\u9267\u9268"+
-        "\u9269\u926A\u926B\u926C\u926D\u926E\u926F\u9270"+
-        "\u9271\u9273\u9274\u9275\u9276\u9277\u9278\u9279"+
-        "\u927A\u927B\u927C\u927D\u9281\u9282\u9283\u9284"+
-        "\u9285\u9286\u9287\u9288\u9289\u928A\u928B\u928C"+
-        "\u928D\u928E\u928F\u9290\u9291\u9293\u9294\u9295"+
-        "\u9296\u9297\u9298\u9299\u929A\u929B\u929C\u929D"+
-        "\u92A1\u92A2\u92A3\u92A4\u92A5\u92A6\u92A7\u92A8"+
-        "\u92A9\u92AA\u92AB\u92AC\u92AD\u92AE\u92AF\u92B0"+
-        "\u92B1\u92B3\u92B4\u92B5\u92B6\u92B7\u92B8\u92B9"+
-        "\u92BA\u92BB\u92BC\u92BD\u92C1\u92C2\u92C3\u92C4"+
-        "\u92C5\u92C6\u92C7\u92C8\u92C9\u92CA\u92CB\u92CC"+
-        "\u92CD\u92CE\u92CF\u92D0\u92D1\u92D3\u92D4\u92D5"+
-        "\u92D6\u92D7\u92D8\u92D9\u92DA\u92DB\u92DC\u92DD"+
-        "\u92E1\u92E2\u92E3\u92E4\u92E5\u92E6\u92E7\u92E8"+
-        "\u92E9\u92EA\u92EB\u92EC\u92ED\u92EE\u92EF\u92F0"+
-        "\u92F1\u92F3\u92F4\u92F5\u92F6\u92F7\u92F8\u92F9"+
-        "\u92FA\u92FB\u92FC\u92FD\u9341\u9342\u9343\u9344"+
-        "\u9345\u9346\u9347\u9348\u9349\u934A\u934B\u934C"+
-        "\u934D\u934E\u934F\u9350\u9351\u9353\u9354\u9355"+
-        "\u9356\u9357\u9358\u9359\u935A\u935B\u935C\u935D"+
-        "\u9361\u9362\u9363\u9364\u9365\u9366\u9367\u9368"+
-        "\u9369\u936A\u936B\u936C\u936D\u936E\u936F\u9370"+
-        "\u9371\u9373\u9374\u9375\u9376\u9377\u9378\u9379"+
-        "\u937A\u937B\u937C\u937D\u9381\u9382\u9383\u9384"+
-        "\u9385\u9386\u9387\u9388\u9389\u938A\u938B\u938C"+
-        "\u938D\u938E\u938F\u9390\u9391\u9393\u9394\u9395"+
-        "\u9396\u9397\u9398\u9399\u939A\u939B\u939C\u939D"+
-        "\u93A1\u93A2\u93A3\u93A4\u93A5\u93A6\u93A7\u93A8"+
-        "\u93A9\u93AA\u93AB\u93AC\u93AD\u93AE\u93AF\u93B0"+
-        "\u93B1\u93B3\u93B4\u93B5\u93B6\u93B7\u93B8\u93B9"+
-        "\u93BA\u93BB\u93BC\u93BD\u9461\u9462\u9463\u9464"+
-        "\u9465\u9466\u9467\u9468\u9469\u946A\u946B\u946C"+
-        "\u946D\u946E\u946F\u9470\u9471\u9473\u9474\u9475"+
-        "\u9476\u9477\u9478\u9479\u947A\u947B\u947C\u947D"+
-        "\u9481\u9482\u9483\u9484\u9485\u9486\u9487\u9488"+
-        "\u9489\u948A\u948B\u948C\u948D\u948E\u948F\u9490"+
-        "\u9491\u9493\u9494\u9495\u9496\u9497\u9498\u9499"+
-        "\u949A\u949B\u949C\u949D\u94A1\u94A2\u94A3\u94A4"+
-        "\u94A5\u94A6\u94A7\u94A8\u94A9\u94AA\u94AB\u94AC"+
-        "\u94AD\u94AE\u94AF\u94B0\u94B1\u94B3\u94B4\u94B5"+
-        "\u94B6\u94B7\u94B8\u94B9\u94BA\u94BB\u94BC\u94BD"+
-        "\u94C1\u94C2\u94C3\u94C4\u94C5\u94C6\u94C7\u94C8"+
-        "\u94C9\u94CA\u94CB\u94CC\u94CD\u94CE\u94CF\u94D0"+
-        "\u94D1\u94D3\u94D4\u94D5\u94D6\u94D7\u94D8\u94D9"+
-        "\u94DA\u94DB\u94DC\u94DD\u94E1\u94E2\u94E3\u94E4"+
-        "\u94E5\u94E6\u94E7\u94E8\u94E9\u94EA\u94EB\u94EC"+
-        "\u94ED\u94EE\u94EF\u94F0\u94F1\u94F3\u94F4\u94F5"+
-        "\u94F6\u94F7\u94F8\u94F9\u94FA\u94FB\u94FC\u94FD"+
-        "\u9541\u9542\u9543\u9544\u9545\u9546\u9547\u9548"+
-        "\u9549\u954A\u954B\u954C\u954D\u954E\u954F\u9550"+
-        "\u9551\u9553\u9554\u9555\u9556\u9557\u9558\u9559"+
-        "\u955A\u955B\u955C\u955D\u9561\u9562\u9563\u9564"+
-        "\u9565\u9566\u9567\u9568\u9569\u956A\u956B\u956C"+
-        "\u956D\u956E\u956F\u9570\u9571\u9573\u9574\u9575"+
-        "\u9576\u9577\u9578\u9579\u957A\u957B\u957C\u957D"+
-        "\u9581\u9582\u9583\u9584\u9585\u9586\u9587\u9588"+
-        "\u9589\u958A\u958B\u958C\u958D\u958E\u958F\u9590"+
-        "\u9591\u9593\u9594\u9595\u9596\u9597\u9598\u9599"+
-        "\u959A\u959B\u959C\u959D\u95A1\u95A2\u95A3\u95A4"+
-        "\u95A5\u95A6\u95A7\u95A8\u95A9\u95AA\u95AB\u95AC"+
-        "\u95AD\u95AE\u95AF\u95B0\u95B1\u95B3\u95B4\u95B5"+
-        "\u95B6\u95B7\u95B8\u95B9\u95BA\u95BB\u95BC\u95BD"+
-        "\u95C1\u95C2\u95C3\u95C4\u95C5\u95C6\u95C7\u95C8"+
-        "\u95C9\u95CA\u95CB\u95CC\u95CD\u95CE\u95CF\u95D0"+
-        "\u95D1\u95D3\u95D4\u95D5\u95D6\u95D7\u95D8\u95D9"+
-        "\u95DA\u95DB\u95DC\u95DD\u95E1\u95E2\u95E3\u95E4"+
-        "\u95E5\u95E6\u95E7\u95E8\u95E9\u95EA\u95EB\u95EC"+
-        "\u95ED\u95EE\u95EF\u95F0\u95F1\u95F3\u95F4\u95F5"+
-        "\u95F6\u95F7\u95F8\u95F9\u95FA\u95FB\u95FC\u95FD"+
-        "\u9641\u9642\u9643\u9644\u9645\u9646\u9647\u9648"+
-        "\u9649\u964A\u964B\u964C\u964D\u964E\u964F\u9650"+
-        "\u9651\u9653\u9654\u9655\u9656\u9657\u9658\u9659"+
-        "\u965A\u965B\u965C\u965D\u9661\u9662\u9663\u9664"+
-        "\u9665\u9666\u9667\u9668\u9669\u966A\u966B\u966C"+
-        "\u966D\u966E\u966F\u9670\u9671\u9673\u9674\u9675"+
-        "\u9676\u9677\u9678\u9679\u967A\u967B\u967C\u967D"+
-        "\u9681\u9682\u9683\u9684\u9685\u9686\u9687\u9688"+
-        "\u9689\u968A\u968B\u968C\u968D\u968E\u968F\u9690"+
-        "\u9691\u9693\u9694\u9695\u9696\u9697\u9698\u9699"+
-        "\u969A\u969B\u969C\u969D\u96A1\u96A2\u96A3\u96A4"+
-        "\u96A5\u96A6\u96A7\u96A8\u96A9\u96AA\u96AB\u96AC"+
-        "\u96AD\u96AE\u96AF\u96B0\u96B1\u96B3\u96B4\u96B5"+
-        "\u96B6\u96B7\u96B8\u96B9\u96BA\u96BB\u96BC\u96BD"+
-        "\u96C1\u96C2\u96C3\u96C4\u96C5\u96C6\u96C7\u96C8"+
-        "\u96C9\u96CA\u96CB\u96CC\u96CD\u96CE\u96CF\u96D0"+
-        "\u96D1\u96D3\u96D4\u96D5\u96D6\u96D7\u96D8\u96D9"+
-        "\u96DA\u96DB\u96DC\u96DD\u96E1\u96E2\u96E3\u96E4"+
-        "\u96E5\u96E6\u96E7\u96E8\u96E9\u96EA\u96EB\u96EC"+
-        "\u96ED\u96EE\u96EF\u96F0\u96F1\u96F3\u96F4\u96F5"+
-        "\u96F6\u96F7\u96F8\u96F9\u96FA\u96FB\u96FC\u96FD"+
-        "\u9741\u9742\u9743\u9744\u9745\u9746\u9747\u9748"+
-        "\u9749\u974A\u974B\u974C\u974D\u974E\u974F\u9750"+
-        "\u9751\u9753\u9754\u9755\u9756\u9757\u9758\u9759"+
-        "\u975A\u975B\u975C\u975D\u9761\u9762\u9763\u9764"+
-        "\u9765\u9766\u9767\u9768\u9769\u976A\u976B\u976C"+
-        "\u976D\u976E\u976F\u9770\u9771\u9773\u9774\u9775"+
-        "\u9776\u9777\u9778\u9779\u977A\u977B\u977C\u977D"+
-        "\u9781\u9782\u9783\u9784\u9785\u9786\u9787\u9788"+
-        "\u9789\u978A\u978B\u978C\u978D\u978E\u978F\u9790"+
-        "\u9791\u9793\u9794\u9795\u9796\u9797\u9798\u9799"+
-        "\u979A\u979B\u979C\u979D\u97A1\u97A2\u97A3\u97A4"+
-        "\u97A5\u97A6\u97A7\u97A8\u97A9\u97AA\u97AB\u97AC"+
-        "\u97AD\u97AE\u97AF\u97B0\u97B1\u97B3\u97B4\u97B5"+
-        "\u97B6\u97B7\u97B8\u97B9\u97BA\u97BB\u97BC\u97BD"+
-        "\u9861\u9862\u9863\u9864\u9865\u9866\u9867\u9868"+
-        "\u9869\u986A\u986B\u986C\u986D\u986E\u986F\u9870"+
-        "\u9871\u9873\u9874\u9875\u9876\u9877\u9878\u9879"+
-        "\u987A\u987B\u987C\u987D\u9881\u9882\u9883\u9884"+
-        "\u9885\u9886\u9887\u9888\u9889\u988A\u988B\u988C"+
-        "\u988D\u988E\u988F\u9890\u9891\u9893\u9894\u9895"+
-        "\u9896\u9897\u9898\u9899\u989A\u989B\u989C\u989D"+
-        "\u98A1\u98A2\u98A3\u98A4\u98A5\u98A6\u98A7\u98A8"+
-        "\u98A9\u98AA\u98AB\u98AC\u98AD\u98AE\u98AF\u98B0"+
-        "\u98B1\u98B3\u98B4\u98B5\u98B6\u98B7\u98B8\u98B9"+
-        "\u98BA\u98BB\u98BC\u98BD\u98C1\u98C2\u98C3\u98C4"+
-        "\u98C5\u98C6\u98C7\u98C8\u98C9\u98CA\u98CB\u98CC"+
-        "\u98CD\u98CE\u98CF\u98D0\u98D1\u98D3\u98D4\u98D5"+
-        "\u98D6\u98D7\u98D8\u98D9\u98DA\u98DB\u98DC\u98DD"+
-        "\u98E1\u98E2\u98E3\u98E4\u98E5\u98E6\u98E7\u98E8"+
-        "\u98E9\u98EA\u98EB\u98EC\u98ED\u98EE\u98EF\u98F0"+
-        "\u98F1\u98F3\u98F4\u98F5\u98F6\u98F7\u98F8\u98F9"+
-        "\u98FA\u98FB\u98FC\u98FD\u9941\u9942\u9943\u9944"+
-        "\u9945\u9946\u9947\u9948\u9949\u994A\u994B\u994C"+
-        "\u994D\u994E\u994F\u9950\u9951\u9953\u9954\u9955"+
-        "\u9956\u9957\u9958\u9959\u995A\u995B\u995C\u995D"+
-        "\u9961\u9962\u9963\u9964\u9965\u9966\u9967\u9968"+
-        "\u9969\u996A\u996B\u996C\u996D\u996E\u996F\u9970"+
-        "\u9971\u9973\u9974\u9975\u9976\u9977\u9978\u9979"+
-        "\u997A\u997B\u997C\u997D\u9981\u9982\u9983\u9984"+
-        "\u9985\u9986\u9987\u9988\u9989\u998A\u998B\u998C"+
-        "\u998D\u998E\u998F\u9990\u9991\u9993\u9994\u9995"+
-        "\u9996\u9997\u9998\u9999\u999A\u999B\u999C\u999D"+
-        "\u99A1\u99A2\u99A3\u99A4\u99A5\u99A6\u99A7\u99A8"+
-        "\u99A9\u99AA\u99AB\u99AC\u99AD\u99AE\u99AF\u99B0"+
-        "\u99B1\u99B3\u99B4\u99B5\u99B6\u99B7\u99B8\u99B9"+
-        "\u99BA\u99BB\u99BC\u99BD\u99C1\u99C2\u99C3\u99C4"+
-        "\u99C5\u99C6\u99C7\u99C8\u99C9\u99CA\u99CB\u99CC"+
-        "\u99CD\u99CE\u99CF\u99D0\u99D1\u99D3\u99D4\u99D5"+
-        "\u99D6\u99D7\u99D8\u99D9\u99DA\u99DB\u99DC\u99DD"+
-        "\u99E1\u99E2\u99E3\u99E4\u99E5\u99E6\u99E7\u99E8"+
-        "\u99E9\u99EA\u99EB\u99EC\u99ED\u99EE\u99EF\u99F0"+
-        "\u99F1\u99F3\u99F4\u99F5\u99F6\u99F7\u99F8\u99F9"+
-        "\u99FA\u99FB\u99FC\u99FD\u9A41\u9A42\u9A43\u9A44"+
-        "\u9A45\u9A46\u9A47\u9A48\u9A49\u9A4A\u9A4B\u9A4C"+
-        "\u9A4D\u9A4E\u9A4F\u9A50\u9A51\u9A53\u9A54\u9A55"+
-        "\u9A56\u9A57\u9A58\u9A59\u9A5A\u9A5B\u9A5C\u9A5D"+
-        "\u9A61\u9A62\u9A63\u9A64\u9A65\u9A66\u9A67\u9A68"+
-        "\u9A69\u9A6A\u9A6B\u9A6C\u9A6D\u9A6E\u9A6F\u9A70"+
-        "\u9A71\u9A73\u9A74\u9A75\u9A76\u9A77\u9A78\u9A79"+
-        "\u9A7A\u9A7B\u9A7C\u9A7D\u9A81\u9A82\u9A83\u9A84"+
-        "\u9A85\u9A86\u9A87\u9A88\u9A89\u9A8A\u9A8B\u9A8C"+
-        "\u9A8D\u9A8E\u9A8F\u9A90\u9A91\u9A93\u9A94\u9A95"+
-        "\u9A96\u9A97\u9A98\u9A99\u9A9A\u9A9B\u9A9C\u9A9D"+
-        "\u9AA1\u9AA2\u9AA3\u9AA4\u9AA5\u9AA6\u9AA7\u9AA8"+
-        "\u9AA9\u9AAA\u9AAB\u9AAC\u9AAD\u9AAE\u9AAF\u9AB0"+
-        "\u9AB1\u9AB3\u9AB4\u9AB5\u9AB6\u9AB7\u9AB8\u9AB9"+
-        "\u9ABA\u9ABB\u9ABC\u9ABD\u9AC1\u9AC2\u9AC3\u9AC4"+
-        "\u9AC5\u9AC6\u9AC7\u9AC8\u9AC9\u9ACA\u9ACB\u9ACC"+
-        "\u9ACD\u9ACE\u9ACF\u9AD0\u9AD1\u9AD3\u9AD4\u9AD5"+
-        "\u9AD6\u9AD7\u9AD8\u9AD9\u9ADA\u9ADB\u9ADC\u9ADD"+
-        "\u9AE1\u9AE2\u9AE3\u9AE4\u9AE5\u9AE6\u9AE7\u9AE8"+
-        "\u9AE9\u9AEA\u9AEB\u9AEC\u9AED\u9AEE\u9AEF\u9AF0"+
-        "\u9AF1\u9AF3\u9AF4\u9AF5\u9AF6\u9AF7\u9AF8\u9AF9"+
-        "\u9AFA\u9AFB\u9AFC\u9AFD\u9B41\u9B42\u9B43\u9B44"+
-        "\u9B45\u9B46\u9B47\u9B48\u9B49\u9B4A\u9B4B\u9B4C"+
-        "\u9B4D\u9B4E\u9B4F\u9B50\u9B51\u9B53\u9B54\u9B55"+
-        "\u9B56\u9B57\u9B58\u9B59\u9B5A\u9B5B\u9B5C\u9B5D"+
-        "\u9B61\u9B62\u9B63\u9B64\u9B65\u9B66\u9B67\u9B68"+
-        "\u9B69\u9B6A\u9B6B\u9B6C\u9B6D\u9B6E\u9B6F\u9B70"+
-        "\u9B71\u9B73\u9B74\u9B75\u9B76\u9B77\u9B78\u9B79"+
-        "\u9B7A\u9B7B\u9B7C\u9B7D\u9B81\u9B82\u9B83\u9B84"+
-        "\u9B85\u9B86\u9B87\u9B88\u9B89\u9B8A\u9B8B\u9B8C"+
-        "\u9B8D\u9B8E\u9B8F\u9B90\u9B91\u9B93\u9B94\u9B95"+
-        "\u9B96\u9B97\u9B98\u9B99\u9B9A\u9B9B\u9B9C\u9B9D"+
-        "\u9BA1\u9BA2\u9BA3\u9BA4\u9BA5\u9BA6\u9BA7\u9BA8"+
-        "\u9BA9\u9BAA\u9BAB\u9BAC\u9BAD\u9BAE\u9BAF\u9BB0"+
-        "\u9BB1\u9BB3\u9BB4\u9BB5\u9BB6\u9BB7\u9BB8\u9BB9"+
-        "\u9BBA\u9BBB\u9BBC\u9BBD\u9C61\u9C62\u9C63\u9C64"+
-        "\u9C65\u9C66\u9C67\u9C68\u9C69\u9C6A\u9C6B\u9C6C"+
-        "\u9C6D\u9C6E\u9C6F\u9C70\u9C71\u9C73\u9C74\u9C75"+
-        "\u9C76\u9C77\u9C78\u9C79\u9C7A\u9C7B\u9C7C\u9C7D"+
-        "\u9C81\u9C82\u9C83\u9C84\u9C85\u9C86\u9C87\u9C88"+
-        "\u9C89\u9C8A\u9C8B\u9C8C\u9C8D\u9C8E\u9C8F\u9C90"+
-        "\u9C91\u9C93\u9C94\u9C95\u9C96\u9C97\u9C98\u9C99"+
-        "\u9C9A\u9C9B\u9C9C\u9C9D\u9CA1\u9CA2\u9CA3\u9CA4"+
-        "\u9CA5\u9CA6\u9CA7\u9CA8\u9CA9\u9CAA\u9CAB\u9CAC"+
-        "\u9CAD\u9CAE\u9CAF\u9CB0\u9CB1\u9CB3\u9CB4\u9CB5"+
-        "\u9CB6\u9CB7\u9CB8\u9CB9\u9CBA\u9CBB\u9CBC\u9CBD"+
-        "\u9CC1\u9CC2\u9CC3\u9CC4\u9CC5\u9CC6\u9CC7\u9CC8"+
-        "\u9CC9\u9CCA\u9CCB\u9CCC\u9CCD\u9CCE\u9CCF\u9CD0"+
-        "\u9CD1\u9CD3\u9CD4\u9CD5\u9CD6\u9CD7\u9CD8\u9CD9"+
-        "\u9CDA\u9CDB\u9CDC\u9CDD\u9CE1\u9CE2\u9CE3\u9CE4"+
-        "\u9CE5\u9CE6\u9CE7\u9CE8\u9CE9\u9CEA\u9CEB\u9CEC"+
-        "\u9CED\u9CEE\u9CEF\u9CF0\u9CF1\u9CF3\u9CF4\u9CF5"+
-        "\u9CF6\u9CF7\u9CF8\u9CF9\u9CFA\u9CFB\u9CFC\u9CFD"+
-        "\u9D41\u9D42\u9D43\u9D44\u9D45\u9D46\u9D47\u9D48"+
-        "\u9D49\u9D4A\u9D4B\u9D4C\u9D4D\u9D4E\u9D4F\u9D50"+
-        "\u9D51\u9D53\u9D54\u9D55\u9D56\u9D57\u9D58\u9D59"+
-        "\u9D5A\u9D5B\u9D5C\u9D5D\u9D61\u9D62\u9D63\u9D64"+
-        "\u9D65\u9D66\u9D67\u9D68\u9D69\u9D6A\u9D6B\u9D6C"+
-        "\u9D6D\u9D6E\u9D6F\u9D70\u9D71\u9D73\u9D74\u9D75"+
-        "\u9D76\u9D77\u9D78\u9D79\u9D7A\u9D7B\u9D7C\u9D7D"+
-        "\u9D81\u9D82\u9D83\u9D84\u9D85\u9D86\u9D87\u9D88"+
-        "\u9D89\u9D8A\u9D8B\u9D8C\u9D8D\u9D8E\u9D8F\u9D90"+
-        "\u9D91\u9D93\u9D94\u9D95\u9D96\u9D97\u9D98\u9D99"+
-        "\u9D9A\u9D9B\u9D9C\u9D9D\u9DA1\u9DA2\u9DA3\u9DA4"+
-        "\u9DA5\u9DA6\u9DA7\u9DA8\u9DA9\u9DAA\u9DAB\u9DAC"+
-        "\u9DAD\u9DAE\u9DAF\u9DB0\u9DB1\u9DB3\u9DB4\u9DB5"+
-        "\u9DB6\u9DB7\u9DB8\u9DB9\u9DBA\u9DBB\u9DBC\u9DBD"+
-        "\u9DC1\u9DC2\u9DC3\u9DC4\u9DC5\u9DC6\u9DC7\u9DC8"+
-        "\u9DC9\u9DCA\u9DCB\u9DCC\u9DCD\u9DCE\u9DCF\u9DD0"+
-        "\u9DD1\u9DD3\u9DD4\u9DD5\u9DD6\u9DD7\u9DD8\u9DD9"+
-        "\u9DDA\u9DDB\u9DDC\u9DDD\u9DE1\u9DE2\u9DE3\u9DE4"+
-        "\u9DE5\u9DE6\u9DE7\u9DE8\u9DE9\u9DEA\u9DEB\u9DEC"+
-        "\u9DED\u9DEE\u9DEF\u9DF0\u9DF1\u9DF3\u9DF4\u9DF5"+
-        "\u9DF6\u9DF7\u9DF8\u9DF9\u9DFA\u9DFB\u9DFC\u9DFD"+
-        "\u9E41\u9E42\u9E43\u9E44\u9E45\u9E46\u9E47\u9E48"+
-        "\u9E49\u9E4A\u9E4B\u9E4C\u9E4D\u9E4E\u9E4F\u9E50"+
-        "\u9E51\u9E53\u9E54\u9E55\u9E56\u9E57\u9E58\u9E59"+
-        "\u9E5A\u9E5B\u9E5C\u9E5D\u9E61\u9E62\u9E63\u9E64"+
-        "\u9E65\u9E66\u9E67\u9E68\u9E69\u9E6A\u9E6B\u9E6C"+
-        "\u9E6D\u9E6E\u9E6F\u9E70\u9E71\u9E73\u9E74\u9E75"+
-        "\u9E76\u9E77\u9E78\u9E79\u9E7A\u9E7B\u9E7C\u9E7D"+
-        "\u9E81\u9E82\u9E83\u9E84\u9E85\u9E86\u9E87\u9E88"+
-        "\u9E89\u9E8A\u9E8B\u9E8C\u9E8D\u9E8E\u9E8F\u9E90"+
-        "\u9E91\u9E93\u9E94\u9E95\u9E96\u9E97\u9E98\u9E99";
-
-    private final static String innerIndex7=
-        "\u9E9A\u9E9B\u9E9C\u9E9D\u9EA1\u9EA2\u9EA3\u9EA4"+
-        "\u9EA5\u9EA6\u9EA7\u9EA8\u9EA9\u9EAA\u9EAB\u9EAC"+
-        "\u9EAD\u9EAE\u9EAF\u9EB0\u9EB1\u9EB3\u9EB4\u9EB5"+
-        "\u9EB6\u9EB7\u9EB8\u9EB9\u9EBA\u9EBB\u9EBC\u9EBD"+
-        "\u9EC1\u9EC2\u9EC3\u9EC4\u9EC5\u9EC6\u9EC7\u9EC8"+
-        "\u9EC9\u9ECA\u9ECB\u9ECC\u9ECD\u9ECE\u9ECF\u9ED0"+
-        "\u9ED1\u9ED3\u9ED4\u9ED5\u9ED6\u9ED7\u9ED8\u9ED9"+
-        "\u9EDA\u9EDB\u9EDC\u9EDD\u9EE1\u9EE2\u9EE3\u9EE4"+
-        "\u9EE5\u9EE6\u9EE7\u9EE8\u9EE9\u9EEA\u9EEB\u9EEC"+
-        "\u9EED\u9EEE\u9EEF\u9EF0\u9EF1\u9EF3\u9EF4\u9EF5"+
-        "\u9EF6\u9EF7\u9EF8\u9EF9\u9EFA\u9EFB\u9EFC\u9EFD"+
-        "\u9F41\u9F42\u9F43\u9F44\u9F45\u9F46\u9F47\u9F48"+
-        "\u9F49\u9F4A\u9F4B\u9F4C\u9F4D\u9F4E\u9F4F\u9F50"+
-        "\u9F51\u9F53\u9F54\u9F55\u9F56\u9F57\u9F58\u9F59"+
-        "\u9F5A\u9F5B\u9F5C\u9F5D\u9F61\u9F62\u9F63\u9F64"+
-        "\u9F65\u9F66\u9F67\u9F68\u9F69\u9F6A\u9F6B\u9F6C"+
-        "\u9F6D\u9F6E\u9F6F\u9F70\u9F71\u9F73\u9F74\u9F75"+
-        "\u9F76\u9F77\u9F78\u9F79\u9F7A\u9F7B\u9F7C\u9F7D"+
-        "\u9F81\u9F82\u9F83\u9F84\u9F85\u9F86\u9F87\u9F88"+
-        "\u9F89\u9F8A\u9F8B\u9F8C\u9F8D\u9F8E\u9F8F\u9F90"+
-        "\u9F91\u9F93\u9F94\u9F95\u9F96\u9F97\u9F98\u9F99"+
-        "\u9F9A\u9F9B\u9F9C\u9F9D\u9FA1\u9FA2\u9FA3\u9FA4"+
-        "\u9FA5\u9FA6\u9FA7\u9FA8\u9FA9\u9FAA\u9FAB\u9FAC"+
-        "\u9FAD\u9FAE\u9FAF\u9FB0\u9FB1\u9FB3\u9FB4\u9FB5"+
-        "\u9FB6\u9FB7\u9FB8\u9FB9\u9FBA\u9FBB\u9FBC\u9FBD"+
-        "\uA061\uA062\uA063\uA064\uA065\uA066\uA067\uA068"+
-        "\uA069\uA06A\uA06B\uA06C\uA06D\uA06E\uA06F\uA070"+
-        "\uA071\uA073\uA074\uA075\uA076\uA077\uA078\uA079"+
-        "\uA07A\uA07B\uA07C\uA07D\uA081\uA082\uA083\uA084"+
-        "\uA085\uA086\uA087\uA088\uA089\uA08A\uA08B\uA08C"+
-        "\uA08D\uA08E\uA08F\uA090\uA091\uA093\uA094\uA095"+
-        "\uA096\uA097\uA098\uA099\uA09A\uA09B\uA09C\uA09D"+
-        "\uA0A1\uA0A2\uA0A3\uA0A4\uA0A5\uA0A6\uA0A7\uA0A8"+
-        "\uA0A9\uA0AA\uA0AB\uA0AC\uA0AD\uA0AE\uA0AF\uA0B0"+
-        "\uA0B1\uA0B3\uA0B4\uA0B5\uA0B6\uA0B7\uA0B8\uA0B9"+
-        "\uA0BA\uA0BB\uA0BC\uA0BD\uA0C1\uA0C2\uA0C3\uA0C4"+
-        "\uA0C5\uA0C6\uA0C7\uA0C8\uA0C9\uA0CA\uA0CB\uA0CC"+
-        "\uA0CD\uA0CE\uA0CF\uA0D0\uA0D1\uA0D3\uA0D4\uA0D5"+
-        "\uA0D6\uA0D7\uA0D8\uA0D9\uA0DA\uA0DB\uA0DC\uA0DD"+
-        "\uA0E1\uA0E2\uA0E3\uA0E4\uA0E5\uA0E6\uA0E7\uA0E8"+
-        "\uA0E9\uA0EA\uA0EB\uA0EC\uA0ED\uA0EE\uA0EF\uA0F0"+
-        "\uA0F1\uA0F3\uA0F4\uA0F5\uA0F6\uA0F7\uA0F8\uA0F9"+
-        "\uA0FA\uA0FB\uA0FC\uA0FD\uA141\uA142\uA143\uA144"+
-        "\uA145\uA146\uA147\uA148\uA149\uA14A\uA14B\uA14C"+
-        "\uA14D\uA14E\uA14F\uA150\uA151\uA153\uA154\uA155"+
-        "\uA156\uA157\uA158\uA159\uA15A\uA15B\uA15C\uA15D"+
-        "\uA161\uA162\uA163\uA164\uA165\uA166\uA167\uA168"+
-        "\uA169\uA16A\uA16B\uA16C\uA16D\uA16E\uA16F\uA170"+
-        "\uA171\uA173\uA174\uA175\uA176\uA177\uA178\uA179"+
-        "\uA17A\uA17B\uA17C\uA17D\uA181\uA182\uA183\uA184"+
-        "\uA185\uA186\uA187\uA188\uA189\uA18A\uA18B\uA18C"+
-        "\uA18D\uA18E\uA18F\uA190\uA191\uA193\uA194\uA195"+
-        "\uA196\uA197\uA198\uA199\uA19A\uA19B\uA19C\uA19D"+
-        "\uA1A1\uA1A2\uA1A3\uA1A4\uA1A5\uA1A6\uA1A7\uA1A8"+
-        "\uA1A9\uA1AA\uA1AB\uA1AC\uA1AD\uA1AE\uA1AF\uA1B0"+
-        "\uA1B1\uA1B3\uA1B4\uA1B5\uA1B6\uA1B7\uA1B8\uA1B9"+
-        "\uA1BA\uA1BB\uA1BC\uA1BD\uA1C1\uA1C2\uA1C3\uA1C4"+
-        "\uA1C5\uA1C6\uA1C7\uA1C8\uA1C9\uA1CA\uA1CB\uA1CC"+
-        "\uA1CD\uA1CE\uA1CF\uA1D0\uA1D1\uA1D3\uA1D4\uA1D5"+
-        "\uA1D6\uA1D7\uA1D8\uA1D9\uA1DA\uA1DB\uA1DC\uA1DD"+
-        "\uA1E1\uA1E2\uA1E3\uA1E4\uA1E5\uA1E6\uA1E7\uA1E8"+
-        "\uA1E9\uA1EA\uA1EB\uA1EC\uA1ED\uA1EE\uA1EF\uA1F0"+
-        "\uA1F1\uA1F3\uA1F4\uA1F5\uA1F6\uA1F7\uA1F8\uA1F9"+
-        "\uA1FA\uA1FB\uA1FC\uA1FD\uA241\uA242\uA243\uA244"+
-        "\uA245\uA246\uA247\uA248\uA249\uA24A\uA24B\uA24C"+
-        "\uA24D\uA24E\uA24F\uA250\uA251\uA253\uA254\uA255"+
-        "\uA256\uA257\uA258\uA259\uA25A\uA25B\uA25C\uA25D"+
-        "\uA261\uA262\uA263\uA264\uA265\uA266\uA267\uA268"+
-        "\uA269\uA26A\uA26B\uA26C\uA26D\uA26E\uA26F\uA270"+
-        "\uA271\uA273\uA274\uA275\uA276\uA277\uA278\uA279"+
-        "\uA27A\uA27B\uA27C\uA27D\uA281\uA282\uA283\uA284"+
-        "\uA285\uA286\uA287\uA288\uA289\uA28A\uA28B\uA28C"+
-        "\uA28D\uA28E\uA28F\uA290\uA291\uA293\uA294\uA295"+
-        "\uA296\uA297\uA298\uA299\uA29A\uA29B\uA29C\uA29D"+
-        "\uA2A1\uA2A2\uA2A3\uA2A4\uA2A5\uA2A6\uA2A7\uA2A8"+
-        "\uA2A9\uA2AA\uA2AB\uA2AC\uA2AD\uA2AE\uA2AF\uA2B0"+
-        "\uA2B1\uA2B3\uA2B4\uA2B5\uA2B6\uA2B7\uA2B8\uA2B9"+
-        "\uA2BA\uA2BB\uA2BC\uA2BD\uA2C1\uA2C2\uA2C3\uA2C4"+
-        "\uA2C5\uA2C6\uA2C7\uA2C8\uA2C9\uA2CA\uA2CB\uA2CC"+
-        "\uA2CD\uA2CE\uA2CF\uA2D0\uA2D1\uA2D3\uA2D4\uA2D5"+
-        "\uA2D6\uA2D7\uA2D8\uA2D9\uA2DA\uA2DB\uA2DC\uA2DD"+
-        "\uA2E1\uA2E2\uA2E3\uA2E4\uA2E5\uA2E6\uA2E7\uA2E8"+
-        "\uA2E9\uA2EA\uA2EB\uA2EC\uA2ED\uA2EE\uA2EF\uA2F0"+
-        "\uA2F1\uA2F3\uA2F4\uA2F5\uA2F6\uA2F7\uA2F8\uA2F9"+
-        "\uA2FA\uA2FB\uA2FC\uA2FD\uA341\uA342\uA343\uA344"+
-        "\uA345\uA346\uA347\uA348\uA349\uA34A\uA34B\uA34C"+
-        "\uA34D\uA34E\uA34F\uA350\uA351\uA353\uA354\uA355"+
-        "\uA356\uA357\uA358\uA359\uA35A\uA35B\uA35C\uA35D"+
-        "\uA361\uA362\uA363\uA364\uA365\uA366\uA367\uA368"+
-        "\uA369\uA36A\uA36B\uA36C\uA36D\uA36E\uA36F\uA370"+
-        "\uA371\uA373\uA374\uA375\uA376\uA377\uA378\uA379"+
-        "\uA37A\uA37B\uA37C\uA37D\uA381\uA382\uA383\uA384"+
-        "\uA385\uA386\uA387\uA388\uA389\uA38A\uA38B\uA38C"+
-        "\uA38D\uA38E\uA38F\uA390\uA391\uA393\uA394\uA395"+
-        "\uA396\uA397\uA398\uA399\uA39A\uA39B\uA39C\uA39D"+
-        "\uA3A1\uA3A2\uA3A3\uA3A4\uA3A5\uA3A6\uA3A7\uA3A8"+
-        "\uA3A9\uA3AA\uA3AB\uA3AC\uA3AD\uA3AE\uA3AF\uA3B0"+
-        "\uA3B1\uA3B3\uA3B4\uA3B5\uA3B6\uA3B7\uA3B8\uA3B9"+
-        "\uA3BA\uA3BB\uA3BC\uA3BD\uA461\uA462\uA463\uA464"+
-        "\uA465\uA466\uA467\uA468\uA469\uA46A\uA46B\uA46C"+
-        "\uA46D\uA46E\uA46F\uA470\uA471\uA473\uA474\uA475"+
-        "\uA476\uA477\uA478\uA479\uA47A\uA47B\uA47C\uA47D"+
-        "\uA481\uA482\uA483\uA484\uA485\uA486\uA487\uA488"+
-        "\uA489\uA48A\uA48B\uA48C\uA48D\uA48E\uA48F\uA490"+
-        "\uA491\uA493\uA494\uA495\uA496\uA497\uA498\uA499"+
-        "\uA49A\uA49B\uA49C\uA49D\uA4A1\uA4A2\uA4A3\uA4A4"+
-        "\uA4A5\uA4A6\uA4A7\uA4A8\uA4A9\uA4AA\uA4AB\uA4AC"+
-        "\uA4AD\uA4AE\uA4AF\uA4B0\uA4B1\uA4B3\uA4B4\uA4B5"+
-        "\uA4B6\uA4B7\uA4B8\uA4B9\uA4BA\uA4BB\uA4BC\uA4BD"+
-        "\uA4C1\uA4C2\uA4C3\uA4C4\uA4C5\uA4C6\uA4C7\uA4C8"+
-        "\uA4C9\uA4CA\uA4CB\uA4CC\uA4CD\uA4CE\uA4CF\uA4D0"+
-        "\uA4D1\uA4D3\uA4D4\uA4D5\uA4D6\uA4D7\uA4D8\uA4D9"+
-        "\uA4DA\uA4DB\uA4DC\uA4DD\uA4E1\uA4E2\uA4E3\uA4E4"+
-        "\uA4E5\uA4E6\uA4E7\uA4E8\uA4E9\uA4EA\uA4EB\uA4EC"+
-        "\uA4ED\uA4EE\uA4EF\uA4F0\uA4F1\uA4F3\uA4F4\uA4F5"+
-        "\uA4F6\uA4F7\uA4F8\uA4F9\uA4FA\uA4FB\uA4FC\uA4FD"+
-        "\uA541\uA542\uA543\uA544\uA545\uA546\uA547\uA548"+
-        "\uA549\uA54A\uA54B\uA54C\uA54D\uA54E\uA54F\uA550"+
-        "\uA551\uA553\uA554\uA555\uA556\uA557\uA558\uA559"+
-        "\uA55A\uA55B\uA55C\uA55D\uA561\uA562\uA563\uA564"+
-        "\uA565\uA566\uA567\uA568\uA569\uA56A\uA56B\uA56C"+
-        "\uA56D\uA56E\uA56F\uA570\uA571\uA573\uA574\uA575"+
-        "\uA576\uA577\uA578\uA579\uA57A\uA57B\uA57C\uA57D"+
-        "\uA581\uA582\uA583\uA584\uA585\uA586\uA587\uA588"+
-        "\uA589\uA58A\uA58B\uA58C\uA58D\uA58E\uA58F\uA590"+
-        "\uA591\uA593\uA594\uA595\uA596\uA597\uA598\uA599"+
-        "\uA59A\uA59B\uA59C\uA59D\uA5A1\uA5A2\uA5A3\uA5A4"+
-        "\uA5A5\uA5A6\uA5A7\uA5A8\uA5A9\uA5AA\uA5AB\uA5AC"+
-        "\uA5AD\uA5AE\uA5AF\uA5B0\uA5B1\uA5B3\uA5B4\uA5B5"+
-        "\uA5B6\uA5B7\uA5B8\uA5B9\uA5BA\uA5BB\uA5BC\uA5BD"+
-        "\uA5C1\uA5C2\uA5C3\uA5C4\uA5C5\uA5C6\uA5C7\uA5C8"+
-        "\uA5C9\uA5CA\uA5CB\uA5CC\uA5CD\uA5CE\uA5CF\uA5D0"+
-        "\uA5D1\uA5D3\uA5D4\uA5D5\uA5D6\uA5D7\uA5D8\uA5D9"+
-        "\uA5DA\uA5DB\uA5DC\uA5DD\uA5E1\uA5E2\uA5E3\uA5E4"+
-        "\uA5E5\uA5E6\uA5E7\uA5E8\uA5E9\uA5EA\uA5EB\uA5EC"+
-        "\uA5ED\uA5EE\uA5EF\uA5F0\uA5F1\uA5F3\uA5F4\uA5F5"+
-        "\uA5F6\uA5F7\uA5F8\uA5F9\uA5FA\uA5FB\uA5FC\uA5FD"+
-        "\uA641\uA642\uA643\uA644\uA645\uA646\uA647\uA648"+
-        "\uA649\uA64A\uA64B\uA64C\uA64D\uA64E\uA64F\uA650"+
-        "\uA651\uA653\uA654\uA655\uA656\uA657\uA658\uA659"+
-        "\uA65A\uA65B\uA65C\uA65D\uA661\uA662\uA663\uA664"+
-        "\uA665\uA666\uA667\uA668\uA669\uA66A\uA66B\uA66C"+
-        "\uA66D\uA66E\uA66F\uA670\uA671\uA673\uA674\uA675"+
-        "\uA676\uA677\uA678\uA679\uA67A\uA67B\uA67C\uA67D"+
-        "\uA681\uA682\uA683\uA684\uA685\uA686\uA687\uA688"+
-        "\uA689\uA68A\uA68B\uA68C\uA68D\uA68E\uA68F\uA690"+
-        "\uA691\uA693\uA694\uA695\uA696\uA697\uA698\uA699"+
-        "\uA69A\uA69B\uA69C\uA69D\uA6A1\uA6A2\uA6A3\uA6A4"+
-        "\uA6A5\uA6A6\uA6A7\uA6A8\uA6A9\uA6AA\uA6AB\uA6AC"+
-        "\uA6AD\uA6AE\uA6AF\uA6B0\uA6B1\uA6B3\uA6B4\uA6B5"+
-        "\uA6B6\uA6B7\uA6B8\uA6B9\uA6BA\uA6BB\uA6BC\uA6BD"+
-        "\uA6C1\uA6C2\uA6C3\uA6C4\uA6C5\uA6C6\uA6C7\uA6C8"+
-        "\uA6C9\uA6CA\uA6CB\uA6CC\uA6CD\uA6CE\uA6CF\uA6D0"+
-        "\uA6D1\uA6D3\uA6D4\uA6D5\uA6D6\uA6D7\uA6D8\uA6D9"+
-        "\uA6DA\uA6DB\uA6DC\uA6DD\uA6E1\uA6E2\uA6E3\uA6E4"+
-        "\uA6E5\uA6E6\uA6E7\uA6E8\uA6E9\uA6EA\uA6EB\uA6EC"+
-        "\uA6ED\uA6EE\uA6EF\uA6F0\uA6F1\uA6F3\uA6F4\uA6F5"+
-        "\uA6F6\uA6F7\uA6F8\uA6F9\uA6FA\uA6FB\uA6FC\uA6FD"+
-        "\uA741\uA742\uA743\uA744\uA745\uA746\uA747\uA748"+
-        "\uA749\uA74A\uA74B\uA74C\uA74D\uA74E\uA74F\uA750"+
-        "\uA751\uA753\uA754\uA755\uA756\uA757\uA758\uA759"+
-        "\uA75A\uA75B\uA75C\uA75D\uA761\uA762\uA763\uA764"+
-        "\uA765\uA766\uA767\uA768\uA769\uA76A\uA76B\uA76C"+
-        "\uA76D\uA76E\uA76F\uA770\uA771\uA773\uA774\uA775"+
-        "\uA776\uA777\uA778\uA779\uA77A\uA77B\uA77C\uA77D"+
-        "\uA781\uA782\uA783\uA784\uA785\uA786\uA787\uA788"+
-        "\uA789\uA78A\uA78B\uA78C\uA78D\uA78E\uA78F\uA790"+
-        "\uA791\uA793\uA794\uA795\uA796\uA797\uA798\uA799"+
-        "\uA79A\uA79B\uA79C\uA79D\uA7A1\uA7A2\uA7A3\uA7A4"+
-        "\uA7A5\uA7A6\uA7A7\uA7A8\uA7A9\uA7AA\uA7AB\uA7AC"+
-        "\uA7AD\uA7AE\uA7AF\uA7B0\uA7B1\uA7B3\uA7B4\uA7B5"+
-        "\uA7B6\uA7B7\uA7B8\uA7B9\uA7BA\uA7BB\uA7BC\uA7BD"+
-        "\uA861\uA862\uA863\uA864\uA865\uA866\uA867\uA868"+
-        "\uA869\uA86A\uA86B\uA86C\uA86D\uA86E\uA86F\uA870"+
-        "\uA871\uA873\uA874\uA875\uA876\uA877\uA878\uA879"+
-        "\uA87A\uA87B\uA87C\uA87D\uA881\uA882\uA883\uA884"+
-        "\uA885\uA886\uA887\uA888\uA889\uA88A\uA88B\uA88C"+
-        "\uA88D\uA88E\uA88F\uA890\uA891\uA893\uA894\uA895"+
-        "\uA896\uA897\uA898\uA899\uA89A\uA89B\uA89C\uA89D"+
-        "\uA8A1\uA8A2\uA8A3\uA8A4\uA8A5\uA8A6\uA8A7\uA8A8"+
-        "\uA8A9\uA8AA\uA8AB\uA8AC\uA8AD\uA8AE\uA8AF\uA8B0"+
-        "\uA8B1\uA8B3\uA8B4\uA8B5\uA8B6\uA8B7\uA8B8\uA8B9"+
-        "\uA8BA\uA8BB\uA8BC\uA8BD\uA8C1\uA8C2\uA8C3\uA8C4"+
-        "\uA8C5\uA8C6\uA8C7\uA8C8\uA8C9\uA8CA\uA8CB\uA8CC"+
-        "\uA8CD\uA8CE\uA8CF\uA8D0\uA8D1\uA8D3\uA8D4\uA8D5"+
-        "\uA8D6\uA8D7\uA8D8\uA8D9\uA8DA\uA8DB\uA8DC\uA8DD"+
-        "\uA8E1\uA8E2\uA8E3\uA8E4\uA8E5\uA8E6\uA8E7\uA8E8"+
-        "\uA8E9\uA8EA\uA8EB\uA8EC\uA8ED\uA8EE\uA8EF\uA8F0"+
-        "\uA8F1\uA8F3\uA8F4\uA8F5\uA8F6\uA8F7\uA8F8\uA8F9"+
-        "\uA8FA\uA8FB\uA8FC\uA8FD\uA941\uA942\uA943\uA944"+
-        "\uA945\uA946\uA947\uA948\uA949\uA94A\uA94B\uA94C"+
-        "\uA94D\uA94E\uA94F\uA950\uA951\uA953\uA954\uA955"+
-        "\uA956\uA957\uA958\uA959\uA95A\uA95B\uA95C\uA95D"+
-        "\uA961\uA962\uA963\uA964\uA965\uA966\uA967\uA968"+
-        "\uA969\uA96A\uA96B\uA96C\uA96D\uA96E\uA96F\uA970"+
-        "\uA971\uA973\uA974\uA975\uA976\uA977\uA978\uA979"+
-        "\uA97A\uA97B\uA97C\uA97D\uA981\uA982\uA983\uA984"+
-        "\uA985\uA986\uA987\uA988\uA989\uA98A\uA98B\uA98C"+
-        "\uA98D\uA98E\uA98F\uA990\uA991\uA993\uA994\uA995"+
-        "\uA996\uA997\uA998\uA999\uA99A\uA99B\uA99C\uA99D"+
-        "\uA9A1\uA9A2\uA9A3\uA9A4\uA9A5\uA9A6\uA9A7\uA9A8"+
-        "\uA9A9\uA9AA\uA9AB\uA9AC\uA9AD\uA9AE\uA9AF\uA9B0"+
-        "\uA9B1\uA9B3\uA9B4\uA9B5\uA9B6\uA9B7\uA9B8\uA9B9"+
-        "\uA9BA\uA9BB\uA9BC\uA9BD\uA9C1\uA9C2\uA9C3\uA9C4"+
-        "\uA9C5\uA9C6\uA9C7\uA9C8\uA9C9\uA9CA\uA9CB\uA9CC"+
-        "\uA9CD\uA9CE\uA9CF\uA9D0\uA9D1\uA9D3\uA9D4\uA9D5"+
-        "\uA9D6\uA9D7\uA9D8\uA9D9\uA9DA\uA9DB\uA9DC\uA9DD"+
-        "\uA9E1\uA9E2\uA9E3\uA9E4\uA9E5\uA9E6\uA9E7\uA9E8"+
-        "\uA9E9\uA9EA\uA9EB\uA9EC\uA9ED\uA9EE\uA9EF\uA9F0"+
-        "\uA9F1\uA9F3\uA9F4\uA9F5\uA9F6\uA9F7\uA9F8\uA9F9"+
-        "\uA9FA\uA9FB\uA9FC\uA9FD\uAA41\uAA42\uAA43\uAA44"+
-        "\uAA45\uAA46\uAA47\uAA48\uAA49\uAA4A\uAA4B\uAA4C"+
-        "\uAA4D\uAA4E\uAA4F\uAA50\uAA51\uAA53\uAA54\uAA55"+
-        "\uAA56\uAA57\uAA58\uAA59\uAA5A\uAA5B\uAA5C\uAA5D"+
-        "\uAA61\uAA62\uAA63\uAA64\uAA65\uAA66\uAA67\uAA68"+
-        "\uAA69\uAA6A\uAA6B\uAA6C\uAA6D\uAA6E\uAA6F\uAA70"+
-        "\uAA71\uAA73\uAA74\uAA75\uAA76\uAA77\uAA78\uAA79"+
-        "\uAA7A\uAA7B\uAA7C\uAA7D\uAA81\uAA82\uAA83\uAA84"+
-        "\uAA85\uAA86\uAA87\uAA88\uAA89\uAA8A\uAA8B\uAA8C"+
-        "\uAA8D\uAA8E\uAA8F\uAA90\uAA91\uAA93\uAA94\uAA95"+
-        "\uAA96\uAA97\uAA98\uAA99\uAA9A\uAA9B\uAA9C\uAA9D"+
-        "\uAAA1\uAAA2\uAAA3\uAAA4\uAAA5\uAAA6\uAAA7\uAAA8"+
-        "\uAAA9\uAAAA\uAAAB\uAAAC\uAAAD\uAAAE\uAAAF\uAAB0"+
-        "\uAAB1\uAAB3\uAAB4\uAAB5\uAAB6\uAAB7\uAAB8\uAAB9"+
-        "\uAABA\uAABB\uAABC\uAABD\uAAC1\uAAC2\uAAC3\uAAC4"+
-        "\uAAC5\uAAC6\uAAC7\uAAC8\uAAC9\uAACA\uAACB\uAACC"+
-        "\uAACD\uAACE\uAACF\uAAD0\uAAD1\uAAD3\uAAD4\uAAD5"+
-        "\uAAD6\uAAD7\uAAD8\uAAD9\uAADA\uAADB\uAADC\uAADD"+
-        "\uAAE1\uAAE2\uAAE3\uAAE4\uAAE5\uAAE6\uAAE7\uAAE8"+
-        "\uAAE9\uAAEA\uAAEB\uAAEC\uAAED\uAAEE\uAAEF\uAAF0"+
-        "\uAAF1\uAAF3\uAAF4\uAAF5\uAAF6\uAAF7\uAAF8\uAAF9"+
-        "\uAAFA\uAAFB\uAAFC\uAAFD\uAB41\uAB42\uAB43\uAB44"+
-        "\uAB45\uAB46\uAB47\uAB48\uAB49\uAB4A\uAB4B\uAB4C"+
-        "\uAB4D\uAB4E\uAB4F\uAB50\uAB51\uAB53\uAB54\uAB55"+
-        "\uAB56\uAB57\uAB58\uAB59\uAB5A\uAB5B\uAB5C\uAB5D"+
-        "\uAB61\uAB62\uAB63\uAB64\uAB65\uAB66\uAB67\uAB68"+
-        "\uAB69\uAB6A\uAB6B\uAB6C\uAB6D\uAB6E\uAB6F\uAB70"+
-        "\uAB71\uAB73\uAB74\uAB75\uAB76\uAB77\uAB78\uAB79"+
-        "\uAB7A\uAB7B\uAB7C\uAB7D\uAB81\uAB82\uAB83\uAB84"+
-        "\uAB85\uAB86\uAB87\uAB88\uAB89\uAB8A\uAB8B\uAB8C"+
-        "\uAB8D\uAB8E\uAB8F\uAB90\uAB91\uAB93\uAB94\uAB95"+
-        "\uAB96\uAB97\uAB98\uAB99\uAB9A\uAB9B\uAB9C\uAB9D"+
-        "\uABA1\uABA2\uABA3\uABA4\uABA5\uABA6\uABA7\uABA8"+
-        "\uABA9\uABAA\uABAB\uABAC\uABAD\uABAE\uABAF\uABB0"+
-        "\uABB1\uABB3\uABB4\uABB5\uABB6\uABB7\uABB8\uABB9"+
-        "\uABBA\uABBB\uABBC\uABBD\uAC61\uAC62\uAC63\uAC64"+
-        "\uAC65\uAC66\uAC67\uAC68\uAC69\uAC6A\uAC6B\uAC6C"+
-        "\uAC6D\uAC6E\uAC6F\uAC70\uAC71\uAC73\uAC74\uAC75"+
-        "\uAC76\uAC77\uAC78\uAC79\uAC7A\uAC7B\uAC7C\uAC7D"+
-        "\uAC81\uAC82\uAC83\uAC84\uAC85\uAC86\uAC87\uAC88"+
-        "\uAC89\uAC8A\uAC8B\uAC8C\uAC8D\uAC8E\uAC8F\uAC90"+
-        "\uAC91\uAC93\uAC94\uAC95\uAC96\uAC97\uAC98\uAC99"+
-        "\uAC9A\uAC9B\uAC9C\uAC9D\uACA1\uACA2\uACA3\uACA4"+
-        "\uACA5\uACA6\uACA7\uACA8\uACA9\uACAA\uACAB\uACAC"+
-        "\uACAD\uACAE\uACAF\uACB0\uACB1\uACB3\uACB4\uACB5"+
-        "\uACB6\uACB7\uACB8\uACB9\uACBA\uACBB\uACBC\uACBD"+
-        "\uACC1\uACC2\uACC3\uACC4\uACC5\uACC6\uACC7\uACC8"+
-        "\uACC9\uACCA\uACCB\uACCC\uACCD\uACCE\uACCF\uACD0"+
-        "\uACD1\uACD3\uACD4\uACD5\uACD6\uACD7\uACD8\uACD9"+
-        "\uACDA\uACDB\uACDC\uACDD\uACE1\uACE2\uACE3\uACE4"+
-        "\uACE5\uACE6\uACE7\uACE8\uACE9\uACEA\uACEB\uACEC"+
-        "\uACED\uACEE\uACEF\uACF0\uACF1\uACF3\uACF4\uACF5"+
-        "\uACF6\uACF7\uACF8\uACF9\uACFA\uACFB\uACFC\uACFD"+
-        "\uAD41\uAD42\uAD43\uAD44\uAD45\uAD46\uAD47\uAD48"+
-        "\uAD49\uAD4A\uAD4B\uAD4C\uAD4D\uAD4E\uAD4F\uAD50"+
-        "\uAD51\uAD53\uAD54\uAD55\uAD56\uAD57\uAD58\uAD59"+
-        "\uAD5A\uAD5B\uAD5C\uAD5D\uAD61\uAD62\uAD63\uAD64"+
-        "\uAD65\uAD66\uAD67\uAD68\uAD69\uAD6A\uAD6B\uAD6C"+
-        "\uAD6D\uAD6E\uAD6F\uAD70\uAD71\uAD73\uAD74\uAD75"+
-        "\uAD76\uAD77\uAD78\uAD79\uAD7A\uAD7B\uAD7C\uAD7D"+
-        "\uAD81\uAD82\uAD83\uAD84\uAD85\uAD86\uAD87\uAD88"+
-        "\uAD89\uAD8A\uAD8B\uAD8C\uAD8D\uAD8E\uAD8F\uAD90"+
-        "\uAD91\uAD93\uAD94\uAD95\uAD96\uAD97\uAD98\uAD99"+
-        "\uAD9A\uAD9B\uAD9C\uAD9D\uADA1\uADA2\uADA3\uADA4"+
-        "\uADA5\uADA6\uADA7\uADA8\uADA9\uADAA\uADAB\uADAC"+
-        "\uADAD\uADAE\uADAF\uADB0\uADB1\uADB3\uADB4\uADB5"+
-        "\uADB6\uADB7\uADB8\uADB9\uADBA\uADBB\uADBC\uADBD"+
-        "\uADC1\uADC2\uADC3\uADC4\uADC5\uADC6\uADC7\uADC8"+
-        "\uADC9\uADCA\uADCB\uADCC\uADCD\uADCE\uADCF\uADD0"+
-        "\uADD1\uADD3\uADD4\uADD5\uADD6\uADD7\uADD8\uADD9"+
-        "\uADDA\uADDB\uADDC\uADDD\uADE1\uADE2\uADE3\uADE4"+
-        "\uADE5\uADE6\uADE7\uADE8\uADE9\uADEA\uADEB\uADEC"+
-        "\uADED\uADEE\uADEF\uADF0\uADF1\uADF3\uADF4\uADF5"+
-        "\uADF6\uADF7\uADF8\uADF9\uADFA\uADFB\uADFC\uADFD"+
-        "\uAE41\uAE42\uAE43\uAE44\uAE45\uAE46\uAE47\uAE48"+
-        "\uAE49\uAE4A\uAE4B\uAE4C\uAE4D\uAE4E\uAE4F\uAE50"+
-        "\uAE51\uAE53\uAE54\uAE55\uAE56\uAE57\uAE58\uAE59"+
-        "\uAE5A\uAE5B\uAE5C\uAE5D\uAE61\uAE62\uAE63\uAE64"+
-        "\uAE65\uAE66\uAE67\uAE68\uAE69\uAE6A\uAE6B\uAE6C"+
-        "\uAE6D\uAE6E\uAE6F\uAE70\uAE71\uAE73\uAE74\uAE75"+
-        "\uAE76\uAE77\uAE78\uAE79\uAE7A\uAE7B\uAE7C\uAE7D"+
-        "\uAE81\uAE82\uAE83\uAE84\uAE85\uAE86\uAE87\uAE88"+
-        "\uAE89\uAE8A\uAE8B\uAE8C\uAE8D\uAE8E\uAE8F\uAE90"+
-        "\uAE91\uAE93\uAE94\uAE95\uAE96\uAE97\uAE98\uAE99"+
-        "\uAE9A\uAE9B\uAE9C\uAE9D\uAEA1\uAEA2\uAEA3\uAEA4"+
-        "\uAEA5\uAEA6\uAEA7\uAEA8\uAEA9\uAEAA\uAEAB\uAEAC"+
-        "\uAEAD\uAEAE\uAEAF\uAEB0\uAEB1\uAEB3\uAEB4\uAEB5"+
-        "\uAEB6\uAEB7\uAEB8\uAEB9\uAEBA\uAEBB\uAEBC\uAEBD"+
-        "\uAEC1\uAEC2\uAEC3\uAEC4\uAEC5\uAEC6\uAEC7\uAEC8"+
-        "\uAEC9\uAECA\uAECB\uAECC\uAECD\uAECE\uAECF\uAED0"+
-        "\uAED1\uAED3\uAED4\uAED5\uAED6\uAED7\uAED8\uAED9"+
-        "\uAEDA\uAEDB\uAEDC\uAEDD\uAEE1\uAEE2\uAEE3\uAEE4"+
-        "\uAEE5\uAEE6\uAEE7\uAEE8\uAEE9\uAEEA\uAEEB\uAEEC"+
-        "\uAEED\uAEEE\uAEEF\uAEF0\uAEF1\uAEF3\uAEF4\uAEF5"+
-        "\uAEF6\uAEF7\uAEF8\uAEF9\uAEFA\uAEFB\uAEFC\uAEFD"+
-        "\uAF41\uAF42\uAF43\uAF44\uAF45\uAF46\uAF47\uAF48"+
-        "\uAF49\uAF4A\uAF4B\uAF4C\uAF4D\uAF4E\uAF4F\uAF50"+
-        "\uAF51\uAF53\uAF54\uAF55\uAF56\uAF57\uAF58\uAF59"+
-        "\uAF5A\uAF5B\uAF5C\uAF5D\uAF61\uAF62\uAF63\uAF64"+
-        "\uAF65\uAF66\uAF67\uAF68\uAF69\uAF6A\uAF6B\uAF6C"+
-        "\uAF6D\uAF6E\uAF6F\uAF70\uAF71\uAF73\uAF74\uAF75"+
-        "\uAF76\uAF77\uAF78\uAF79\uAF7A\uAF7B\uAF7C\uAF7D"+
-        "\uAF81\uAF82\uAF83\uAF84\uAF85\uAF86\uAF87\uAF88"+
-        "\uAF89\uAF8A\uAF8B\uAF8C\uAF8D\uAF8E\uAF8F\uAF90"+
-        "\uAF91\uAF93\uAF94\uAF95\uAF96\uAF97\uAF98\uAF99"+
-        "\uAF9A\uAF9B\uAF9C\uAF9D\uAFA1\uAFA2\uAFA3\uAFA4"+
-        "\uAFA5\uAFA6\uAFA7\uAFA8\uAFA9\uAFAA\uAFAB\uAFAC"+
-        "\uAFAD\uAFAE\uAFAF\uAFB0\uAFB1\uAFB3\uAFB4\uAFB5"+
-        "\uAFB6\uAFB7\uAFB8\uAFB9\uAFBA\uAFBB\uAFBC\uAFBD"+
-        "\uB061\uB062\uB063\uB064\uB065\uB066\uB067\uB068"+
-        "\uB069\uB06A\uB06B\uB06C\uB06D\uB06E\uB06F\uB070"+
-        "\uB071\uB073\uB074\uB075\uB076\uB077\uB078\uB079"+
-        "\uB07A\uB07B\uB07C\uB07D\uB081\uB082\uB083\uB084"+
-        "\uB085\uB086\uB087\uB088\uB089\uB08A\uB08B\uB08C"+
-        "\uB08D\uB08E\uB08F\uB090\uB091\uB093\uB094\uB095"+
-        "\uB096\uB097\uB098\uB099\uB09A\uB09B\uB09C\uB09D"+
-        "\uB0A1\uB0A2\uB0A3\uB0A4\uB0A5\uB0A6\uB0A7\uB0A8"+
-        "\uB0A9\uB0AA\uB0AB\uB0AC\uB0AD\uB0AE\uB0AF\uB0B0"+
-        "\uB0B1\uB0B3\uB0B4\uB0B5\uB0B6\uB0B7\uB0B8\uB0B9"+
-        "\uB0BA\uB0BB\uB0BC\uB0BD\uB0C1\uB0C2\uB0C3\uB0C4"+
-        "\uB0C5\uB0C6\uB0C7\uB0C8\uB0C9\uB0CA\uB0CB\uB0CC"+
-        "\uB0CD\uB0CE\uB0CF\uB0D0\uB0D1\uB0D3\uB0D4\uB0D5"+
-        "\uB0D6\uB0D7\uB0D8\uB0D9\uB0DA\uB0DB\uB0DC\uB0DD"+
-        "\uB0E1\uB0E2\uB0E3\uB0E4\uB0E5\uB0E6\uB0E7\uB0E8"+
-        "\uB0E9\uB0EA\uB0EB\uB0EC\uB0ED\uB0EE\uB0EF\uB0F0"+
-        "\uB0F1\uB0F3\uB0F4\uB0F5\uB0F6\uB0F7\uB0F8\uB0F9"+
-        "\uB0FA\uB0FB\uB0FC\uB0FD\uB141\uB142\uB143\uB144"+
-        "\uB145\uB146\uB147\uB148\uB149\uB14A\uB14B\uB14C"+
-        "\uB14D\uB14E\uB14F\uB150\uB151\uB153\uB154\uB155"+
-        "\uB156\uB157\uB158\uB159\uB15A\uB15B\uB15C\uB15D"+
-        "\uB161\uB162\uB163\uB164\uB165\uB166\uB167\uB168"+
-        "\uB169\uB16A\uB16B\uB16C\uB16D\uB16E\uB16F\uB170"+
-        "\uB171\uB173\uB174\uB175\uB176\uB177\uB178\uB179"+
-        "\uB17A\uB17B\uB17C\uB17D\uB181\uB182\uB183\uB184"+
-        "\uB185\uB186\uB187\uB188\uB189\uB18A\uB18B\uB18C"+
-        "\uB18D\uB18E\uB18F\uB190\uB191\uB193\uB194\uB195"+
-        "\uB196\uB197\uB198\uB199\uB19A\uB19B\uB19C\uB19D"+
-        "\uB1A1\uB1A2\uB1A3\uB1A4\uB1A5\uB1A6\uB1A7\uB1A8"+
-        "\uB1A9\uB1AA\uB1AB\uB1AC\uB1AD\uB1AE\uB1AF\uB1B0"+
-        "\uB1B1\uB1B3\uB1B4\uB1B5\uB1B6\uB1B7\uB1B8\uB1B9"+
-        "\uB1BA\uB1BB\uB1BC\uB1BD\uB1C1\uB1C2\uB1C3\uB1C4"+
-        "\uB1C5\uB1C6\uB1C7\uB1C8\uB1C9\uB1CA\uB1CB\uB1CC"+
-        "\uB1CD\uB1CE\uB1CF\uB1D0\uB1D1\uB1D3\uB1D4\uB1D5"+
-        "\uB1D6\uB1D7\uB1D8\uB1D9\uB1DA\uB1DB\uB1DC\uB1DD"+
-        "\uB1E1\uB1E2\uB1E3\uB1E4\uB1E5\uB1E6\uB1E7\uB1E8"+
-        "\uB1E9\uB1EA\uB1EB\uB1EC\uB1ED\uB1EE\uB1EF\uB1F0"+
-        "\uB1F1\uB1F3\uB1F4\uB1F5\uB1F6\uB1F7\uB1F8\uB1F9"+
-        "\uB1FA\uB1FB\uB1FC\uB1FD\uB241\uB242\uB243\uB244"+
-        "\uB245\uB246\uB247\uB248\uB249\uB24A\uB24B\uB24C"+
-        "\uB24D\uB24E\uB24F\uB250\uB251\uB253\uB254\uB255"+
-        "\uB256\uB257\uB258\uB259\uB25A\uB25B\uB25C\uB25D"+
-        "\uB261\uB262\uB263\uB264\uB265\uB266\uB267\uB268"+
-        "\uB269\uB26A\uB26B\uB26C\uB26D\uB26E\uB26F\uB270"+
-        "\uB271\uB273\uB274\uB275\uB276\uB277\uB278\uB279"+
-        "\uB27A\uB27B\uB27C\uB27D\uB281\uB282\uB283\uB284"+
-        "\uB285\uB286\uB287\uB288\uB289\uB28A\uB28B\uB28C"+
-        "\uB28D\uB28E\uB28F\uB290\uB291\uB293\uB294\uB295"+
-        "\uB296\uB297\uB298\uB299\uB29A\uB29B\uB29C\uB29D"+
-        "\uB2A1\uB2A2\uB2A3\uB2A4\uB2A5\uB2A6\uB2A7\uB2A8"+
-        "\uB2A9\uB2AA\uB2AB\uB2AC\uB2AD\uB2AE\uB2AF\uB2B0"+
-        "\uB2B1\uB2B3\uB2B4\uB2B5\uB2B6\uB2B7\uB2B8\uB2B9"+
-        "\uB2BA\uB2BB\uB2BC\uB2BD\uB2C1\uB2C2\uB2C3\uB2C4"+
-        "\uB2C5\uB2C6\uB2C7\uB2C8\uB2C9\uB2CA\uB2CB\uB2CC"+
-        "\uB2CD\uB2CE\uB2CF\uB2D0\uB2D1\uB2D3\uB2D4\uB2D5"+
-        "\uB2D6\uB2D7\uB2D8\uB2D9\uB2DA\uB2DB\uB2DC\uB2DD"+
-        "\uB2E1\uB2E2\uB2E3\uB2E4\uB2E5\uB2E6\uB2E7\uB2E8"+
-        "\uB2E9\uB2EA\uB2EB\uB2EC\uB2ED\uB2EE\uB2EF\uB2F0"+
-        "\uB2F1\uB2F3\uB2F4\uB2F5\uB2F6\uB2F7\uB2F8\uB2F9"+
-        "\uB2FA\uB2FB\uB2FC\uB2FD\uB341\uB342\uB343\uB344"+
-        "\uB345\uB346\uB347\uB348\uB349\uB34A\uB34B\uB34C"+
-        "\uB34D\uB34E\uB34F\uB350\uB351\uB353\uB354\uB355"+
-        "\uB356\uB357\uB358\uB359\uB35A\uB35B\uB35C\uB35D"+
-        "\uB361\uB362\uB363\uB364\uB365\uB366\uB367\uB368"+
-        "\uB369\uB36A\uB36B\uB36C\uB36D\uB36E\uB36F\uB370"+
-        "\uB371\uB373\uB374\uB375\uB376\uB377\uB378\uB379"+
-        "\uB37A\uB37B\uB37C\uB37D\uB381\uB382\uB383\uB384"+
-        "\uB385\uB386\uB387\uB388\uB389\uB38A\uB38B\uB38C"+
-        "\uB38D\uB38E\uB38F\uB390\uB391\uB393\uB394\uB395"+
-        "\uB396\uB397\uB398\uB399\uB39A\uB39B\uB39C\uB39D"+
-        "\uB3A1\uB3A2\uB3A3\uB3A4\uB3A5\uB3A6\uB3A7\uB3A8"+
-        "\uB3A9\uB3AA\uB3AB\uB3AC\uB3AD\uB3AE\uB3AF\uB3B0"+
-        "\uB3B1\uB3B3\uB3B4\uB3B5\uB3B6\uB3B7\uB3B8\uB3B9"+
-        "\uB3BA\uB3BB\uB3BC\uB3BD\uB461\uB462\uB463\uB464"+
-        "\uB465\uB466\uB467\uB468\uB469\uB46A\uB46B\uB46C"+
-        "\uB46D\uB46E\uB46F\uB470\uB471\uB473\uB474\uB475"+
-        "\uB476\uB477\uB478\uB479\uB47A\uB47B\uB47C\uB47D"+
-        "\uB481\uB482\uB483\uB484\uB485\uB486\uB487\uB488"+
-        "\uB489\uB48A\uB48B\uB48C\uB48D\uB48E\uB48F\uB490"+
-        "\uB491\uB493\uB494\uB495\uB496\uB497\uB498\uB499"+
-        "\uB49A\uB49B\uB49C\uB49D\uB4A1\uB4A2\uB4A3\uB4A4"+
-        "\uB4A5\uB4A6\uB4A7\uB4A8\uB4A9\uB4AA\uB4AB\uB4AC"+
-        "\uB4AD\uB4AE\uB4AF\uB4B0\uB4B1\uB4B3\uB4B4\uB4B5"+
-        "\uB4B6\uB4B7\uB4B8\uB4B9\uB4BA\uB4BB\uB4BC\uB4BD"+
-        "\uB4C1\uB4C2\uB4C3\uB4C4\uB4C5\uB4C6\uB4C7\uB4C8"+
-        "\uB4C9\uB4CA\uB4CB\uB4CC\uB4CD\uB4CE\uB4CF\uB4D0"+
-        "\uB4D1\uB4D3\uB4D4\uB4D5\uB4D6\uB4D7\uB4D8\uB4D9"+
-        "\uB4DA\uB4DB\uB4DC\uB4DD\uB4E1\uB4E2\uB4E3\uB4E4"+
-        "\uB4E5\uB4E6\uB4E7\uB4E8\uB4E9\uB4EA\uB4EB\uB4EC"+
-        "\uB4ED\uB4EE\uB4EF\uB4F0\uB4F1\uB4F3\uB4F4\uB4F5"+
-        "\uB4F6\uB4F7\uB4F8\uB4F9\uB4FA\uB4FB\uB4FC\uB4FD"+
-        "\uB541\uB542\uB543\uB544\uB545\uB546\uB547\uB548"+
-        "\uB549\uB54A\uB54B\uB54C\uB54D\uB54E\uB54F\uB550"+
-        "\uB551\uB553\uB554\uB555\uB556\uB557\uB558\uB559"+
-        "\uB55A\uB55B\uB55C\uB55D\uB561\uB562\uB563\uB564"+
-        "\uB565\uB566\uB567\uB568\uB569\uB56A\uB56B\uB56C"+
-        "\uB56D\uB56E\uB56F\uB570\uB571\uB573\uB574\uB575"+
-        "\uB576\uB577\uB578\uB579\uB57A\uB57B\uB57C\uB57D"+
-        "\uB581\uB582\uB583\uB584\uB585\uB586\uB587\uB588"+
-        "\uB589\uB58A\uB58B\uB58C\uB58D\uB58E\uB58F\uB590"+
-        "\uB591\uB593\uB594\uB595\uB596\uB597\uB598\uB599"+
-        "\uB59A\uB59B\uB59C\uB59D\uB5A1\uB5A2\uB5A3\uB5A4"+
-        "\uB5A5\uB5A6\uB5A7\uB5A8\uB5A9\uB5AA\uB5AB\uB5AC"+
-        "\uB5AD\uB5AE\uB5AF\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5"+
-        "\uB5B6\uB5B7\uB5B8\uB5B9\uB5BA\uB5BB\uB5BC\uB5BD"+
-        "\uB5C1\uB5C2\uB5C3\uB5C4\uB5C5\uB5C6\uB5C7\uB5C8"+
-        "\uB5C9\uB5CA\uB5CB\uB5CC\uB5CD\uB5CE\uB5CF\uB5D0"+
-        "\uB5D1\uB5D3\uB5D4\uB5D5\uB5D6\uB5D7\uB5D8\uB5D9"+
-        "\uB5DA\uB5DB\uB5DC\uB5DD\uB5E1\uB5E2\uB5E3\uB5E4"+
-        "\uB5E5\uB5E6\uB5E7\uB5E8\uB5E9\uB5EA\uB5EB\uB5EC"+
-        "\uB5ED\uB5EE\uB5EF\uB5F0\uB5F1\uB5F3\uB5F4\uB5F5"+
-        "\uB5F6\uB5F7\uB5F8\uB5F9\uB5FA\uB5FB\uB5FC\uB5FD"+
-        "\uB641\uB642\uB643\uB644\uB645\uB646\uB647\uB648"+
-        "\uB649\uB64A\uB64B\uB64C\uB64D\uB64E\uB64F\uB650"+
-        "\uB651\uB653\uB654\uB655\uB656\uB657\uB658\uB659"+
-        "\uB65A\uB65B\uB65C\uB65D\uB661\uB662\uB663\uB664"+
-        "\uB665\uB666\uB667\uB668\uB669\uB66A\uB66B\uB66C"+
-        "\uB66D\uB66E\uB66F\uB670\uB671\uB673\uB674\uB675"+
-        "\uB676\uB677\uB678\uB679\uB67A\uB67B\uB67C\uB67D"+
-        "\uB681\uB682\uB683\uB684\uB685\uB686\uB687\uB688"+
-        "\uB689\uB68A\uB68B\uB68C\uB68D\uB68E\uB68F\uB690"+
-        "\uB691\uB693\uB694\uB695\uB696\uB697\uB698\uB699"+
-        "\uB69A\uB69B\uB69C\uB69D\uB6A1\uB6A2\uB6A3\uB6A4"+
-        "\uB6A5\uB6A6\uB6A7\uB6A8\uB6A9\uB6AA\uB6AB\uB6AC"+
-        "\uB6AD\uB6AE\uB6AF\uB6B0\uB6B1\uB6B3\uB6B4\uB6B5"+
-        "\uB6B6\uB6B7\uB6B8\uB6B9\uB6BA\uB6BB\uB6BC\uB6BD"+
-        "\uB6C1\uB6C2\uB6C3\uB6C4\uB6C5\uB6C6\uB6C7\uB6C8"+
-        "\uB6C9\uB6CA\uB6CB\uB6CC\uB6CD\uB6CE\uB6CF\uB6D0"+
-        "\uB6D1\uB6D3\uB6D4\uB6D5\uB6D6\uB6D7\uB6D8\uB6D9"+
-        "\uB6DA\uB6DB\uB6DC\uB6DD\uB6E1\uB6E2\uB6E3\uB6E4"+
-        "\uB6E5\uB6E6\uB6E7\uB6E8\uB6E9\uB6EA\uB6EB\uB6EC"+
-        "\uB6ED\uB6EE\uB6EF\uB6F0\uB6F1\uB6F3\uB6F4\uB6F5"+
-        "\uB6F6\uB6F7\uB6F8\uB6F9\uB6FA\uB6FB\uB6FC\uB6FD"+
-        "\uB741\uB742\uB743\uB744\uB745\uB746\uB747\uB748"+
-        "\uB749\uB74A\uB74B\uB74C\uB74D\uB74E\uB74F\uB750"+
-        "\uB751\uB753\uB754\uB755\uB756\uB757\uB758\uB759"+
-        "\uB75A\uB75B\uB75C\uB75D\uB761\uB762\uB763\uB764"+
-        "\uB765\uB766\uB767\uB768\uB769\uB76A\uB76B\uB76C"+
-        "\uB76D\uB76E\uB76F\uB770\uB771\uB773\uB774\uB775"+
-        "\uB776\uB777\uB778\uB779\uB77A\uB77B\uB77C\uB77D"+
-        "\uB781\uB782\uB783\uB784\uB785\uB786\uB787\uB788"+
-        "\uB789\uB78A\uB78B\uB78C\uB78D\uB78E\uB78F\uB790"+
-        "\uB791\uB793\uB794\uB795\uB796\uB797\uB798\uB799"+
-        "\uB79A\uB79B\uB79C\uB79D\uB7A1\uB7A2\uB7A3\uB7A4"+
-        "\uB7A5\uB7A6\uB7A7\uB7A8\uB7A9\uB7AA\uB7AB\uB7AC"+
-        "\uB7AD\uB7AE\uB7AF\uB7B0\uB7B1\uB7B3\uB7B4\uB7B5"+
-        "\uB7B6\uB7B7\uB7B8\uB7B9\uB7BA\uB7BB\uB7BC\uB7BD"+
-        "\uB861\uB862\uB863\uB864\uB865\uB866\uB867\uB868"+
-        "\uB869\uB86A\uB86B\uB86C\uB86D\uB86E\uB86F\uB870"+
-        "\uB871\uB873\uB874\uB875\uB876\uB877\uB878\uB879"+
-        "\uB87A\uB87B\uB87C\uB87D\uB881\uB882\uB883\uB884"+
-        "\uB885\uB886\uB887\uB888\uB889\uB88A\uB88B\uB88C"+
-        "\uB88D\uB88E\uB88F\uB890\uB891\uB893\uB894\uB895"+
-        "\uB896\uB897\uB898\uB899\uB89A\uB89B\uB89C\uB89D"+
-        "\uB8A1\uB8A2\uB8A3\uB8A4\uB8A5\uB8A6\uB8A7\uB8A8"+
-        "\uB8A9\uB8AA\uB8AB\uB8AC\uB8AD\uB8AE\uB8AF\uB8B0"+
-        "\uB8B1\uB8B3\uB8B4\uB8B5\uB8B6\uB8B7\uB8B8\uB8B9"+
-        "\uB8BA\uB8BB\uB8BC\uB8BD\uB8C1\uB8C2\uB8C3\uB8C4"+
-        "\uB8C5\uB8C6\uB8C7\uB8C8\uB8C9\uB8CA\uB8CB\uB8CC"+
-        "\uB8CD\uB8CE\uB8CF\uB8D0\uB8D1\uB8D3\uB8D4\uB8D5"+
-        "\uB8D6\uB8D7\uB8D8\uB8D9\uB8DA\uB8DB\uB8DC\uB8DD"+
-        "\uB8E1\uB8E2\uB8E3\uB8E4\uB8E5\uB8E6\uB8E7\uB8E8"+
-        "\uB8E9\uB8EA\uB8EB\uB8EC\uB8ED\uB8EE\uB8EF\uB8F0"+
-        "\uB8F1\uB8F3\uB8F4\uB8F5\uB8F6\uB8F7\uB8F8\uB8F9"+
-        "\uB8FA\uB8FB\uB8FC\uB8FD\uB941\uB942\uB943\uB944"+
-        "\uB945\uB946\uB947\uB948\uB949\uB94A\uB94B\uB94C"+
-        "\uB94D\uB94E\uB94F\uB950\uB951\uB953\uB954\uB955"+
-        "\uB956\uB957\uB958\uB959\uB95A\uB95B\uB95C\uB95D"+
-        "\uB961\uB962\uB963\uB964\uB965\uB966\uB967\uB968"+
-        "\uB969\uB96A\uB96B\uB96C\uB96D\uB96E\uB96F\uB970"+
-        "\uB971\uB973\uB974\uB975\uB976\uB977\uB978\uB979"+
-        "\uB97A\uB97B\uB97C\uB97D\uB981\uB982\uB983\uB984"+
-        "\uB985\uB986\uB987\uB988\uB989\uB98A\uB98B\uB98C"+
-        "\uB98D\uB98E\uB98F\uB990\uB991\uB993\uB994\uB995"+
-        "\uB996\uB997\uB998\uB999\uB99A\uB99B\uB99C\uB99D"+
-        "\uB9A1\uB9A2\uB9A3\uB9A4\uB9A5\uB9A6\uB9A7\uB9A8"+
-        "\uB9A9\uB9AA\uB9AB\uB9AC\uB9AD\uB9AE\uB9AF\uB9B0"+
-        "\uB9B1\uB9B3\uB9B4\uB9B5\uB9B6\uB9B7\uB9B8\uB9B9"+
-        "\uB9BA\uB9BB\uB9BC\uB9BD\uB9C1\uB9C2\uB9C3\uB9C4"+
-        "\uB9C5\uB9C6\uB9C7\uB9C8\uB9C9\uB9CA\uB9CB\uB9CC"+
-        "\uB9CD\uB9CE\uB9CF\uB9D0\uB9D1\uB9D3\uB9D4\uB9D5"+
-        "\uB9D6\uB9D7\uB9D8\uB9D9\uB9DA\uB9DB\uB9DC\uB9DD"+
-        "\uB9E1\uB9E2\uB9E3\uB9E4\uB9E5\uB9E6\uB9E7\uB9E8"+
-        "\uB9E9\uB9EA\uB9EB\uB9EC\uB9ED\uB9EE\uB9EF\uB9F0"+
-        "\uB9F1\uB9F3\uB9F4\uB9F5\uB9F6\uB9F7\uB9F8\uB9F9"+
-        "\uB9FA\uB9FB\uB9FC\uB9FD\uBA41\uBA42\uBA43\uBA44"+
-        "\uBA45\uBA46\uBA47\uBA48\uBA49\uBA4A\uBA4B\uBA4C"+
-        "\uBA4D\uBA4E\uBA4F\uBA50\uBA51\uBA53\uBA54\uBA55"+
-        "\uBA56\uBA57\uBA58\uBA59\uBA5A\uBA5B\uBA5C\uBA5D"+
-        "\uBA61\uBA62\uBA63\uBA64\uBA65\uBA66\uBA67\uBA68"+
-        "\uBA69\uBA6A\uBA6B\uBA6C\uBA6D\uBA6E\uBA6F\uBA70"+
-        "\uBA71\uBA73\uBA74\uBA75\uBA76\uBA77\uBA78\uBA79"+
-        "\uBA7A\uBA7B\uBA7C\uBA7D\uBA81\uBA82\uBA83\uBA84";
-
-    private final static String innerIndex8=
-        "\uBA85\uBA86\uBA87\uBA88\uBA89\uBA8A\uBA8B\uBA8C"+
-        "\uBA8D\uBA8E\uBA8F\uBA90\uBA91\uBA93\uBA94\uBA95"+
-        "\uBA96\uBA97\uBA98\uBA99\uBA9A\uBA9B\uBA9C\uBA9D"+
-        "\uBAA1\uBAA2\uBAA3\uBAA4\uBAA5\uBAA6\uBAA7\uBAA8"+
-        "\uBAA9\uBAAA\uBAAB\uBAAC\uBAAD\uBAAE\uBAAF\uBAB0"+
-        "\uBAB1\uBAB3\uBAB4\uBAB5\uBAB6\uBAB7\uBAB8\uBAB9"+
-        "\uBABA\uBABB\uBABC\uBABD\uBAC1\uBAC2\uBAC3\uBAC4"+
-        "\uBAC5\uBAC6\uBAC7\uBAC8\uBAC9\uBACA\uBACB\uBACC"+
-        "\uBACD\uBACE\uBACF\uBAD0\uBAD1\uBAD3\uBAD4\uBAD5"+
-        "\uBAD6\uBAD7\uBAD8\uBAD9\uBADA\uBADB\uBADC\uBADD"+
-        "\uBAE1\uBAE2\uBAE3\uBAE4\uBAE5\uBAE6\uBAE7\uBAE8"+
-        "\uBAE9\uBAEA\uBAEB\uBAEC\uBAED\uBAEE\uBAEF\uBAF0"+
-        "\uBAF1\uBAF3\uBAF4\uBAF5\uBAF6\uBAF7\uBAF8\uBAF9"+
-        "\uBAFA\uBAFB\uBAFC\uBAFD\uBB41\uBB42\uBB43\uBB44"+
-        "\uBB45\uBB46\uBB47\uBB48\uBB49\uBB4A\uBB4B\uBB4C"+
-        "\uBB4D\uBB4E\uBB4F\uBB50\uBB51\uBB53\uBB54\uBB55"+
-        "\uBB56\uBB57\uBB58\uBB59\uBB5A\uBB5B\uBB5C\uBB5D"+
-        "\uBB61\uBB62\uBB63\uBB64\uBB65\uBB66\uBB67\uBB68"+
-        "\uBB69\uBB6A\uBB6B\uBB6C\uBB6D\uBB6E\uBB6F\uBB70"+
-        "\uBB71\uBB73\uBB74\uBB75\uBB76\uBB77\uBB78\uBB79"+
-        "\uBB7A\uBB7B\uBB7C\uBB7D\uBB81\uBB82\uBB83\uBB84"+
-        "\uBB85\uBB86\uBB87\uBB88\uBB89\uBB8A\uBB8B\uBB8C"+
-        "\uBB8D\uBB8E\uBB8F\uBB90\uBB91\uBB93\uBB94\uBB95"+
-        "\uBB96\uBB97\uBB98\uBB99\uBB9A\uBB9B\uBB9C\uBB9D"+
-        "\uBBA1\uBBA2\uBBA3\uBBA4\uBBA5\uBBA6\uBBA7\uBBA8"+
-        "\uBBA9\uBBAA\uBBAB\uBBAC\uBBAD\uBBAE\uBBAF\uBBB0"+
-        "\uBBB1\uBBB3\uBBB4\uBBB5\uBBB6\uBBB7\uBBB8\uBBB9"+
-        "\uBBBA\uBBBB\uBBBC\uBBBD\uBC61\uBC62\uBC63\uBC64"+
-        "\uBC65\uBC66\uBC67\uBC68\uBC69\uBC6A\uBC6B\uBC6C"+
-        "\uBC6D\uBC6E\uBC6F\uBC70\uBC71\uBC73\uBC74\uBC75"+
-        "\uBC76\uBC77\uBC78\uBC79\uBC7A\uBC7B\uBC7C\uBC7D"+
-        "\uBC81\uBC82\uBC83\uBC84\uBC85\uBC86\uBC87\uBC88"+
-        "\uBC89\uBC8A\uBC8B\uBC8C\uBC8D\uBC8E\uBC8F\uBC90"+
-        "\uBC91\uBC93\uBC94\uBC95\uBC96\uBC97\uBC98\uBC99"+
-        "\uBC9A\uBC9B\uBC9C\uBC9D\uBCA1\uBCA2\uBCA3\uBCA4"+
-        "\uBCA5\uBCA6\uBCA7\uBCA8\uBCA9\uBCAA\uBCAB\uBCAC"+
-        "\uBCAD\uBCAE\uBCAF\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5"+
-        "\uBCB6\uBCB7\uBCB8\uBCB9\uBCBA\uBCBB\uBCBC\uBCBD"+
-        "\uBCC1\uBCC2\uBCC3\uBCC4\uBCC5\uBCC6\uBCC7\uBCC8"+
-        "\uBCC9\uBCCA\uBCCB\uBCCC\uBCCD\uBCCE\uBCCF\uBCD0"+
-        "\uBCD1\uBCD3\uBCD4\uBCD5\uBCD6\uBCD7\uBCD8\uBCD9"+
-        "\uBCDA\uBCDB\uBCDC\uBCDD\uBCE1\uBCE2\uBCE3\uBCE4"+
-        "\uBCE5\uBCE6\uBCE7\uBCE8\uBCE9\uBCEA\uBCEB\uBCEC"+
-        "\uBCED\uBCEE\uBCEF\uBCF0\uBCF1\uBCF3\uBCF4\uBCF5"+
-        "\uBCF6\uBCF7\uBCF8\uBCF9\uBCFA\uBCFB\uBCFC\uBCFD"+
-        "\uBD41\uBD42\uBD43\uBD44\uBD45\uBD46\uBD47\uBD48"+
-        "\uBD49\uBD4A\uBD4B\uBD4C\uBD4D\uBD4E\uBD4F\uBD50"+
-        "\uBD51\uBD53\uBD54\uBD55\uBD56\uBD57\uBD58\uBD59"+
-        "\uBD5A\uBD5B\uBD5C\uBD5D\uBD61\uBD62\uBD63\uBD64"+
-        "\uBD65\uBD66\uBD67\uBD68\uBD69\uBD6A\uBD6B\uBD6C"+
-        "\uBD6D\uBD6E\uBD6F\uBD70\uBD71\uBD73\uBD74\uBD75"+
-        "\uBD76\uBD77\uBD78\uBD79\uBD7A\uBD7B\uBD7C\uBD7D"+
-        "\uBD81\uBD82\uBD83\uBD84\uBD85\uBD86\uBD87\uBD88"+
-        "\uBD89\uBD8A\uBD8B\uBD8C\uBD8D\uBD8E\uBD8F\uBD90"+
-        "\uBD91\uBD93\uBD94\uBD95\uBD96\uBD97\uBD98\uBD99"+
-        "\uBD9A\uBD9B\uBD9C\uBD9D\uBDA1\uBDA2\uBDA3\uBDA4"+
-        "\uBDA5\uBDA6\uBDA7\uBDA8\uBDA9\uBDAA\uBDAB\uBDAC"+
-        "\uBDAD\uBDAE\uBDAF\uBDB0\uBDB1\uBDB3\uBDB4\uBDB5"+
-        "\uBDB6\uBDB7\uBDB8\uBDB9\uBDBA\uBDBB\uBDBC\uBDBD"+
-        "\uBDC1\uBDC2\uBDC3\uBDC4\uBDC5\uBDC6\uBDC7\uBDC8"+
-        "\uBDC9\uBDCA\uBDCB\uBDCC\uBDCD\uBDCE\uBDCF\uBDD0"+
-        "\uBDD1\uBDD3\uBDD4\uBDD5\uBDD6\uBDD7\uBDD8\uBDD9"+
-        "\uBDDA\uBDDB\uBDDC\uBDDD\uBDE1\uBDE2\uBDE3\uBDE4"+
-        "\uBDE5\uBDE6\uBDE7\uBDE8\uBDE9\uBDEA\uBDEB\uBDEC"+
-        "\uBDED\uBDEE\uBDEF\uBDF0\uBDF1\uBDF3\uBDF4\uBDF5"+
-        "\uBDF6\uBDF7\uBDF8\uBDF9\uBDFA\uBDFB\uBDFC\uBDFD"+
-        "\uBE41\uBE42\uBE43\uBE44\uBE45\uBE46\uBE47\uBE48"+
-        "\uBE49\uBE4A\uBE4B\uBE4C\uBE4D\uBE4E\uBE4F\uBE50"+
-        "\uBE51\uBE53\uBE54\uBE55\uBE56\uBE57\uBE58\uBE59"+
-        "\uBE5A\uBE5B\uBE5C\uBE5D\uBE61\uBE62\uBE63\uBE64"+
-        "\uBE65\uBE66\uBE67\uBE68\uBE69\uBE6A\uBE6B\uBE6C"+
-        "\uBE6D\uBE6E\uBE6F\uBE70\uBE71\uBE73\uBE74\uBE75"+
-        "\uBE76\uBE77\uBE78\uBE79\uBE7A\uBE7B\uBE7C\uBE7D"+
-        "\uBE81\uBE82\uBE83\uBE84\uBE85\uBE86\uBE87\uBE88"+
-        "\uBE89\uBE8A\uBE8B\uBE8C\uBE8D\uBE8E\uBE8F\uBE90"+
-        "\uBE91\uBE93\uBE94\uBE95\uBE96\uBE97\uBE98\uBE99"+
-        "\uBE9A\uBE9B\uBE9C\uBE9D\uBEA1\uBEA2\uBEA3\uBEA4"+
-        "\uBEA5\uBEA6\uBEA7\uBEA8\uBEA9\uBEAA\uBEAB\uBEAC"+
-        "\uBEAD\uBEAE\uBEAF\uBEB0\uBEB1\uBEB3\uBEB4\uBEB5"+
-        "\uBEB6\uBEB7\uBEB8\uBEB9\uBEBA\uBEBB\uBEBC\uBEBD"+
-        "\uBEC1\uBEC2\uBEC3\uBEC4\uBEC5\uBEC6\uBEC7\uBEC8"+
-        "\uBEC9\uBECA\uBECB\uBECC\uBECD\uBECE\uBECF\uBED0"+
-        "\uBED1\uBED3\uBED4\uBED5\uBED6\uBED7\uBED8\uBED9"+
-        "\uBEDA\uBEDB\uBEDC\uBEDD\uBEE1\uBEE2\uBEE3\uBEE4"+
-        "\uBEE5\uBEE6\uBEE7\uBEE8\uBEE9\uBEEA\uBEEB\uBEEC"+
-        "\uBEED\uBEEE\uBEEF\uBEF0\uBEF1\uBEF3\uBEF4\uBEF5"+
-        "\uBEF6\uBEF7\uBEF8\uBEF9\uBEFA\uBEFB\uBEFC\uBEFD"+
-        "\uBF41\uBF42\uBF43\uBF44\uBF45\uBF46\uBF47\uBF48"+
-        "\uBF49\uBF4A\uBF4B\uBF4C\uBF4D\uBF4E\uBF4F\uBF50"+
-        "\uBF51\uBF53\uBF54\uBF55\uBF56\uBF57\uBF58\uBF59"+
-        "\uBF5A\uBF5B\uBF5C\uBF5D\uBF61\uBF62\uBF63\uBF64"+
-        "\uBF65\uBF66\uBF67\uBF68\uBF69\uBF6A\uBF6B\uBF6C"+
-        "\uBF6D\uBF6E\uBF6F\uBF70\uBF71\uBF73\uBF74\uBF75"+
-        "\uBF76\uBF77\uBF78\uBF79\uBF7A\uBF7B\uBF7C\uBF7D"+
-        "\uBF81\uBF82\uBF83\uBF84\uBF85\uBF86\uBF87\uBF88"+
-        "\uBF89\uBF8A\uBF8B\uBF8C\uBF8D\uBF8E\uBF8F\uBF90"+
-        "\uBF91\uBF93\uBF94\uBF95\uBF96\uBF97\uBF98\uBF99"+
-        "\uBF9A\uBF9B\uBF9C\uBF9D\uBFA1\uBFA2\uBFA3\uBFA4"+
-        "\uBFA5\uBFA6\uBFA7\uBFA8\uBFA9\uBFAA\uBFAB\uBFAC"+
-        "\uBFAD\uBFAE\uBFAF\uBFB0\uBFB1\uBFB3\uBFB4\uBFB5"+
-        "\uBFB6\uBFB7\uBFB8\uBFB9\uBFBA\uBFBB\uBFBC\uBFBD"+
-        "\uC061\uC062\uC063\uC064\uC065\uC066\uC067\uC068"+
-        "\uC069\uC06A\uC06B\uC06C\uC06D\uC06E\uC06F\uC070"+
-        "\uC071\uC073\uC074\uC075\uC076\uC077\uC078\uC079"+
-        "\uC07A\uC07B\uC07C\uC07D\uC081\uC082\uC083\uC084"+
-        "\uC085\uC086\uC087\uC088\uC089\uC08A\uC08B\uC08C"+
-        "\uC08D\uC08E\uC08F\uC090\uC091\uC093\uC094\uC095"+
-        "\uC096\uC097\uC098\uC099\uC09A\uC09B\uC09C\uC09D"+
-        "\uC0A1\uC0A2\uC0A3\uC0A4\uC0A5\uC0A6\uC0A7\uC0A8"+
-        "\uC0A9\uC0AA\uC0AB\uC0AC\uC0AD\uC0AE\uC0AF\uC0B0"+
-        "\uC0B1\uC0B3\uC0B4\uC0B5\uC0B6\uC0B7\uC0B8\uC0B9"+
-        "\uC0BA\uC0BB\uC0BC\uC0BD\uC0C1\uC0C2\uC0C3\uC0C4"+
-        "\uC0C5\uC0C6\uC0C7\uC0C8\uC0C9\uC0CA\uC0CB\uC0CC"+
-        "\uC0CD\uC0CE\uC0CF\uC0D0\uC0D1\uC0D3\uC0D4\uC0D5"+
-        "\uC0D6\uC0D7\uC0D8\uC0D9\uC0DA\uC0DB\uC0DC\uC0DD"+
-        "\uC0E1\uC0E2\uC0E3\uC0E4\uC0E5\uC0E6\uC0E7\uC0E8"+
-        "\uC0E9\uC0EA\uC0EB\uC0EC\uC0ED\uC0EE\uC0EF\uC0F0"+
-        "\uC0F1\uC0F3\uC0F4\uC0F5\uC0F6\uC0F7\uC0F8\uC0F9"+
-        "\uC0FA\uC0FB\uC0FC\uC0FD\uC141\uC142\uC143\uC144"+
-        "\uC145\uC146\uC147\uC148\uC149\uC14A\uC14B\uC14C"+
-        "\uC14D\uC14E\uC14F\uC150\uC151\uC153\uC154\uC155"+
-        "\uC156\uC157\uC158\uC159\uC15A\uC15B\uC15C\uC15D"+
-        "\uC161\uC162\uC163\uC164\uC165\uC166\uC167\uC168"+
-        "\uC169\uC16A\uC16B\uC16C\uC16D\uC16E\uC16F\uC170"+
-        "\uC171\uC173\uC174\uC175\uC176\uC177\uC178\uC179"+
-        "\uC17A\uC17B\uC17C\uC17D\uC181\uC182\uC183\uC184"+
-        "\uC185\uC186\uC187\uC188\uC189\uC18A\uC18B\uC18C"+
-        "\uC18D\uC18E\uC18F\uC190\uC191\uC193\uC194\uC195"+
-        "\uC196\uC197\uC198\uC199\uC19A\uC19B\uC19C\uC19D"+
-        "\uC1A1\uC1A2\uC1A3\uC1A4\uC1A5\uC1A6\uC1A7\uC1A8"+
-        "\uC1A9\uC1AA\uC1AB\uC1AC\uC1AD\uC1AE\uC1AF\uC1B0"+
-        "\uC1B1\uC1B3\uC1B4\uC1B5\uC1B6\uC1B7\uC1B8\uC1B9"+
-        "\uC1BA\uC1BB\uC1BC\uC1BD\uC1C1\uC1C2\uC1C3\uC1C4"+
-        "\uC1C5\uC1C6\uC1C7\uC1C8\uC1C9\uC1CA\uC1CB\uC1CC"+
-        "\uC1CD\uC1CE\uC1CF\uC1D0\uC1D1\uC1D3\uC1D4\uC1D5"+
-        "\uC1D6\uC1D7\uC1D8\uC1D9\uC1DA\uC1DB\uC1DC\uC1DD"+
-        "\uC1E1\uC1E2\uC1E3\uC1E4\uC1E5\uC1E6\uC1E7\uC1E8"+
-        "\uC1E9\uC1EA\uC1EB\uC1EC\uC1ED\uC1EE\uC1EF\uC1F0"+
-        "\uC1F1\uC1F3\uC1F4\uC1F5\uC1F6\uC1F7\uC1F8\uC1F9"+
-        "\uC1FA\uC1FB\uC1FC\uC1FD\uC241\uC242\uC243\uC244"+
-        "\uC245\uC246\uC247\uC248\uC249\uC24A\uC24B\uC24C"+
-        "\uC24D\uC24E\uC24F\uC250\uC251\uC253\uC254\uC255"+
-        "\uC256\uC257\uC258\uC259\uC25A\uC25B\uC25C\uC25D"+
-        "\uC261\uC262\uC263\uC264\uC265\uC266\uC267\uC268"+
-        "\uC269\uC26A\uC26B\uC26C\uC26D\uC26E\uC26F\uC270"+
-        "\uC271\uC273\uC274\uC275\uC276\uC277\uC278\uC279"+
-        "\uC27A\uC27B\uC27C\uC27D\uC281\uC282\uC283\uC284"+
-        "\uC285\uC286\uC287\uC288\uC289\uC28A\uC28B\uC28C"+
-        "\uC28D\uC28E\uC28F\uC290\uC291\uC293\uC294\uC295"+
-        "\uC296\uC297\uC298\uC299\uC29A\uC29B\uC29C\uC29D"+
-        "\uC2A1\uC2A2\uC2A3\uC2A4\uC2A5\uC2A6\uC2A7\uC2A8"+
-        "\uC2A9\uC2AA\uC2AB\uC2AC\uC2AD\uC2AE\uC2AF\uC2B0"+
-        "\uC2B1\uC2B3\uC2B4\uC2B5\uC2B6\uC2B7\uC2B8\uC2B9"+
-        "\uC2BA\uC2BB\uC2BC\uC2BD\uC2C1\uC2C2\uC2C3\uC2C4"+
-        "\uC2C5\uC2C6\uC2C7\uC2C8\uC2C9\uC2CA\uC2CB\uC2CC"+
-        "\uC2CD\uC2CE\uC2CF\uC2D0\uC2D1\uC2D3\uC2D4\uC2D5"+
-        "\uC2D6\uC2D7\uC2D8\uC2D9\uC2DA\uC2DB\uC2DC\uC2DD"+
-        "\uC2E1\uC2E2\uC2E3\uC2E4\uC2E5\uC2E6\uC2E7\uC2E8"+
-        "\uC2E9\uC2EA\uC2EB\uC2EC\uC2ED\uC2EE\uC2EF\uC2F0"+
-        "\uC2F1\uC2F3\uC2F4\uC2F5\uC2F6\uC2F7\uC2F8\uC2F9"+
-        "\uC2FA\uC2FB\uC2FC\uC2FD\uC341\uC342\uC343\uC344"+
-        "\uC345\uC346\uC347\uC348\uC349\uC34A\uC34B\uC34C"+
-        "\uC34D\uC34E\uC34F\uC350\uC351\uC353\uC354\uC355"+
-        "\uC356\uC357\uC358\uC359\uC35A\uC35B\uC35C\uC35D"+
-        "\uC361\uC362\uC363\uC364\uC365\uC366\uC367\uC368"+
-        "\uC369\uC36A\uC36B\uC36C\uC36D\uC36E\uC36F\uC370"+
-        "\uC371\uC373\uC374\uC375\uC376\uC377\uC378\uC379"+
-        "\uC37A\uC37B\uC37C\uC37D\uC381\uC382\uC383\uC384"+
-        "\uC385\uC386\uC387\uC388\uC389\uC38A\uC38B\uC38C"+
-        "\uC38D\uC38E\uC38F\uC390\uC391\uC393\uC394\uC395"+
-        "\uC396\uC397\uC398\uC399\uC39A\uC39B\uC39C\uC39D"+
-        "\uC3A1\uC3A2\uC3A3\uC3A4\uC3A5\uC3A6\uC3A7\uC3A8"+
-        "\uC3A9\uC3AA\uC3AB\uC3AC\uC3AD\uC3AE\uC3AF\uC3B0"+
-        "\uC3B1\uC3B3\uC3B4\uC3B5\uC3B6\uC3B7\uC3B8\uC3B9"+
-        "\uC3BA\uC3BB\uC3BC\uC3BD\uC461\uC462\uC463\uC464"+
-        "\uC465\uC466\uC467\uC468\uC469\uC46A\uC46B\uC46C"+
-        "\uC46D\uC46E\uC46F\uC470\uC471\uC473\uC474\uC475"+
-        "\uC476\uC477\uC478\uC479\uC47A\uC47B\uC47C\uC47D"+
-        "\uC481\uC482\uC483\uC484\uC485\uC486\uC487\uC488"+
-        "\uC489\uC48A\uC48B\uC48C\uC48D\uC48E\uC48F\uC490"+
-        "\uC491\uC493\uC494\uC495\uC496\uC497\uC498\uC499"+
-        "\uC49A\uC49B\uC49C\uC49D\uC4A1\uC4A2\uC4A3\uC4A4"+
-        "\uC4A5\uC4A6\uC4A7\uC4A8\uC4A9\uC4AA\uC4AB\uC4AC"+
-        "\uC4AD\uC4AE\uC4AF\uC4B0\uC4B1\uC4B3\uC4B4\uC4B5"+
-        "\uC4B6\uC4B7\uC4B8\uC4B9\uC4BA\uC4BB\uC4BC\uC4BD"+
-        "\uC4C1\uC4C2\uC4C3\uC4C4\uC4C5\uC4C6\uC4C7\uC4C8"+
-        "\uC4C9\uC4CA\uC4CB\uC4CC\uC4CD\uC4CE\uC4CF\uC4D0"+
-        "\uC4D1\uC4D3\uC4D4\uC4D5\uC4D6\uC4D7\uC4D8\uC4D9"+
-        "\uC4DA\uC4DB\uC4DC\uC4DD\uC4E1\uC4E2\uC4E3\uC4E4"+
-        "\uC4E5\uC4E6\uC4E7\uC4E8\uC4E9\uC4EA\uC4EB\uC4EC"+
-        "\uC4ED\uC4EE\uC4EF\uC4F0\uC4F1\uC4F3\uC4F4\uC4F5"+
-        "\uC4F6\uC4F7\uC4F8\uC4F9\uC4FA\uC4FB\uC4FC\uC4FD"+
-        "\uC541\uC542\uC543\uC544\uC545\uC546\uC547\uC548"+
-        "\uC549\uC54A\uC54B\uC54C\uC54D\uC54E\uC54F\uC550"+
-        "\uC551\uC553\uC554\uC555\uC556\uC557\uC558\uC559"+
-        "\uC55A\uC55B\uC55C\uC55D\uC561\uC562\uC563\uC564"+
-        "\uC565\uC566\uC567\uC568\uC569\uC56A\uC56B\uC56C"+
-        "\uC56D\uC56E\uC56F\uC570\uC571\uC573\uC574\uC575"+
-        "\uC576\uC577\uC578\uC579\uC57A\uC57B\uC57C\uC57D"+
-        "\uC581\uC582\uC583\uC584\uC585\uC586\uC587\uC588"+
-        "\uC589\uC58A\uC58B\uC58C\uC58D\uC58E\uC58F\uC590"+
-        "\uC591\uC593\uC594\uC595\uC596\uC597\uC598\uC599"+
-        "\uC59A\uC59B\uC59C\uC59D\uC5A1\uC5A2\uC5A3\uC5A4"+
-        "\uC5A5\uC5A6\uC5A7\uC5A8\uC5A9\uC5AA\uC5AB\uC5AC"+
-        "\uC5AD\uC5AE\uC5AF\uC5B0\uC5B1\uC5B3\uC5B4\uC5B5"+
-        "\uC5B6\uC5B7\uC5B8\uC5B9\uC5BA\uC5BB\uC5BC\uC5BD"+
-        "\uC5C1\uC5C2\uC5C3\uC5C4\uC5C5\uC5C6\uC5C7\uC5C8"+
-        "\uC5C9\uC5CA\uC5CB\uC5CC\uC5CD\uC5CE\uC5CF\uC5D0"+
-        "\uC5D1\uC5D3\uC5D4\uC5D5\uC5D6\uC5D7\uC5D8\uC5D9"+
-        "\uC5DA\uC5DB\uC5DC\uC5DD\uC5E1\uC5E2\uC5E3\uC5E4"+
-        "\uC5E5\uC5E6\uC5E7\uC5E8\uC5E9\uC5EA\uC5EB\uC5EC"+
-        "\uC5ED\uC5EE\uC5EF\uC5F0\uC5F1\uC5F3\uC5F4\uC5F5"+
-        "\uC5F6\uC5F7\uC5F8\uC5F9\uC5FA\uC5FB\uC5FC\uC5FD"+
-        "\uC641\uC642\uC643\uC644\uC645\uC646\uC647\uC648"+
-        "\uC649\uC64A\uC64B\uC64C\uC64D\uC64E\uC64F\uC650"+
-        "\uC651\uC653\uC654\uC655\uC656\uC657\uC658\uC659"+
-        "\uC65A\uC65B\uC65C\uC65D\uC661\uC662\uC663\uC664"+
-        "\uC665\uC666\uC667\uC668\uC669\uC66A\uC66B\uC66C"+
-        "\uC66D\uC66E\uC66F\uC670\uC671\uC673\uC674\uC675"+
-        "\uC676\uC677\uC678\uC679\uC67A\uC67B\uC67C\uC67D"+
-        "\uC681\uC682\uC683\uC684\uC685\uC686\uC687\uC688"+
-        "\uC689\uC68A\uC68B\uC68C\uC68D\uC68E\uC68F\uC690"+
-        "\uC691\uC693\uC694\uC695\uC696\uC697\uC698\uC699"+
-        "\uC69A\uC69B\uC69C\uC69D\uC6A1\uC6A2\uC6A3\uC6A4"+
-        "\uC6A5\uC6A6\uC6A7\uC6A8\uC6A9\uC6AA\uC6AB\uC6AC"+
-        "\uC6AD\uC6AE\uC6AF\uC6B0\uC6B1\uC6B3\uC6B4\uC6B5"+
-        "\uC6B6\uC6B7\uC6B8\uC6B9\uC6BA\uC6BB\uC6BC\uC6BD"+
-        "\uC6C1\uC6C2\uC6C3\uC6C4\uC6C5\uC6C6\uC6C7\uC6C8"+
-        "\uC6C9\uC6CA\uC6CB\uC6CC\uC6CD\uC6CE\uC6CF\uC6D0"+
-        "\uC6D1\uC6D3\uC6D4\uC6D5\uC6D6\uC6D7\uC6D8\uC6D9"+
-        "\uC6DA\uC6DB\uC6DC\uC6DD\uC6E1\uC6E2\uC6E3\uC6E4"+
-        "\uC6E5\uC6E6\uC6E7\uC6E8\uC6E9\uC6EA\uC6EB\uC6EC"+
-        "\uC6ED\uC6EE\uC6EF\uC6F0\uC6F1\uC6F3\uC6F4\uC6F5"+
-        "\uC6F6\uC6F7\uC6F8\uC6F9\uC6FA\uC6FB\uC6FC\uC6FD"+
-        "\uC741\uC742\uC743\uC744\uC745\uC746\uC747\uC748"+
-        "\uC749\uC74A\uC74B\uC74C\uC74D\uC74E\uC74F\uC750"+
-        "\uC751\uC753\uC754\uC755\uC756\uC757\uC758\uC759"+
-        "\uC75A\uC75B\uC75C\uC75D\uC761\uC762\uC763\uC764"+
-        "\uC765\uC766\uC767\uC768\uC769\uC76A\uC76B\uC76C"+
-        "\uC76D\uC76E\uC76F\uC770\uC771\uC773\uC774\uC775"+
-        "\uC776\uC777\uC778\uC779\uC77A\uC77B\uC77C\uC77D"+
-        "\uC781\uC782\uC783\uC784\uC785\uC786\uC787\uC788"+
-        "\uC789\uC78A\uC78B\uC78C\uC78D\uC78E\uC78F\uC790"+
-        "\uC791\uC793\uC794\uC795\uC796\uC797\uC798\uC799"+
-        "\uC79A\uC79B\uC79C\uC79D\uC7A1\uC7A2\uC7A3\uC7A4"+
-        "\uC7A5\uC7A6\uC7A7\uC7A8\uC7A9\uC7AA\uC7AB\uC7AC"+
-        "\uC7AD\uC7AE\uC7AF\uC7B0\uC7B1\uC7B3\uC7B4\uC7B5"+
-        "\uC7B6\uC7B7\uC7B8\uC7B9\uC7BA\uC7BB\uC7BC\uC7BD"+
-        "\uC861\uC862\uC863\uC864\uC865\uC866\uC867\uC868"+
-        "\uC869\uC86A\uC86B\uC86C\uC86D\uC86E\uC86F\uC870"+
-        "\uC871\uC873\uC874\uC875\uC876\uC877\uC878\uC879"+
-        "\uC87A\uC87B\uC87C\uC87D\uC881\uC882\uC883\uC884"+
-        "\uC885\uC886\uC887\uC888\uC889\uC88A\uC88B\uC88C"+
-        "\uC88D\uC88E\uC88F\uC890\uC891\uC893\uC894\uC895"+
-        "\uC896\uC897\uC898\uC899\uC89A\uC89B\uC89C\uC89D"+
-        "\uC8A1\uC8A2\uC8A3\uC8A4\uC8A5\uC8A6\uC8A7\uC8A8"+
-        "\uC8A9\uC8AA\uC8AB\uC8AC\uC8AD\uC8AE\uC8AF\uC8B0"+
-        "\uC8B1\uC8B3\uC8B4\uC8B5\uC8B6\uC8B7\uC8B8\uC8B9"+
-        "\uC8BA\uC8BB\uC8BC\uC8BD\uC8C1\uC8C2\uC8C3\uC8C4"+
-        "\uC8C5\uC8C6\uC8C7\uC8C8\uC8C9\uC8CA\uC8CB\uC8CC"+
-        "\uC8CD\uC8CE\uC8CF\uC8D0\uC8D1\uC8D3\uC8D4\uC8D5"+
-        "\uC8D6\uC8D7\uC8D8\uC8D9\uC8DA\uC8DB\uC8DC\uC8DD"+
-        "\uC8E1\uC8E2\uC8E3\uC8E4\uC8E5\uC8E6\uC8E7\uC8E8"+
-        "\uC8E9\uC8EA\uC8EB\uC8EC\uC8ED\uC8EE\uC8EF\uC8F0"+
-        "\uC8F1\uC8F3\uC8F4\uC8F5\uC8F6\uC8F7\uC8F8\uC8F9"+
-        "\uC8FA\uC8FB\uC8FC\uC8FD\uC941\uC942\uC943\uC944"+
-        "\uC945\uC946\uC947\uC948\uC949\uC94A\uC94B\uC94C"+
-        "\uC94D\uC94E\uC94F\uC950\uC951\uC953\uC954\uC955"+
-        "\uC956\uC957\uC958\uC959\uC95A\uC95B\uC95C\uC95D"+
-        "\uC961\uC962\uC963\uC964\uC965\uC966\uC967\uC968"+
-        "\uC969\uC96A\uC96B\uC96C\uC96D\uC96E\uC96F\uC970"+
-        "\uC971\uC973\uC974\uC975\uC976\uC977\uC978\uC979"+
-        "\uC97A\uC97B\uC97C\uC97D\uC981\uC982\uC983\uC984"+
-        "\uC985\uC986\uC987\uC988\uC989\uC98A\uC98B\uC98C"+
-        "\uC98D\uC98E\uC98F\uC990\uC991\uC993\uC994\uC995"+
-        "\uC996\uC997\uC998\uC999\uC99A\uC99B\uC99C\uC99D"+
-        "\uC9A1\uC9A2\uC9A3\uC9A4\uC9A5\uC9A6\uC9A7\uC9A8"+
-        "\uC9A9\uC9AA\uC9AB\uC9AC\uC9AD\uC9AE\uC9AF\uC9B0"+
-        "\uC9B1\uC9B3\uC9B4\uC9B5\uC9B6\uC9B7\uC9B8\uC9B9"+
-        "\uC9BA\uC9BB\uC9BC\uC9BD\uC9C1\uC9C2\uC9C3\uC9C4"+
-        "\uC9C5\uC9C6\uC9C7\uC9C8\uC9C9\uC9CA\uC9CB\uC9CC"+
-        "\uC9CD\uC9CE\uC9CF\uC9D0\uC9D1\uC9D3\uC9D4\uC9D5"+
-        "\uC9D6\uC9D7\uC9D8\uC9D9\uC9DA\uC9DB\uC9DC\uC9DD"+
-        "\uC9E1\uC9E2\uC9E3\uC9E4\uC9E5\uC9E6\uC9E7\uC9E8"+
-        "\uC9E9\uC9EA\uC9EB\uC9EC\uC9ED\uC9EE\uC9EF\uC9F0"+
-        "\uC9F1\uC9F3\uC9F4\uC9F5\uC9F6\uC9F7\uC9F8\uC9F9"+
-        "\uC9FA\uC9FB\uC9FC\uC9FD\uCA41\uCA42\uCA43\uCA44"+
-        "\uCA45\uCA46\uCA47\uCA48\uCA49\uCA4A\uCA4B\uCA4C"+
-        "\uCA4D\uCA4E\uCA4F\uCA50\uCA51\uCA53\uCA54\uCA55"+
-        "\uCA56\uCA57\uCA58\uCA59\uCA5A\uCA5B\uCA5C\uCA5D"+
-        "\uCA61\uCA62\uCA63\uCA64\uCA65\uCA66\uCA67\uCA68"+
-        "\uCA69\uCA6A\uCA6B\uCA6C\uCA6D\uCA6E\uCA6F\uCA70"+
-        "\uCA71\uCA73\uCA74\uCA75\uCA76\uCA77\uCA78\uCA79"+
-        "\uCA7A\uCA7B\uCA7C\uCA7D\uCA81\uCA82\uCA83\uCA84"+
-        "\uCA85\uCA86\uCA87\uCA88\uCA89\uCA8A\uCA8B\uCA8C"+
-        "\uCA8D\uCA8E\uCA8F\uCA90\uCA91\uCA93\uCA94\uCA95"+
-        "\uCA96\uCA97\uCA98\uCA99\uCA9A\uCA9B\uCA9C\uCA9D"+
-        "\uCAA1\uCAA2\uCAA3\uCAA4\uCAA5\uCAA6\uCAA7\uCAA8"+
-        "\uCAA9\uCAAA\uCAAB\uCAAC\uCAAD\uCAAE\uCAAF\uCAB0"+
-        "\uCAB1\uCAB3\uCAB4\uCAB5\uCAB6\uCAB7\uCAB8\uCAB9"+
-        "\uCABA\uCABB\uCABC\uCABD\uCAC1\uCAC2\uCAC3\uCAC4"+
-        "\uCAC5\uCAC6\uCAC7\uCAC8\uCAC9\uCACA\uCACB\uCACC"+
-        "\uCACD\uCACE\uCACF\uCAD0\uCAD1\uCAD3\uCAD4\uCAD5"+
-        "\uCAD6\uCAD7\uCAD8\uCAD9\uCADA\uCADB\uCADC\uCADD"+
-        "\uCAE1\uCAE2\uCAE3\uCAE4\uCAE5\uCAE6\uCAE7\uCAE8"+
-        "\uCAE9\uCAEA\uCAEB\uCAEC\uCAED\uCAEE\uCAEF\uCAF0"+
-        "\uCAF1\uCAF3\uCAF4\uCAF5\uCAF6\uCAF7\uCAF8\uCAF9"+
-        "\uCAFA\uCAFB\uCAFC\uCAFD\uCB41\uCB42\uCB43\uCB44"+
-        "\uCB45\uCB46\uCB47\uCB48\uCB49\uCB4A\uCB4B\uCB4C"+
-        "\uCB4D\uCB4E\uCB4F\uCB50\uCB51\uCB53\uCB54\uCB55"+
-        "\uCB56\uCB57\uCB58\uCB59\uCB5A\uCB5B\uCB5C\uCB5D"+
-        "\uCB61\uCB62\uCB63\uCB64\uCB65\uCB66\uCB67\uCB68"+
-        "\uCB69\uCB6A\uCB6B\uCB6C\uCB6D\uCB6E\uCB6F\uCB70"+
-        "\uCB71\uCB73\uCB74\uCB75\uCB76\uCB77\uCB78\uCB79"+
-        "\uCB7A\uCB7B\uCB7C\uCB7D\uCB81\uCB82\uCB83\uCB84"+
-        "\uCB85\uCB86\uCB87\uCB88\uCB89\uCB8A\uCB8B\uCB8C"+
-        "\uCB8D\uCB8E\uCB8F\uCB90\uCB91\uCB93\uCB94\uCB95"+
-        "\uCB96\uCB97\uCB98\uCB99\uCB9A\uCB9B\uCB9C\uCB9D"+
-        "\uCBA1\uCBA2\uCBA3\uCBA4\uCBA5\uCBA6\uCBA7\uCBA8"+
-        "\uCBA9\uCBAA\uCBAB\uCBAC\uCBAD\uCBAE\uCBAF\uCBB0"+
-        "\uCBB1\uCBB3\uCBB4\uCBB5\uCBB6\uCBB7\uCBB8\uCBB9"+
-        "\uCBBA\uCBBB\uCBBC\uCBBD\uCC61\uCC62\uCC63\uCC64"+
-        "\uCC65\uCC66\uCC67\uCC68\uCC69\uCC6A\uCC6B\uCC6C"+
-        "\uCC6D\uCC6E\uCC6F\uCC70\uCC71\uCC73\uCC74\uCC75"+
-        "\uCC76\uCC77\uCC78\uCC79\uCC7A\uCC7B\uCC7C\uCC7D"+
-        "\uCC81\uCC82\uCC83\uCC84\uCC85\uCC86\uCC87\uCC88"+
-        "\uCC89\uCC8A\uCC8B\uCC8C\uCC8D\uCC8E\uCC8F\uCC90"+
-        "\uCC91\uCC93\uCC94\uCC95\uCC96\uCC97\uCC98\uCC99"+
-        "\uCC9A\uCC9B\uCC9C\uCC9D\uCCA1\uCCA2\uCCA3\uCCA4"+
-        "\uCCA5\uCCA6\uCCA7\uCCA8\uCCA9\uCCAA\uCCAB\uCCAC"+
-        "\uCCAD\uCCAE\uCCAF\uCCB0\uCCB1\uCCB3\uCCB4\uCCB5"+
-        "\uCCB6\uCCB7\uCCB8\uCCB9\uCCBA\uCCBB\uCCBC\uCCBD"+
-        "\uCCC1\uCCC2\uCCC3\uCCC4\uCCC5\uCCC6\uCCC7\uCCC8"+
-        "\uCCC9\uCCCA\uCCCB\uCCCC\uCCCD\uCCCE\uCCCF\uCCD0"+
-        "\uCCD1\uCCD3\uCCD4\uCCD5\uCCD6\uCCD7\uCCD8\uCCD9"+
-        "\uCCDA\uCCDB\uCCDC\uCCDD\uCCE1\uCCE2\uCCE3\uCCE4"+
-        "\uCCE5\uCCE6\uCCE7\uCCE8\uCCE9\uCCEA\uCCEB\uCCEC"+
-        "\uCCED\uCCEE\uCCEF\uCCF0\uCCF1\uCCF3\uCCF4\uCCF5"+
-        "\uCCF6\uCCF7\uCCF8\uCCF9\uCCFA\uCCFB\uCCFC\uCCFD"+
-        "\uCD41\uCD42\uCD43\uCD44\uCD45\uCD46\uCD47\uCD48"+
-        "\uCD49\uCD4A\uCD4B\uCD4C\uCD4D\uCD4E\uCD4F\uCD50"+
-        "\uCD51\uCD53\uCD54\uCD55\uCD56\uCD57\uCD58\uCD59"+
-        "\uCD5A\uCD5B\uCD5C\uCD5D\uCD61\uCD62\uCD63\uCD64"+
-        "\uCD65\uCD66\uCD67\uCD68\uCD69\uCD6A\uCD6B\uCD6C"+
-        "\uCD6D\uCD6E\uCD6F\uCD70\uCD71\uCD73\uCD74\uCD75"+
-        "\uCD76\uCD77\uCD78\uCD79\uCD7A\uCD7B\uCD7C\uCD7D"+
-        "\uCD81\uCD82\uCD83\uCD84\uCD85\uCD86\uCD87\uCD88"+
-        "\uCD89\uCD8A\uCD8B\uCD8C\uCD8D\uCD8E\uCD8F\uCD90"+
-        "\uCD91\uCD93\uCD94\uCD95\uCD96\uCD97\uCD98\uCD99"+
-        "\uCD9A\uCD9B\uCD9C\uCD9D\uCDA1\uCDA2\uCDA3\uCDA4"+
-        "\uCDA5\uCDA6\uCDA7\uCDA8\uCDA9\uCDAA\uCDAB\uCDAC"+
-        "\uCDAD\uCDAE\uCDAF\uCDB0\uCDB1\uCDB3\uCDB4\uCDB5"+
-        "\uCDB6\uCDB7\uCDB8\uCDB9\uCDBA\uCDBB\uCDBC\uCDBD"+
-        "\uCDC1\uCDC2\uCDC3\uCDC4\uCDC5\uCDC6\uCDC7\uCDC8"+
-        "\uCDC9\uCDCA\uCDCB\uCDCC\uCDCD\uCDCE\uCDCF\uCDD0"+
-        "\uCDD1\uCDD3\uCDD4\uCDD5\uCDD6\uCDD7\uCDD8\uCDD9"+
-        "\uCDDA\uCDDB\uCDDC\uCDDD\uCDE1\uCDE2\uCDE3\uCDE4"+
-        "\uCDE5\uCDE6\uCDE7\uCDE8\uCDE9\uCDEA\uCDEB\uCDEC"+
-        "\uCDED\uCDEE\uCDEF\uCDF0\uCDF1\uCDF3\uCDF4\uCDF5"+
-        "\uCDF6\uCDF7\uCDF8\uCDF9\uCDFA\uCDFB\uCDFC\uCDFD"+
-        "\uCE41\uCE42\uCE43\uCE44\uCE45\uCE46\uCE47\uCE48"+
-        "\uCE49\uCE4A\uCE4B\uCE4C\uCE4D\uCE4E\uCE4F\uCE50"+
-        "\uCE51\uCE53\uCE54\uCE55\uCE56\uCE57\uCE58\uCE59"+
-        "\uCE5A\uCE5B\uCE5C\uCE5D\uCE61\uCE62\uCE63\uCE64"+
-        "\uCE65\uCE66\uCE67\uCE68\uCE69\uCE6A\uCE6B\uCE6C"+
-        "\uCE6D\uCE6E\uCE6F\uCE70\uCE71\uCE73\uCE74\uCE75"+
-        "\uCE76\uCE77\uCE78\uCE79\uCE7A\uCE7B\uCE7C\uCE7D"+
-        "\uCE81\uCE82\uCE83\uCE84\uCE85\uCE86\uCE87\uCE88"+
-        "\uCE89\uCE8A\uCE8B\uCE8C\uCE8D\uCE8E\uCE8F\uCE90"+
-        "\uCE91\uCE93\uCE94\uCE95\uCE96\uCE97\uCE98\uCE99"+
-        "\uCE9A\uCE9B\uCE9C\uCE9D\uCEA1\uCEA2\uCEA3\uCEA4"+
-        "\uCEA5\uCEA6\uCEA7\uCEA8\uCEA9\uCEAA\uCEAB\uCEAC"+
-        "\uCEAD\uCEAE\uCEAF\uCEB0\uCEB1\uCEB3\uCEB4\uCEB5"+
-        "\uCEB6\uCEB7\uCEB8\uCEB9\uCEBA\uCEBB\uCEBC\uCEBD"+
-        "\uCEC1\uCEC2\uCEC3\uCEC4\uCEC5\uCEC6\uCEC7\uCEC8"+
-        "\uCEC9\uCECA\uCECB\uCECC\uCECD\uCECE\uCECF\uCED0"+
-        "\uCED1\uCED3\uCED4\uCED5\uCED6\uCED7\uCED8\uCED9"+
-        "\uCEDA\uCEDB\uCEDC\uCEDD\uCEE1\uCEE2\uCEE3\uCEE4"+
-        "\uCEE5\uCEE6\uCEE7\uCEE8\uCEE9\uCEEA\uCEEB\uCEEC"+
-        "\uCEED\uCEEE\uCEEF\uCEF0\uCEF1\uCEF3\uCEF4\uCEF5"+
-        "\uCEF6\uCEF7\uCEF8\uCEF9\uCEFA\uCEFB\uCEFC\uCEFD"+
-        "\uCF41\uCF42\uCF43\uCF44\uCF45\uCF46\uCF47\uCF48"+
-        "\uCF49\uCF4A\uCF4B\uCF4C\uCF4D\uCF4E\uCF4F\uCF50"+
-        "\uCF51\uCF53\uCF54\uCF55\uCF56\uCF57\uCF58\uCF59"+
-        "\uCF5A\uCF5B\uCF5C\uCF5D\uCF61\uCF62\uCF63\uCF64"+
-        "\uCF65\uCF66\uCF67\uCF68\uCF69\uCF6A\uCF6B\uCF6C"+
-        "\uCF6D\uCF6E\uCF6F\uCF70\uCF71\uCF73\uCF74\uCF75"+
-        "\uCF76\uCF77\uCF78\uCF79\uCF7A\uCF7B\uCF7C\uCF7D"+
-        "\uCF81\uCF82\uCF83\uCF84\uCF85\uCF86\uCF87\uCF88"+
-        "\uCF89\uCF8A\uCF8B\uCF8C\uCF8D\uCF8E\uCF8F\uCF90"+
-        "\uCF91\uCF93\uCF94\uCF95\uCF96\uCF97\uCF98\uCF99"+
-        "\uCF9A\uCF9B\uCF9C\uCF9D\uCFA1\uCFA2\uCFA3\uCFA4"+
-        "\uCFA5\uCFA6\uCFA7\uCFA8\uCFA9\uCFAA\uCFAB\uCFAC"+
-        "\uCFAD\uCFAE\uCFAF\uCFB0\uCFB1\uCFB3\uCFB4\uCFB5"+
-        "\uCFB6\uCFB7\uCFB8\uCFB9\uCFBA\uCFBB\uCFBC\uCFBD"+
-        "\uD061\uD062\uD063\uD064\uD065\uD066\uD067\uD068"+
-        "\uD069\uD06A\uD06B\uD06C\uD06D\uD06E\uD06F\uD070"+
-        "\uD071\uD073\uD074\uD075\uD076\uD077\uD078\uD079"+
-        "\uD07A\uD07B\uD07C\uD07D\uD081\uD082\uD083\uD084"+
-        "\uD085\uD086\uD087\uD088\uD089\uD08A\uD08B\uD08C"+
-        "\uD08D\uD08E\uD08F\uD090\uD091\uD093\uD094\uD095"+
-        "\uD096\uD097\uD098\uD099\uD09A\uD09B\uD09C\uD09D"+
-        "\uD0A1\uD0A2\uD0A3\uD0A4\uD0A5\uD0A6\uD0A7\uD0A8"+
-        "\uD0A9\uD0AA\uD0AB\uD0AC\uD0AD\uD0AE\uD0AF\uD0B0"+
-        "\uD0B1\uD0B3\uD0B4\uD0B5\uD0B6\uD0B7\uD0B8\uD0B9"+
-        "\uD0BA\uD0BB\uD0BC\uD0BD\uD0C1\uD0C2\uD0C3\uD0C4"+
-        "\uD0C5\uD0C6\uD0C7\uD0C8\uD0C9\uD0CA\uD0CB\uD0CC"+
-        "\uD0CD\uD0CE\uD0CF\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5"+
-        "\uD0D6\uD0D7\uD0D8\uD0D9\uD0DA\uD0DB\uD0DC\uD0DD"+
-        "\uD0E1\uD0E2\uD0E3\uD0E4\uD0E5\uD0E6\uD0E7\uD0E8"+
-        "\uD0E9\uD0EA\uD0EB\uD0EC\uD0ED\uD0EE\uD0EF\uD0F0"+
-        "\uD0F1\uD0F3\uD0F4\uD0F5\uD0F6\uD0F7\uD0F8\uD0F9"+
-        "\uD0FA\uD0FB\uD0FC\uD0FD\uD141\uD142\uD143\uD144"+
-        "\uD145\uD146\uD147\uD148\uD149\uD14A\uD14B\uD14C"+
-        "\uD14D\uD14E\uD14F\uD150\uD151\uD153\uD154\uD155"+
-        "\uD156\uD157\uD158\uD159\uD15A\uD15B\uD15C\uD15D"+
-        "\uD161\uD162\uD163\uD164\uD165\uD166\uD167\uD168"+
-        "\uD169\uD16A\uD16B\uD16C\uD16D\uD16E\uD16F\uD170"+
-        "\uD171\uD173\uD174\uD175\uD176\uD177\uD178\uD179"+
-        "\uD17A\uD17B\uD17C\uD17D\uD181\uD182\uD183\uD184"+
-        "\uD185\uD186\uD187\uD188\uD189\uD18A\uD18B\uD18C"+
-        "\uD18D\uD18E\uD18F\uD190\uD191\uD193\uD194\uD195"+
-        "\uD196\uD197\uD198\uD199\uD19A\uD19B\uD19C\uD19D"+
-        "\uD1A1\uD1A2\uD1A3\uD1A4\uD1A5\uD1A6\uD1A7\uD1A8"+
-        "\uD1A9\uD1AA\uD1AB\uD1AC\uD1AD\uD1AE\uD1AF\uD1B0"+
-        "\uD1B1\uD1B3\uD1B4\uD1B5\uD1B6\uD1B7\uD1B8\uD1B9"+
-        "\uD1BA\uD1BB\uD1BC\uD1BD\uD1C1\uD1C2\uD1C3\uD1C4"+
-        "\uD1C5\uD1C6\uD1C7\uD1C8\uD1C9\uD1CA\uD1CB\uD1CC"+
-        "\uD1CD\uD1CE\uD1CF\uD1D0\uD1D1\uD1D3\uD1D4\uD1D5"+
-        "\uD1D6\uD1D7\uD1D8\uD1D9\uD1DA\uD1DB\uD1DC\uD1DD"+
-        "\uD1E1\uD1E2\uD1E3\uD1E4\uD1E5\uD1E6\uD1E7\uD1E8"+
-        "\uD1E9\uD1EA\uD1EB\uD1EC\uD1ED\uD1EE\uD1EF\uD1F0"+
-        "\uD1F1\uD1F3\uD1F4\uD1F5\uD1F6\uD1F7\uD1F8\uD1F9"+
-        "\uD1FA\uD1FB\uD1FC\uD1FD\uD241\uD242\uD243\uD244"+
-        "\uD245\uD246\uD247\uD248\uD249\uD24A\uD24B\uD24C"+
-        "\uD24D\uD24E\uD24F\uD250\uD251\uD253\uD254\uD255"+
-        "\uD256\uD257\uD258\uD259\uD25A\uD25B\uD25C\uD25D"+
-        "\uD261\uD262\uD263\uD264\uD265\uD266\uD267\uD268"+
-        "\uD269\uD26A\uD26B\uD26C\uD26D\uD26E\uD26F\uD270"+
-        "\uD271\uD273\uD274\uD275\uD276\uD277\uD278\uD279"+
-        "\uD27A\uD27B\uD27C\uD27D\uD281\uD282\uD283\uD284"+
-        "\uD285\uD286\uD287\uD288\uD289\uD28A\uD28B\uD28C"+
-        "\uD28D\uD28E\uD28F\uD290\uD291\uD293\uD294\uD295"+
-        "\uD296\uD297\uD298\uD299\uD29A\uD29B\uD29C\uD29D"+
-        "\uD2A1\uD2A2\uD2A3\uD2A4\uD2A5\uD2A6\uD2A7\uD2A8"+
-        "\uD2A9\uD2AA\uD2AB\uD2AC\uD2AD\uD2AE\uD2AF\uD2B0"+
-        "\uD2B1\uD2B3\uD2B4\uD2B5\uD2B6\uD2B7\uD2B8\uD2B9"+
-        "\uD2BA\uD2BB\uD2BC\uD2BD\uD2C1\uD2C2\uD2C3\uD2C4"+
-        "\uD2C5\uD2C6\uD2C7\uD2C8\uD2C9\uD2CA\uD2CB\uD2CC"+
-        "\uD2CD\uD2CE\uD2CF\uD2D0\uD2D1\uD2D3\uD2D4\uD2D5"+
-        "\uD2D6\uD2D7\uD2D8\uD2D9\uD2DA\uD2DB\uD2DC\uD2DD"+
-        "\uD2E1\uD2E2\uD2E3\uD2E4\uD2E5\uD2E6\uD2E7\uD2E8"+
-        "\uD2E9\uD2EA\uD2EB\uD2EC\uD2ED\uD2EE\uD2EF\uD2F0"+
-        "\uD2F1\uD2F3\uD2F4\uD2F5\uD2F6\uD2F7\uD2F8\uD2F9"+
-        "\uD2FA\uD2FB\uD2FC\uD2FD\uD341\uD342\uD343\uD344"+
-        "\uD345\uD346\uD347\uD348\uD349\uD34A\uD34B\uD34C"+
-        "\uD34D\uD34E\uD34F\uD350\uD351\uD353\uD354\uD355"+
-        "\uD356\uD357\uD358\uD359\uD35A\uD35B\uD35C\uD35D"+
-        "\uD361\uD362\uD363\uD364\uD365\uD366\uD367\uD368"+
-        "\uD369\uD36A\uD36B\uD36C\uD36D\uD36E\uD36F\uD370"+
-        "\uD371\uD373\uD374\uD375\uD376\uD377\uD378\uD379"+
-        "\uD37A\uD37B\uD37C\uD37D\uD381\uD382\uD383\uD384"+
-        "\uD385\uD386\uD387\uD388\uD389\uD38A\uD38B\uD38C"+
-        "\uD38D\uD38E\uD38F\uD390\uD391\uD393\uD394\uD395"+
-        "\uD396\uD397\uD398\uD399\uD39A\uD39B\uD39C\uD39D"+
-        "\uD3A1\uD3A2\uD3A3\uD3A4\uD3A5\uD3A6\uD3A7\uD3A8"+
-        "\uD3A9\uD3AA\uD3AB\uD3AC\uD3AD\uD3AE\uD3AF\uD3B0"+
-        "\uD3B1\uD3B3\uD3B4\uD3B5\uD3B6\uD3B7\uD3B8\uD3B9"+
-        "\uD3BA\uD3BB\uD3BC\uD3BD\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uE0D0\uE0D6\uE0E7\uE1CF\uE1E8\uE23D\uE2FB\uE332"+
-        "\uE348\uE360\uE36D\uE3D4\uE3D5\uE3D8\uE3DB\uE3DC"+
-        "\uE3DD\uE3DE\uE3DF\uE3E0\uE3E2\uE3E3\uE3E4\uE3E5"+
-        "\uE3E6\uE3E8\uE3E9\uE3EA\uE3EB\uE3ED\uE3EF\uE3F0"+
-        "\uE3F2\uE3F6\uE3FA\uE3FC\uE3FD\uE3FE\uE432\uE433"+
-        "\uE437\uE438\uE439\uE43A\uE43B\uE43D\uE442\uE44E"+
-        "\uE452\uE453\uE454\uE456\uE457\uE458\uE459\uE45A"+
-        "\uE45B\uE45D\uE45E\uE45F\uE460\uE461\uE462\uE463"+
-        "\uE464\uE465\uE466\uE467\uE469\uE46A\uE46E\uE46F"+
-        "\uE471\uE472\uE474\uE475\uE476\uE477\uE478\uE479"+
-        "\uE47A\uE47B\uE492\uE493\uE494\uE495\uE496\uE497"+
-        "\uE499\uE49A\uE576\uE59E\uE5A5\uE5AB\uE5AE\uE648"+
-        "\uE65D\uE6CB\uE6E4\uE8C5\uE8E4\uE935\uE9A5\uE9D5"+
-        "\uE9F4\uEA9E\uEAA0\uEAB3\uEAE1\uEAE8\uEB93\uEBAD"+
-        "\uEBED\uECF5\uED31\uED39\uEDAE\uEDB1\uEDB2\uEDB9"+
-        "\uEDBB\uEDBC\uEDC4\uEDCE\uEDD0\uEDD2\uEDD6\uEDFA"+
-        "\uEDFB\uEDFC\uEDFE\uEE31\uEE34\uEE37\uEE3D\uEE3F"+
-        "\uEE40\uEE41\uEE43\uEE47\uEE48\uEE4C\uEE54\uEE56"+
-        "\uEE57\uEE5A\uEE62\uEE66\uEE69\uEE6C\uEE6F\uEE71"+
-        "\uEE74\uEE75\uEE76\uEE78\uEE7A\uEE7B\uEE7C\uEE91"+
-        "\uEE93\uEE94\uEE97\uEE98\uEE99\uEE9B\uEEA1\uEEA6"+
-        "\uEEA9\uEEAA\uEEAC\uEEAD\uEEB0\uEEBF\uEEC1\uEEC6"+
-        "\uEEC7\uEECB\uEECD\uEECF\uEED0\uEED3\uEEDF\uEEE4"+
-        "\uEEE6\uEEF7\uEF77\uEF78\uEF92\uEF93\uEF99\uEF9B"+
-        "\uEF9D\uEFA0\uEFA7\uEFAC\uEFCC\uEFF7\uF051\uF075"+
-        "\uF096\uF099\uF09E\uF0A0\uF0A4\uF0A7\uF0A9\uF0AA"+
-        "\uF0BA\uF0BB\uF0BD\uF0C1\uF0C2\uF0C6\uF0C7\uF0CC"+
-        "\uF0CF\uF0D0\uF0D1\uF0D2\uF0D8\uF136\uF137\uF13A"+
-        "\uF13F\uF140\uF141\uF142\uF145\uF148\uF14A\uF150"+
-        "\uF151\uF155\uF156\uF159\uF15A\uF165\uF16D\uF16E"+
-        "\uF171\uF174\uF177\uF178\uF199\uF19A\uF19C\uF1A1"+
-        "\uF1A2\uF1A3\uF1EE\uF26B\uF44D\uF49C\uF4B1\uF537";
-
-    private final static String innerIndex9=
-        "\uF57E\uF696\uF698\uF6B8\uF6C8\uF6D3\uF76B\uF792"+
-        "\uF831\uF832\uF876\uF939\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\uDA31\uDA32\uDA33\uDA34\uDA35\uDA36\uDA37"+
-        "\uDA38\uDA39\uDA3A\uDA3B\uDA3C\uDA3D\uDA3E\uDA3F"+
-        "\uDA40\uDA41\uDA42\uDA43\uDA44\uDA45\uDA46\uDA47"+
-        "\uDA48\uDA49\uDA4A\uDA4B\uDA4C\uDA4D\uDA4E\uDA4F"+
-        "\uDA50\uDA51\uDA52\uDA53\uDA54\uDA55\uDA56\uDA57"+
-        "\uDA58\uDA59\uDA5A\uDA5B\uDA5C\uDA5D\uDA5E\uDA5F"+
-        "\uDA60\uDA61\uDA62\uDA63\uDA64\uDA65\uDA66\uDA67"+
-        "\uDA68\uDA69\uDA6A\uDA6B\uD93C\uDA6D\uDA6E\uDA6F"+
-        "\uDA70\uDA71\uDA72\uDA73\uDA74\uDA75\uDA76\uDA77"+
-        "\uDA78\uDA79\uDA7A\uDA7B\uDA7C\uDA7D\uDA7E\uDA91"+
-        "\uDA92\uDA93\uDA94\uDA95\uDA96\uDA97\uDA98\uDA99"+
-        "\uDA9A\uDA9B\uDA9C\uDA9D\uDA9E\uDA9F\uD9A6\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\uD95B\uD95C\uD9A0\uDAA0\u0000\uD95D\uDA6C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-        1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18,
-        19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
-        35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
-        51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
-        67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
-        83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, 102,
-        103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-        119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
-        135, 136, 137, 138, 139, 140, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 144, 0, 0, 0, 0, 145
-    };
-
-    String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4,
-        innerIndex5,
-        innerIndex6,
-        innerIndex7,
-        innerIndex8,
-        innerIndex9
-    };
 }
--- a/jdk/src/share/classes/sun/net/httpserver/Request.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/net/httpserver/Request.java	Wed Jul 05 16:52:18 2017 +0200
@@ -52,6 +52,9 @@
         os = rawout;
         do {
             startLine = readLine();
+            if (startLine == null) {
+                return;
+            }
             /* skip blank lines */
         } while (startLine == null ? false : startLine.equals (""));
     }
--- a/jdk/src/share/classes/sun/net/httpserver/ServerImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/net/httpserver/ServerImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -433,6 +433,7 @@
                         rawin = sslStreams.getInputStream();
                         rawout = sslStreams.getOutputStream();
                         engine = sslStreams.getSSLEngine();
+                        connection.sslStreams = sslStreams;
                     } else {
                         rawin = new BufferedInputStream(
                             new Request.ReadStream (
@@ -442,6 +443,8 @@
                             ServerImpl.this, chan
                         );
                     }
+                    connection.raw = rawin;
+                    connection.rawout = rawout;
                 }
                 Request req = new Request (rawin, rawout);
                 requestLine = req.requestLine();
--- a/jdk/src/share/classes/sun/nio/ch/AsynchronousFileChannelImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/AsynchronousFileChannelImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -113,16 +113,16 @@
         }
     }
 
-    final void invalidateAllLocks() {
+    final void invalidateAllLocks() throws IOException {
         if (fileLockTable != null) {
-            try {
-                fileLockTable.removeAll( new FileLockTable.Releaser() {
-                    public void release(FileLock fl) {
-                        ((FileLockImpl)fl).invalidate();
+            for (FileLock fl: fileLockTable.removeAll()) {
+                synchronized (fl) {
+                    if (fl.isValid()) {
+                        FileLockImpl fli = (FileLockImpl)fl;
+                        implRelease(fli);
+                        fli.invalidate();
                     }
-                });
-            } catch (IOException e) {
-                throw new AssertionError(e);
+                }
             }
         }
     }
@@ -158,7 +158,21 @@
     }
 
     /**
-     * Invoked by FileLockImpl to release lock acquired by this channel.
+     * Releases the given file lock.
+     */
+    protected abstract void implRelease(FileLockImpl fli) throws IOException;
+
+    /**
+     * Invoked by FileLockImpl to release the given file lock and remove it
+     * from the lock table.
      */
-    abstract void release(FileLockImpl fli) throws IOException;
+    final void release(FileLockImpl fli) throws IOException {
+        try {
+            begin();
+            implRelease(fli);
+            removeFromFileLockTable(fli);
+        } finally {
+            end();
+        }
+    }
 }
--- a/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -33,8 +33,6 @@
 import java.nio.channels.*;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Iterator;
-import java.lang.reflect.Field;
 import java.security.AccessController;
 import javax.management.ObjectName;
 import javax.management.MalformedObjectNameException;
@@ -95,14 +93,16 @@
     // -- Standard channel operations --
 
     protected void implCloseChannel() throws IOException {
-        // Invalidate and release any locks that we still hold
+        // Release and invalidate any locks that we still hold
         if (fileLockTable != null) {
-            fileLockTable.removeAll( new FileLockTable.Releaser() {
-                public void release(FileLock fl) throws IOException {
-                    ((FileLockImpl)fl).invalidate();
-                    nd.release(fd, fl.position(), fl.size());
+            for (FileLock fl: fileLockTable.removeAll()) {
+                synchronized (fl) {
+                    if (fl.isValid()) {
+                        nd.release(fd, fl.position(), fl.size());
+                        ((FileLockImpl)fl).invalidate();
+                    }
                 }
-            });
+            }
         }
 
         nd.preClose(fd);
@@ -912,32 +912,33 @@
         FileLockImpl fli = new FileLockImpl(this, position, size, shared);
         FileLockTable flt = fileLockTable();
         flt.add(fli);
-        boolean i = true;
+        boolean completed = false;
         int ti = -1;
         try {
             begin();
             ti = threads.add();
             if (!isOpen())
                 return null;
-            int result = nd.lock(fd, true, position, size, shared);
-            if (result == FileDispatcher.RET_EX_LOCK) {
-                assert shared;
-                FileLockImpl fli2 = new FileLockImpl(this, position, size,
-                                                     false);
-                flt.replace(fli, fli2);
-                return fli2;
+            int n;
+            do {
+                n = nd.lock(fd, true, position, size, shared);
+            } while ((n == FileDispatcher.INTERRUPTED) && isOpen());
+            if (isOpen()) {
+                if (n == FileDispatcher.RET_EX_LOCK) {
+                    assert shared;
+                    FileLockImpl fli2 = new FileLockImpl(this, position, size,
+                                                         false);
+                    flt.replace(fli, fli2);
+                    fli = fli2;
+                }
+                completed = true;
             }
-            if (result == FileDispatcher.INTERRUPTED || result == FileDispatcher.NO_LOCK) {
+        } finally {
+            if (!completed)
                 flt.remove(fli);
-                i = false;
-            }
-        } catch (IOException e) {
-            flt.remove(fli);
-            throw e;
-        } finally {
             threads.remove(ti);
             try {
-                end(i);
+                end(completed);
             } catch (ClosedByInterruptException e) {
                 throw new FileLockInterruptionException();
             }
@@ -985,7 +986,6 @@
     }
 
     void release(FileLockImpl fli) throws IOException {
-        ensureOpen();
         int ti = threads.add();
         try {
             ensureOpen();
@@ -1005,7 +1005,7 @@
      */
     private static class SimpleFileLockTable extends FileLockTable {
         // synchronize on list for access
-        private List<FileLock> lockList = new ArrayList<FileLock>(2);
+        private final List<FileLock> lockList = new ArrayList<FileLock>(2);
 
         public SimpleFileLockTable() {
         }
@@ -1034,14 +1034,11 @@
             }
         }
 
-        public void removeAll(Releaser releaser) throws IOException {
+        public List<FileLock> removeAll() {
             synchronized(lockList) {
-                Iterator<FileLock> i = lockList.iterator();
-                while (i.hasNext()) {
-                    FileLock fl = i.next();
-                    releaser.release(fl);
-                    i.remove();
-                }
+                List<FileLock> result = new ArrayList<FileLock>(lockList);
+                lockList.clear();
+                return result;
             }
         }
 
--- a/jdk/src/share/classes/sun/nio/ch/FileLockImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/FileLockImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -31,25 +31,24 @@
 public class FileLockImpl
     extends FileLock
 {
-    boolean valid;
+    private volatile boolean valid = true;
 
     FileLockImpl(FileChannel channel, long position, long size, boolean shared)
     {
         super(channel, position, size, shared);
-        this.valid = true;
     }
 
     FileLockImpl(AsynchronousFileChannel channel, long position, long size, boolean shared)
     {
         super(channel, position, size, shared);
-        this.valid = true;
     }
 
-    public synchronized boolean isValid() {
+    public boolean isValid() {
         return valid;
     }
 
-    synchronized void invalidate() {
+    void invalidate() {
+        assert Thread.holdsLock(this);
         valid = false;
     }
 
@@ -66,5 +65,4 @@
             valid = false;
         }
     }
-
 }
--- a/jdk/src/share/classes/sun/nio/ch/FileLockTable.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/FileLockTable.java	Wed Jul 05 16:52:18 2017 +0200
@@ -61,22 +61,11 @@
     public abstract void remove(FileLock fl);
 
     /**
-     * An implementation of this interface releases a given file lock.
-     * Used with removeAll.
+     * Removes all file locks from the table.
+     *
+     * @return  The list of file locks removed
      */
-    public abstract interface Releaser {
-        void release(FileLock fl) throws IOException;
-    }
-
-    /**
-     * Removes all file locks from the table.
-     * <p>
-     * The Releaser#release method is invoked for each file lock before
-     * it is removed.
-     *
-     * @throws IOException if the release method throws IOException
-     */
-    public abstract void removeAll(Releaser r) throws IOException;
+    public abstract List<FileLock> removeAll();
 
     /**
      * Replaces an existing file lock in the table.
@@ -195,7 +184,7 @@
                 FileLockReference ref = list.get(index);
                 FileLock lock = ref.get();
                 if (lock == fl) {
-                    assert (lock != null) && (lock.channel() == channel);
+                    assert (lock != null) && (lock.acquiredBy() == channel);
                     ref.clear();
                     list.remove(index);
                     break;
@@ -206,7 +195,8 @@
     }
 
     @Override
-    public void removeAll(Releaser releaser) throws IOException {
+    public List<FileLock> removeAll() {
+        List<FileLock> result = new ArrayList<FileLock>();
         List<FileLockReference> list = lockMap.get(fileKey);
         if (list != null) {
             synchronized (list) {
@@ -216,13 +206,13 @@
                     FileLock lock = ref.get();
 
                     // remove locks obtained by this channel
-                    if (lock != null && lock.channel() == channel) {
-                        // invoke the releaser to invalidate/release the lock
-                        releaser.release(lock);
-
+                    if (lock != null && lock.acquiredBy() == channel) {
                         // remove the lock from the list
                         ref.clear();
                         list.remove(index);
+
+                        // add to result
+                        result.add(lock);
                     } else {
                         index++;
                     }
@@ -232,6 +222,7 @@
                 removeKeyIfEmpty(fileKey, list);
             }
         }
+        return result;
     }
 
     @Override
--- a/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -97,6 +97,9 @@
             // then it will throw ClosedChannelException
         }
 
+        // Invalidate and release any locks that we still hold
+        invalidateAllLocks();
+
         // signal any threads blocked on this channel
         nd.preClose(fdObj);
         threads.signalAndWait();
@@ -109,9 +112,6 @@
             closeLock.writeLock().unlock();
         }
 
-        // Invalidate and release any locks that we still hold
-        invalidateAllLocks();
-
         // close file
         nd.close(fdObj);
 
@@ -226,11 +226,9 @@
                         do {
                             n = nd.lock(fdObj, true, position, size, shared);
                         } while ((n == FileDispatcher.INTERRUPTED) && isOpen());
-                        if (n == FileDispatcher.LOCKED) {
+                        if (n == FileDispatcher.LOCKED && isOpen()) {
                             result.setResult(fli);
                         } else {
-                            if (n != FileDispatcher.INTERRUPTED)
-                                throw new AssertionError();
                             throw new AsynchronousCloseException();
                         }
                     } catch (IOException x) {
@@ -279,16 +277,16 @@
             do {
                 n = nd.lock(fdObj, false, position, size, shared);
             } while ((n == FileDispatcher.INTERRUPTED) && isOpen());
-            if (n != FileDispatcher.LOCKED) {
-                if (n == FileDispatcher.NO_LOCK)
-                    return null;    // locked by someone else
-                if (n == FileDispatcher.INTERRUPTED)
-                    throw new AsynchronousCloseException();
-                // should not get here
-                throw new AssertionError();
+            if (n == FileDispatcher.LOCKED && isOpen()) {
+                gotLock = true;
+                return fli;    // lock acquired
             }
-            gotLock = true;
-            return fli;
+            if (n == FileDispatcher.NO_LOCK)
+                return null;    // locked by someone else
+            if (n == FileDispatcher.INTERRUPTED)
+                throw new AsynchronousCloseException();
+            // should not get here
+            throw new AssertionError();
         } finally {
             if (!gotLock)
                 removeFromFileLockTable(fli);
@@ -298,14 +296,8 @@
     }
 
     @Override
-    void release(FileLockImpl fli) throws IOException {
-        try {
-            begin();
-            nd.release(fdObj, fli.position(), fli.size());
-            removeFromFileLockTable(fli);
-        } finally {
-            end();
-        }
+    protected void implRelease(FileLockImpl fli) throws IOException {
+        nd.release(fdObj, fli.position(), fli.size());
     }
 
     @Override
--- a/jdk/src/share/classes/sun/security/krb5/Config.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/Config.java	Wed Jul 05 16:52:18 2017 +0200
@@ -736,6 +736,14 @@
         return name;
     }
 
+    private static String trimmed(String s) {
+        s = s.trim();
+        if (s.charAt(0) == '"' && s.charAt(s.length()-1) == '"' ||
+                s.charAt(0) == '\'' && s.charAt(s.length()-1) == '\'') {
+            s = s.substring(1, s.length()-1).trim();
+        }
+        return s;
+    }
     /**
      * Parses key-value pairs under a stanza name.
      */
@@ -747,7 +755,7 @@
             for (int j = 0; j < line.length(); j++) {
                 if (line.charAt(j) == '=') {
                     String key = (line.substring(0, j)).trim();
-                    String value = (line.substring(j + 1)).trim();
+                    String value = trimmed(line.substring(j + 1));
                     table.put(key, value);
                     break;
                 }
@@ -820,7 +828,7 @@
                     } else {
                         nameVector = table.get(key);
                     }
-                    nameVector.addElement((line.substring(j + 1)).trim());
+                    nameVector.addElement(trimmed(line.substring(j + 1)));
                     table.put(key, nameVector);
                     break;
                 }
@@ -1263,4 +1271,32 @@
         }
     }
 
+    @Override
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+        toStringIndented("", stanzaTable, sb);
+        return sb.toString();
+    }
+    private static void toStringIndented(String prefix, Object obj,
+            StringBuffer sb) {
+        if (obj instanceof String) {
+            sb.append(prefix);
+            sb.append(obj);
+            sb.append('\n');
+        } else if (obj instanceof Hashtable) {
+            Hashtable tab = (Hashtable)obj;
+            for (Object o: tab.keySet()) {
+                sb.append(prefix);
+                sb.append(o);
+                sb.append(" = {\n");
+                toStringIndented(prefix + "    ", tab.get(o), sb);
+                sb.append(prefix + "}\n");
+            }
+        } else if (obj instanceof Vector) {
+            Vector v = (Vector)obj;
+            for (Object o: v.toArray()) {
+                toStringIndented(prefix + "    ", o, sb);
+            }
+        }
+    }
 }
--- a/jdk/src/share/classes/sun/security/krb5/KrbKdcReq.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/KrbKdcReq.java	Wed Jul 05 16:52:18 2017 +0200
@@ -274,27 +274,31 @@
                                + ",Attempt =" + i
                                + ", #bytes=" + obuf.length);
                     }
-                    /*
-                     * Send the data to the kdc.
-                     */
+                    try {
+                        /*
+                         * Send the data to the kdc.
+                         */
 
                     kdcClient.send(obuf);
 
-                    /*
-                     * And get a response.
-                     */
-                    try {
-                        ibuf = kdcClient.receive();
-                        break;
-                    } catch (SocketTimeoutException se) {
-                        if (DEBUG) {
-                            System.out.println ("SocketTimeOutException with " +
-                                                "attempt: " + i);
+                        /*
+                         * And get a response.
+                         */
+                        try {
+                            ibuf = kdcClient.receive();
+                            break;
+                        } catch (SocketTimeoutException se) {
+                            if (DEBUG) {
+                                System.out.println ("SocketTimeOutException with " +
+                                                    "attempt: " + i);
+                            }
+                            if (i == DEFAULT_KDC_RETRY_LIMIT) {
+                                ibuf = null;
+                                throw se;
+                            }
                         }
-                        if (i == DEFAULT_KDC_RETRY_LIMIT) {
-                            ibuf = null;
-                            throw se;
-                        }
+                    } finally {
+                        kdcClient.close();
                     }
                 }
             }
--- a/jdk/src/share/classes/sun/security/krb5/internal/UDPClient.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/internal/UDPClient.java	Wed Jul 05 16:52:18 2017 +0200
@@ -93,4 +93,7 @@
         return data;
     }
 
+    public void close() {
+        dgSocket.close();
+    }
 }
--- a/jdk/src/share/classes/sun/security/pkcs11/P11KeyPairGenerator.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11KeyPairGenerator.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,6 +38,8 @@
 import sun.security.pkcs11.wrapper.*;
 import static sun.security.pkcs11.wrapper.PKCS11Constants.*;
 
+import sun.security.rsa.RSAKeyFactory;
+
 /**
  * KeyPairGenerator implementation class. This class currently supports
  * RSA, DSA, DH, and EC.
@@ -66,7 +68,7 @@
     private AlgorithmParameterSpec params;
 
     // for RSA, selected or default value of public exponent, always valid
-    private BigInteger rsaPublicExponent;
+    private BigInteger rsaPublicExponent = RSAKeyGenParameterSpec.F4;
 
     // SecureRandom instance, if specified in init
     private SecureRandom random;
@@ -88,19 +90,19 @@
     public void initialize(int keySize, SecureRandom random) {
         token.ensureValid();
         try {
-            checkKeySize(keySize);
+            checkKeySize(keySize, null);
         } catch (InvalidAlgorithmParameterException e) {
             throw new InvalidParameterException(e.getMessage());
         }
         this.keySize = keySize;
         this.params = null;
         this.random = random;
-        this.rsaPublicExponent = RSAKeyGenParameterSpec.F4;
         if (algorithm.equals("EC")) {
             params = P11ECKeyFactory.getECParameterSpec(keySize);
             if (params == null) {
-                throw new InvalidParameterException
-                ("No EC parameters available for key size " + keySize + " bits");
+                throw new InvalidParameterException(
+                    "No EC parameters available for key size "
+                    + keySize + " bits");
             }
         }
     }
@@ -115,8 +117,10 @@
                         ("DHParameterSpec required for Diffie-Hellman");
             }
             DHParameterSpec dhParams = (DHParameterSpec)params;
-            this.keySize = dhParams.getP().bitLength();
-            this.params = params;
+            int tmpKeySize = dhParams.getP().bitLength();
+            checkKeySize(tmpKeySize, dhParams);
+            this.keySize = tmpKeySize;
+            this.params = dhParams;
             // XXX sanity check params
         } else if (algorithm.equals("RSA")) {
             if (params instanceof RSAKeyGenParameterSpec == false) {
@@ -124,7 +128,9 @@
                         ("RSAKeyGenParameterSpec required for RSA");
             }
             RSAKeyGenParameterSpec rsaParams = (RSAKeyGenParameterSpec)params;
-            this.keySize = rsaParams.getKeysize();
+            int tmpKeySize = rsaParams.getKeysize();
+            checkKeySize(tmpKeySize, rsaParams);
+            this.keySize = tmpKeySize;
             this.params = null;
             this.rsaPublicExponent = rsaParams.getPublicExponent();
             // XXX sanity check params
@@ -134,13 +140,16 @@
                         ("DSAParameterSpec required for DSA");
             }
             DSAParameterSpec dsaParams = (DSAParameterSpec)params;
-            this.keySize = dsaParams.getP().bitLength();
-            this.params = params;
+            int tmpKeySize = dsaParams.getP().bitLength();
+            checkKeySize(tmpKeySize, dsaParams);
+            this.keySize = tmpKeySize;
+            this.params = dsaParams;
             // XXX sanity check params
         } else if (algorithm.equals("EC")) {
             ECParameterSpec ecParams;
             if (params instanceof ECParameterSpec) {
-                ecParams = P11ECKeyFactory.getECParameterSpec((ECParameterSpec)params);
+                ecParams = P11ECKeyFactory.getECParameterSpec(
+                    (ECParameterSpec)params);
                 if (ecParams == null) {
                     throw new InvalidAlgorithmParameterException
                         ("Unsupported curve: " + params);
@@ -156,16 +165,17 @@
                 throw new InvalidAlgorithmParameterException
                     ("ECParameterSpec or ECGenParameterSpec required for EC");
             }
-            this.keySize = ecParams.getCurve().getField().getFieldSize();
+            int tmpKeySize = ecParams.getCurve().getField().getFieldSize();
+            checkKeySize(tmpKeySize, ecParams);
+            this.keySize = tmpKeySize;
             this.params = ecParams;
         } else {
             throw new ProviderException("Unknown algorithm: " + algorithm);
         }
         this.random = random;
-        checkKeySize(keySize);
     }
 
-    private void checkKeySize(int keySize)
+    private void checkKeySize(int keySize, AlgorithmParameterSpec params)
             throws InvalidAlgorithmParameterException {
         if (algorithm.equals("EC")) {
             if (keySize < 112) {
@@ -178,13 +188,28 @@
                     ("Key size must be at most 2048 bit");
             }
             return;
+        } else if (algorithm.equals("RSA")) {
+            BigInteger tmpExponent = rsaPublicExponent;
+            if (params != null) {
+                // Already tested for instanceof RSAKeyGenParameterSpec above
+                tmpExponent =
+                    ((RSAKeyGenParameterSpec)params).getPublicExponent();
+            }
+            try {
+                // This provider supports 64K or less.
+                RSAKeyFactory.checkKeyLengths(keySize, tmpExponent,
+                    512, 64 * 1024);
+            } catch (InvalidKeyException e) {
+                throw new InvalidAlgorithmParameterException(e.getMessage());
+            }
+            return;
         }
+
         if (keySize < 512) {
             throw new InvalidAlgorithmParameterException
                 ("Key size must be at least 512 bit");
         }
-        if (algorithm.equals("RSA") ||
-                (algorithm.equals("DH") && (params != null))) {
+        if (algorithm.equals("DH") && (params != null)) {
             // sanity check, nobody really wants keys this large
             if (keySize > 64 * 1024) {
                 throw new InvalidAlgorithmParameterException
--- a/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java	Wed Jul 05 16:52:18 2017 +0200
@@ -80,6 +80,8 @@
 import sun.security.pkcs11.wrapper.*;
 import static sun.security.pkcs11.wrapper.PKCS11Constants.*;
 
+import sun.security.rsa.RSAKeyFactory;
+
 final class P11KeyStore extends KeyStoreSpi {
 
     private static final CK_ATTRIBUTE ATTR_CLASS_CERT =
@@ -1328,6 +1330,15 @@
             BigInteger modulus = attrs[0].getBigInteger();
             keyLength = modulus.bitLength();
 
+            // This check will combine our "don't care" values here
+            // with the system-wide min/max values.
+            try {
+                RSAKeyFactory.checkKeyLengths(keyLength, null,
+                    -1, Integer.MAX_VALUE);
+            } catch (InvalidKeyException e) {
+                throw new KeyStoreException(e.getMessage());
+            }
+
             return P11Key.privateKey(session,
                                 oHandle,
                                 keyType,
--- a/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -35,6 +35,8 @@
 import sun.security.pkcs11.wrapper.*;
 import static sun.security.pkcs11.wrapper.PKCS11Constants.*;
 
+import sun.security.rsa.RSAKeyFactory;
+
 /**
  * RSA KeyFactory implemenation.
  *
@@ -131,6 +133,9 @@
         } catch (PKCS11Exception e) {
             throw new InvalidKeySpecException
                 ("Could not create RSA public key", e);
+        } catch (InvalidKeyException e) {
+            throw new InvalidKeySpecException
+                ("Could not create RSA public key", e);
         }
     }
 
@@ -175,11 +180,15 @@
         } catch (PKCS11Exception e) {
             throw new InvalidKeySpecException
                 ("Could not create RSA private key", e);
+        } catch (InvalidKeyException e) {
+            throw new InvalidKeySpecException
+                ("Could not create RSA private key", e);
         }
     }
 
     private PublicKey generatePublic(BigInteger n, BigInteger e)
-            throws PKCS11Exception {
+            throws PKCS11Exception, InvalidKeyException {
+        RSAKeyFactory.checkKeyLengths(n.bitLength(), e, -1, 64 * 1024);
         CK_ATTRIBUTE[] attributes = new CK_ATTRIBUTE[] {
             new CK_ATTRIBUTE(CKA_CLASS, CKO_PUBLIC_KEY),
             new CK_ATTRIBUTE(CKA_KEY_TYPE, CKK_RSA),
@@ -200,7 +209,8 @@
     }
 
     private PrivateKey generatePrivate(BigInteger n, BigInteger d)
-            throws PKCS11Exception {
+            throws PKCS11Exception, InvalidKeyException {
+        RSAKeyFactory.checkKeyLengths(n.bitLength(), null, -1, 64 * 1024);
         CK_ATTRIBUTE[] attributes = new CK_ATTRIBUTE[] {
             new CK_ATTRIBUTE(CKA_CLASS, CKO_PRIVATE_KEY),
             new CK_ATTRIBUTE(CKA_KEY_TYPE, CKK_RSA),
@@ -222,7 +232,9 @@
 
     private PrivateKey generatePrivate(BigInteger n, BigInteger e,
             BigInteger d, BigInteger p, BigInteger q, BigInteger pe,
-            BigInteger qe, BigInteger coeff) throws PKCS11Exception {
+            BigInteger qe, BigInteger coeff) throws PKCS11Exception,
+            InvalidKeyException {
+        RSAKeyFactory.checkKeyLengths(n.bitLength(), e, -1, 64 * 1024);
         CK_ATTRIBUTE[] attributes = new CK_ATTRIBUTE[] {
             new CK_ATTRIBUTE(CKA_CLASS, CKO_PRIVATE_KEY),
             new CK_ATTRIBUTE(CKA_KEY_TYPE, CKK_RSA),
--- a/jdk/src/share/classes/sun/security/pkcs11/SunPKCS11.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/SunPKCS11.java	Wed Jul 05 16:52:18 2017 +0200
@@ -120,11 +120,13 @@
     }
 
     /**
-     * @deprecated use new SunPKCS11(String) or new SunPKCS11(InputStream) instead
+     * @deprecated use new SunPKCS11(String) or new SunPKCS11(InputStream)
+     *         instead
      */
     @Deprecated
     public SunPKCS11(String configName, InputStream configStream) {
-        super("SunPKCS11-" + Config.getConfig(configName, configStream).getName(),
+        super("SunPKCS11-" +
+            Config.getConfig(configName, configStream).getName(),
             1.7d, Config.getConfig(configName, configStream).getDescription());
         this.configName = configName;
         this.config = Config.removeConfig(configName);
@@ -153,7 +155,8 @@
         //
         // If we are in Secmod mode and configured to use either the
         // nssKeyStore or the nssTrustAnchors module, we automatically
-        // switch to using the NSS trust attributes for trusted certs (KeyStore).
+        // switch to using the NSS trust attributes for trusted certs
+        // (KeyStore).
         //
 
         if (useSecmod) {
@@ -168,33 +171,40 @@
                 if (secmod.isInitialized()) {
                     if (nssSecmodDirectory != null) {
                         String s = secmod.getConfigDir();
-                        if ((s != null) && (s.equals(nssSecmodDirectory) == false)) {
+                        if ((s != null) &&
+                                (s.equals(nssSecmodDirectory) == false)) {
                             throw new ProviderException("Secmod directory "
                                 + nssSecmodDirectory
-                                + " invalid, NSS already initialized with " + s);
+                                + " invalid, NSS already initialized with "
+                                + s);
                         }
                     }
                     if (nssLibraryDirectory != null) {
                         String s = secmod.getLibDir();
-                        if ((s != null) && (s.equals(nssLibraryDirectory) == false)) {
+                        if ((s != null) &&
+                                (s.equals(nssLibraryDirectory) == false)) {
                             throw new ProviderException("NSS library directory "
                                 + nssLibraryDirectory
-                                + " invalid, NSS already initialized with " + s);
+                                + " invalid, NSS already initialized with "
+                                + s);
                         }
                     }
                 } else {
                     if (nssDbMode != DbMode.NO_DB) {
                         if (nssSecmodDirectory == null) {
-                            throw new ProviderException("Secmod not initialized and "
-                                + "nssSecmodDirectory not specified");
+                            throw new ProviderException(
+                                "Secmod not initialized and "
+                                 + "nssSecmodDirectory not specified");
                         }
                     } else {
                         if (nssSecmodDirectory != null) {
-                            throw new ProviderException
-                            ("nssSecmodDirectory must not be specified in noDb mode");
+                            throw new ProviderException(
+                                "nssSecmodDirectory must not be "
+                                + "specified in noDb mode");
                         }
                     }
-                    secmod.initialize(nssDbMode, nssSecmodDirectory, nssLibraryDirectory);
+                    secmod.initialize(nssDbMode, nssSecmodDirectory,
+                        nssLibraryDirectory);
                 }
             } catch (IOException e) {
                 // XXX which exception to throw
@@ -211,7 +221,8 @@
                 if (nssModule != null) {
                     moduleName = "fips";
                 } else {
-                    moduleName = (nssDbMode == DbMode.NO_DB) ? "crypto" : "keystore";
+                    moduleName = (nssDbMode == DbMode.NO_DB) ?
+                        "crypto" : "keystore";
                 }
             }
             if (moduleName.equals("fips")) {
@@ -253,10 +264,12 @@
                         + ": only " + k + " external NSS modules available");
                 }
             } else {
-                throw new ProviderException("Unknown NSS module: " + moduleName);
+                throw new ProviderException(
+                    "Unknown NSS module: " + moduleName);
             }
             if (nssModule == null) {
-                throw new ProviderException("NSS module not available: " + moduleName);
+                throw new ProviderException(
+                    "NSS module not available: " + moduleName);
             }
             if (nssModule.hasInitializedProvider()) {
                 throw new ProviderException("Secmod module already configured");
@@ -296,8 +309,9 @@
             initArgs.flags = CKF_OS_LOCKING_OK;
             PKCS11 tmpPKCS11;
             try {
-                tmpPKCS11 = PKCS11.getInstance
-                    (library, functionList, initArgs, config.getOmitInitialize());
+                tmpPKCS11 = PKCS11.getInstance(
+                    library, functionList, initArgs,
+                    config.getOmitInitialize());
             } catch (PKCS11Exception e) {
                 if (debug != null) {
                     debug.println("Multi-threaded initialization failed: " + e);
@@ -312,8 +326,8 @@
                 } else {
                     initArgs.flags = 0;
                 }
-                tmpPKCS11 = PKCS11.getInstance
-                    (library, functionList, initArgs, config.getOmitInitialize());
+                tmpPKCS11 = PKCS11.getInstance(library,
+                    functionList, initArgs, config.getOmitInitialize());
             }
             p11 = tmpPKCS11;
 
@@ -336,8 +350,10 @@
                     System.out.println("Slots with tokens: " + toString(slots));
                 }
                 if (slotID < 0) {
-                    if ((slotListIndex < 0) || (slotListIndex >= slots.length)) {
-                        throw new ProviderException("slotListIndex is " + slotListIndex
+                    if ((slotListIndex < 0)
+                            || (slotListIndex >= slots.length)) {
+                        throw new ProviderException("slotListIndex is "
+                            + slotListIndex
                             + " but token only has " + slots.length + " slots");
                     }
                     slotID = slots[slotListIndex];
@@ -575,12 +591,15 @@
         d(KF, "DH",             P11DHKeyFactory,        s("DiffieHellman"),
                 m(CKM_DH_PKCS_KEY_PAIR_GEN, CKM_DH_PKCS_DERIVE));
         d(KF, "EC",             P11DHKeyFactory,
-                m(CKM_EC_KEY_PAIR_GEN, CKM_ECDH1_DERIVE, CKM_ECDSA, CKM_ECDSA_SHA1));
+                m(CKM_EC_KEY_PAIR_GEN, CKM_ECDH1_DERIVE,
+                    CKM_ECDSA, CKM_ECDSA_SHA1));
 
         // AlgorithmParameters for EC.
         // Only needed until we have an EC implementation in the SUN provider.
-        d(AGP, "EC",            "sun.security.ec.ECParameters", s("1.2.840.10045.2.1"),
-                m(CKM_EC_KEY_PAIR_GEN, CKM_ECDH1_DERIVE, CKM_ECDSA, CKM_ECDSA_SHA1));
+        d(AGP, "EC",            "sun.security.ec.ECParameters",
+                                                s("1.2.840.10045.2.1"),
+                m(CKM_EC_KEY_PAIR_GEN, CKM_ECDH1_DERIVE,
+                    CKM_ECDSA, CKM_ECDSA_SHA1));
 
         d(KA, "DH",             P11KeyAgreement,        s("DiffieHellman"),
                 m(CKM_DH_PKCS_DERIVE));
@@ -654,12 +673,16 @@
         d(SIG, "SHA512withRSA", P11Signature,
                 m(CKM_SHA512_RSA_PKCS, CKM_RSA_PKCS, CKM_RSA_X_509));
 
-        d(KG, "SunTlsRsaPremasterSecret", "sun.security.pkcs11.P11TlsRsaPremasterSecretGenerator",
+        d(KG, "SunTlsRsaPremasterSecret",
+                    "sun.security.pkcs11.P11TlsRsaPremasterSecretGenerator",
                 m(CKM_SSL3_PRE_MASTER_KEY_GEN, CKM_TLS_PRE_MASTER_KEY_GEN));
-        d(KG, "SunTlsMasterSecret", "sun.security.pkcs11.P11TlsMasterSecretGenerator",
+        d(KG, "SunTlsMasterSecret",
+                    "sun.security.pkcs11.P11TlsMasterSecretGenerator",
                 m(CKM_SSL3_MASTER_KEY_DERIVE, CKM_TLS_MASTER_KEY_DERIVE,
-                    CKM_SSL3_MASTER_KEY_DERIVE_DH, CKM_TLS_MASTER_KEY_DERIVE_DH));
-        d(KG, "SunTlsKeyMaterial", "sun.security.pkcs11.P11TlsKeyMaterialGenerator",
+                    CKM_SSL3_MASTER_KEY_DERIVE_DH,
+                    CKM_TLS_MASTER_KEY_DERIVE_DH));
+        d(KG, "SunTlsKeyMaterial",
+                    "sun.security.pkcs11.P11TlsKeyMaterialGenerator",
                 m(CKM_SSL3_KEY_AND_MAC_DERIVE, CKM_TLS_KEY_AND_MAC_DERIVE));
         d(KG, "SunTlsPrf", "sun.security.pkcs11.P11TlsPrfGenerator",
                 m(CKM_TLS_PRF, CKM_NSS_TLS_PRF_GENERAL));
@@ -773,6 +796,13 @@
             System.out.println(token.tokenInfo);
         }
         long[] supportedMechanisms = p11.C_GetMechanismList(slotID);
+
+        // Create a map from the various Descriptors to the "most
+        // preferred" mechanism that was defined during the
+        // static initialization.  For example, DES/CBC/PKCS5Padding
+        // could be mapped to CKM_DES_CBC_PAD or CKM_DES_CBC.  Prefer
+        // the earliest entry.  When asked for "DES/CBC/PKCS5Padding", we
+        // return a CKM_DES_CBC_PAD.
         final Map<Descriptor,Integer> supportedAlgs =
                                         new HashMap<Descriptor,Integer>();
         for (int i = 0; i < supportedMechanisms.length; i++) {
@@ -807,6 +837,9 @@
                     supportedAlgs.put(d, integerMech);
                     continue;
                 }
+                // See if there is something "more preferred"
+                // than what we currently have in the supportedAlgs
+                // map.
                 int intOldMech = oldMech.intValue();
                 for (int j = 0; j < d.mechanisms.length; j++) {
                     int nextMech = d.mechanisms[j];
--- a/jdk/src/share/classes/sun/security/rsa/RSAKeyFactory.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/rsa/RSAKeyFactory.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,8 @@
 import java.security.interfaces.*;
 import java.security.spec.*;
 
+import sun.security.action.GetPropertyAction;
+
 /**
  * KeyFactory for RSA keys. Keys must be instances of PublicKey or PrivateKey
  * and getAlgorithm() must return "RSA". For such keys, it supports conversion
@@ -68,6 +70,24 @@
     private final static Class<?> x509KeySpecClass  = X509EncodedKeySpec.class;
     private final static Class<?> pkcs8KeySpecClass = PKCS8EncodedKeySpec.class;
 
+    public final static int MIN_MODLEN = 512;
+    public final static int MAX_MODLEN = 16384;
+
+    /*
+     * If the modulus length is above this value, restrict the size of
+     * the exponent to something that can be reasonably computed.  We
+     * could simply hardcode the exp len to something like 64 bits, but
+     * this approach allows flexibility in case impls would like to use
+     * larger module and exponent values.
+     */
+    public final static int MAX_MODLEN_RESTRICT_EXP = 3072;
+    public final static int MAX_RESTRICTED_EXPLEN = 64;
+
+    private static final boolean restrictExpLen =
+        "true".equalsIgnoreCase(AccessController.doPrivileged(
+            new GetPropertyAction(
+                "sun.security.rsa.restrictRSAExponent", "true")));
+
     // instance used for static translateKey();
     private final static RSAKeyFactory INSTANCE = new RSAKeyFactory();
 
@@ -76,74 +96,79 @@
     }
 
     /**
-     * Static method to convert Key into a useable instance of
-     * RSAPublicKey or RSAPrivate(Crt)Key. Check the key and convert it
-     * to a SunRsaSign key if necessary. If the key is not an RSA key
-     * or cannot be used, throw an InvalidKeyException.
-     *
-     * The difference between this method and engineTranslateKey() is that
-     * we do not convert keys of other providers that are already an
-     * instance of RSAPublicKey or RSAPrivate(Crt)Key.
+     * Static method to convert Key into an instance of RSAPublicKeyImpl
+     * or RSAPrivate(Crt)KeyImpl. If the key is not an RSA key or cannot be
+     * used, throw an InvalidKeyException.
      *
      * Used by RSASignature and RSACipher.
      */
     public static RSAKey toRSAKey(Key key) throws InvalidKeyException {
-        if (key instanceof RSAKey) {
-            RSAKey rsaKey = (RSAKey)key;
-            checkKey(rsaKey);
-            return rsaKey;
+        if ((key instanceof RSAPrivateKeyImpl) ||
+            (key instanceof RSAPrivateCrtKeyImpl) ||
+            (key instanceof RSAPublicKeyImpl)) {
+            return (RSAKey)key;
         } else {
             return (RSAKey)INSTANCE.engineTranslateKey(key);
         }
     }
 
-    /**
-     * Check that the given RSA key is valid.
+    /*
+     * Single test entry point for all of the mechanisms in the SunRsaSign
+     * provider (RSA*KeyImpls).  All of the tests are the same.
+     *
+     * For compatibility, we round up to the nearest byte here:
+     * some Key impls might pass in a value within a byte of the
+     * real value.
      */
-    private static void checkKey(RSAKey key) throws InvalidKeyException {
-        // check for subinterfaces, omit additional checks for our keys
-        if (key instanceof RSAPublicKey) {
-            if (key instanceof RSAPublicKeyImpl) {
-                return;
-            }
-        } else if (key instanceof RSAPrivateKey) {
-            if ((key instanceof RSAPrivateCrtKeyImpl)
-                    || (key instanceof RSAPrivateKeyImpl)) {
-                return;
-            }
-        } else {
-            throw new InvalidKeyException("Neither a public nor a private key");
-        }
-        // RSAKey does not extend Key, so we need to do a cast
-        String keyAlg = ((Key)key).getAlgorithm();
-        if (keyAlg.equals("RSA") == false) {
-            throw new InvalidKeyException("Not an RSA key: " + keyAlg);
-        }
-        BigInteger modulus;
-        // some providers implement RSAKey for keys where the values are
-        // not accessible (although they should). Detect those here
-        // for a more graceful failure.
-        try {
-            modulus = key.getModulus();
-            if (modulus == null) {
-                throw new InvalidKeyException("Modulus is missing");
-            }
-        } catch (RuntimeException e) {
-            throw new InvalidKeyException(e);
-        }
-        checkKeyLength(modulus);
+    static void checkRSAProviderKeyLengths(int modulusLen, BigInteger exponent)
+            throws InvalidKeyException {
+        checkKeyLengths(((modulusLen + 7) & ~7), exponent,
+            RSAKeyFactory.MIN_MODLEN, Integer.MAX_VALUE);
     }
 
     /**
-     * Check the length of the modulus of an RSA key. We only support keys
-     * at least 505 bits long.
+     * Check the length of an RSA key modulus/exponent to make sure it
+     * is not too short or long.  Some impls have their own min and
+     * max key sizes that may or may not match with a system defined value.
+     *
+     * @param modulusLen the bit length of the RSA modulus.
+     * @param exponent the RSA exponent
+     * @param minModulusLen if > 0, check to see if modulusLen is at
+     *        least this long, otherwise unused.
+     * @param maxModulusLen caller will allow this max number of bits.
+     *        Allow the smaller of the system-defined maximum and this param.
+     *
+     * @throws InvalidKeyException if any of the values are unacceptable.
      */
-    static void checkKeyLength(BigInteger modulus) throws InvalidKeyException {
-        if (modulus.bitLength() < 505) {
-            // some providers may generate slightly shorter keys
-            // accept them if the encoding is at least 64 bytes long
-            throw new InvalidKeyException
-                ("RSA keys must be at least 512 bits long");
+     public static void checkKeyLengths(int modulusLen, BigInteger exponent,
+            int minModulusLen, int maxModulusLen) throws InvalidKeyException {
+
+        if ((minModulusLen > 0) && (modulusLen < (minModulusLen))) {
+            throw new InvalidKeyException( "RSA keys must be at least " +
+                minModulusLen + " bits long");
+        }
+
+        // Even though our policy file may allow this, we don't want
+        // either value (mod/exp) to be too big.
+
+        int maxLen = Math.min(maxModulusLen, MAX_MODLEN);
+
+        // If a RSAPrivateKey/RSAPublicKey, make sure the
+        // modulus len isn't too big.
+        if (modulusLen > maxLen) {
+            throw new InvalidKeyException(
+                "RSA keys must be no longer than " + maxLen + " bits");
+        }
+
+        // If a RSAPublicKey, make sure the exponent isn't too big.
+        if (restrictExpLen && (exponent != null) &&
+                (modulusLen > MAX_MODLEN_RESTRICT_EXP) &&
+                (exponent.bitLength() > MAX_RESTRICTED_EXPLEN)) {
+            throw new InvalidKeyException(
+                "RSA exponents can be no longer than " +
+                MAX_RESTRICTED_EXPLEN + " bits " +
+                " if modulus is greater than " +
+                MAX_MODLEN_RESTRICT_EXP + " bits");
         }
     }
 
--- a/jdk/src/share/classes/sun/security/rsa/RSAKeyPairGenerator.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/rsa/RSAKeyPairGenerator.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -47,7 +47,7 @@
     // public exponent to use
     private BigInteger publicExponent;
 
-    // size of the key to generate, >= 512
+    // size of the key to generate, >= RSAKeyFactory.MIN_MODLEN
     private int keySize;
 
     // PRNG to use
@@ -60,15 +60,16 @@
 
     // initialize the generator. See JCA doc
     public void initialize(int keySize, SecureRandom random) {
-        if (keySize < 512) {
-            throw new InvalidParameterException
-                ("Key size must be at least 512 bits");
+
+        // do not allow unreasonably small or large key sizes,
+        // probably user error
+        try {
+            RSAKeyFactory.checkKeyLengths(keySize, RSAKeyGenParameterSpec.F4,
+                512, 64 * 1024);
+        } catch (InvalidKeyException e) {
+            throw new InvalidParameterException(e.getMessage());
         }
-        if (keySize > 64 * 1024) {
-            // do not allow unreasonably large key sizes, probably user error
-            throw new InvalidParameterException
-                ("Key size must be 65536 bits or less");
-        }
+
         this.keySize = keySize;
         this.random = random;
         this.publicExponent = RSAKeyGenParameterSpec.F4;
@@ -77,35 +78,41 @@
     // second initialize method. See JCA doc.
     public void initialize(AlgorithmParameterSpec params, SecureRandom random)
             throws InvalidAlgorithmParameterException {
+
         if (params instanceof RSAKeyGenParameterSpec == false) {
             throw new InvalidAlgorithmParameterException
                 ("Params must be instance of RSAKeyGenParameterSpec");
         }
+
         RSAKeyGenParameterSpec rsaSpec = (RSAKeyGenParameterSpec)params;
-        keySize = rsaSpec.getKeysize();
-        publicExponent = rsaSpec.getPublicExponent();
-        this.random = random;
-        if (keySize < 512) {
-            throw new InvalidAlgorithmParameterException
-                ("Key size must be at least 512 bits");
-        }
-        if (keySize > 64 * 1024) {
-            // do not allow unreasonably large key sizes, probably user error
-            throw new InvalidAlgorithmParameterException
-                ("Key size must be 65536 bits or less");
-        }
-        if (publicExponent == null) {
-            publicExponent = RSAKeyGenParameterSpec.F4;
+        int tmpKeySize = rsaSpec.getKeysize();
+        BigInteger tmpPublicExponent = rsaSpec.getPublicExponent();
+
+        if (tmpPublicExponent == null) {
+            tmpPublicExponent = RSAKeyGenParameterSpec.F4;
         } else {
-            if (publicExponent.compareTo(RSAKeyGenParameterSpec.F0) < 0) {
+            if (tmpPublicExponent.compareTo(RSAKeyGenParameterSpec.F0) < 0) {
                 throw new InvalidAlgorithmParameterException
                         ("Public exponent must be 3 or larger");
             }
-            if (publicExponent.bitLength() > keySize) {
+            if (tmpPublicExponent.bitLength() > tmpKeySize) {
                 throw new InvalidAlgorithmParameterException
                         ("Public exponent must be smaller than key size");
             }
         }
+
+        // do not allow unreasonably large key sizes, probably user error
+        try {
+            RSAKeyFactory.checkKeyLengths(tmpKeySize, tmpPublicExponent,
+                512, 64 * 1024);
+        } catch (InvalidKeyException e) {
+            throw new InvalidAlgorithmParameterException(
+                "Invalid key sizes", e);
+        }
+
+        this.keySize = tmpKeySize;
+        this.publicExponent = tmpPublicExponent;
+        this.random = random;
     }
 
     // generate the keypair. See JCA doc
--- a/jdk/src/share/classes/sun/security/rsa/RSAPrivateCrtKeyImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/rsa/RSAPrivateCrtKeyImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -89,7 +89,7 @@
      */
     RSAPrivateCrtKeyImpl(byte[] encoded) throws InvalidKeyException {
         decode(encoded);
-        RSAKeyFactory.checkKeyLength(n);
+        RSAKeyFactory.checkRSAProviderKeyLengths(n.bitLength(), e);
     }
 
     /**
@@ -107,7 +107,8 @@
         this.pe = pe;
         this.qe = qe;
         this.coeff = coeff;
-        RSAKeyFactory.checkKeyLength(n);
+        RSAKeyFactory.checkRSAProviderKeyLengths(n.bitLength(), e);
+
         // generate the encoding
         algid = rsaId;
         try {
--- a/jdk/src/share/classes/sun/security/rsa/RSAPrivateKeyImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/rsa/RSAPrivateKeyImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -61,7 +61,7 @@
     RSAPrivateKeyImpl(BigInteger n, BigInteger d) throws InvalidKeyException {
         this.n = n;
         this.d = d;
-        RSAKeyFactory.checkKeyLength(n);
+        RSAKeyFactory.checkRSAProviderKeyLengths(n.bitLength(), null);
         // generate the encoding
         algid = RSAPrivateCrtKeyImpl.rsaId;
         try {
--- a/jdk/src/share/classes/sun/security/rsa/RSAPublicKeyImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/rsa/RSAPublicKeyImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -56,10 +56,11 @@
      * Construct a key from its components. Used by the
      * RSAKeyFactory and the RSAKeyPairGenerator.
      */
-    public RSAPublicKeyImpl(BigInteger n, BigInteger e) throws InvalidKeyException {
+    public RSAPublicKeyImpl(BigInteger n, BigInteger e)
+            throws InvalidKeyException {
         this.n = n;
         this.e = e;
-        RSAKeyFactory.checkKeyLength(n);
+        RSAKeyFactory.checkRSAProviderKeyLengths(n.bitLength(), e);
         // generate the encoding
         algid = RSAPrivateCrtKeyImpl.rsaId;
         try {
@@ -80,7 +81,7 @@
      */
     public RSAPublicKeyImpl(byte[] encoded) throws InvalidKeyException {
         decode(encoded);
-        RSAKeyFactory.checkKeyLength(n);
+        RSAKeyFactory.checkRSAProviderKeyLengths(n.bitLength(), e);
     }
 
     // see JCA doc
--- a/jdk/src/share/classes/sun/security/util/ObjectIdentifier.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/security/util/ObjectIdentifier.java	Wed Jul 05 16:52:18 2017 +0200
@@ -26,7 +26,8 @@
 package sun.security.util;
 
 import java.io.*;
-
+import java.math.BigInteger;
+import java.util.Arrays;
 
 /**
  * Represent an ISO Object Identifier.
@@ -44,105 +45,186 @@
  * hierarchy, and other organizations can easily acquire the ability
  * to assign such unique identifiers.
  *
- *
  * @author David Brownell
  * @author Amit Kapoor
  * @author Hemma Prafullchandra
  */
+
 final public
 class ObjectIdentifier implements Serializable
 {
-    /** use serialVersionUID from JDK 1.1. for interoperability */
+    /**
+     * We use the DER value (no tag, no length) as the internal format
+     * @serial
+     */
+    private byte[] encoding = null;
+
+    private transient volatile String stringForm;
+
+    /*
+     * IMPORTANT NOTES FOR CODE CHANGES (bug 4811968) IN JDK 1.7.0
+     * ===========================================================
+     *
+     * (Almost) serialization compatibility with old versions:
+     *
+     * serialVersionUID is unchanged. Old field "component" is changed to
+     * type Object so that "poison" (unknown object type for old versions)
+     * can be put inside if there are huge components that cannot be saved
+     * as integers.
+     *
+     * New version use the new filed "encoding" only.
+     *
+     * Below are all 4 cases in a serialization/deserialization process:
+     *
+     * 1. old -> old: Not covered here
+     * 2. old -> new: There's no "encoding" field, new readObject() reads
+     *    "components" and "componentLen" instead and inits correctly.
+     * 3. new -> new: "encoding" field exists, new readObject() uses it
+     *    (ignoring the other 2 fields) and inits correctly.
+     * 4. new -> old: old readObject() only recognizes "components" and
+     *    "componentLen" fields. If no huge components are involved, they
+     *    are serialized as legal values and old object can init correctly.
+     *    Otherwise, old object cannot recognize the form (component not int[])
+     *    and throw a ClassNotFoundException at deserialization time.
+     *
+     * Therfore, for the first 3 cases, exact compatibility is preserved. In
+     * the 4th case, non-huge OID is still supportable in old versions, while
+     * huge OID is not.
+     */
     private static final long serialVersionUID = 8697030238860181294L;
-    private static final int maxFirstComponent = 2;
-    private static final int maxSecondComponent = 39;
 
     /**
-     * Constructs an object identifier from a string.  This string
-     * should be of the form 1.23.34.45.56 etc.
+     * Changed to Object
+     * @serial
+     */
+    private Object      components   = null;          // path from root
+    /**
+     * @serial
+     */
+    private int         componentLen = -1;            // how much is used.
+
+    // Is the components field calculated?
+    transient private boolean   componentsCalculated = false;
+
+    private void readObject(ObjectInputStream is)
+            throws IOException, ClassNotFoundException {
+        is.defaultReadObject();
+
+        if (encoding == null) {  // from an old version
+            init((int[])components, componentLen);
+        }
+    }
+
+    private void writeObject(ObjectOutputStream os)
+            throws IOException {
+        if (!componentsCalculated) {
+            int[] comps = toIntArray();
+            if (comps != null) {    // every one understands this
+                components = comps;
+                componentLen = comps.length;
+            } else {
+                components = HugeOidNotSupportedByOldJDK.theOne;
+            }
+            componentsCalculated = true;
+        }
+        os.defaultWriteObject();
+    }
+
+    static class HugeOidNotSupportedByOldJDK implements Serializable {
+        private static final long serialVersionUID = 1L;
+        static HugeOidNotSupportedByOldJDK theOne = new HugeOidNotSupportedByOldJDK();
+    }
+
+    /**
+     * Constructs, from a string.  This string should be of the form 1.23.56.
+     * Validity check included.
      */
     public ObjectIdentifier (String oid) throws IOException
     {
         int ch = '.';
-        int     start = 0;
+        int start = 0;
         int end = 0;
 
-        // Calculate length of oid
-        componentLen = 0;
-        while ((end = oid.indexOf(ch,start)) != -1) {
-            start = end + 1;
-            componentLen += 1;
-        }
-        componentLen += 1;
-        components = new int[componentLen];
+        int pos = 0;
+        byte[] tmp = new byte[oid.length()];
+        int first = 0, second;
+        int count = 0;
+
+        try {
+            String comp = null;
+            do {
+                int length = 0; // length of one section
+                end = oid.indexOf(ch,start);
+                if (end == -1) {
+                    comp = oid.substring(start);
+                    length = oid.length() - start;
+                } else {
+                    comp = oid.substring(start,end);
+                    length = end - start;
+                }
 
-        start = 0;
-        int i = 0;
-        String comp = null;
-        try {
-            while ((end = oid.indexOf(ch,start)) != -1) {
-                comp = oid.substring(start,end);
-                components[i++] = Integer.valueOf(comp).intValue();
+                if (length > 9) {
+                    BigInteger bignum = new BigInteger(comp);
+                    if (count == 0) {
+                        checkFirstComponent(bignum);
+                        first = bignum.intValue();
+                    } else {
+                        if (count == 1) {
+                            checkSecondComponent(first, bignum);
+                            bignum = bignum.add(BigInteger.valueOf(40*first));
+                        } else {
+                            checkOtherComponent(count, bignum);
+                        }
+                        pos += pack7Oid(bignum, tmp, pos);
+                    }
+                } else {
+                    int num = Integer.parseInt(comp);
+                    if (count == 0) {
+                        checkFirstComponent(num);
+                        first = num;
+                    } else {
+                        if (count == 1) {
+                            checkSecondComponent(first, num);
+                            num += 40 * first;
+                        } else {
+                            checkOtherComponent(count, num);
+                        }
+                        pos += pack7Oid(num, tmp, pos);
+                    }
+                }
                 start = end + 1;
-            }
-            comp = oid.substring(start);
-            components[i] = Integer.valueOf(comp).intValue();
+                count++;
+            } while (end != -1);
+
+            checkCount(count);
+            encoding = new byte[pos];
+            System.arraycopy(tmp, 0, encoding, 0, pos);
+            this.stringForm = oid;
+        } catch (IOException ioe) { // already detected by checkXXX
+            throw ioe;
         } catch (Exception e) {
             throw new IOException("ObjectIdentifier() -- Invalid format: "
                     + e.toString(), e);
         }
-        checkValidOid(components, componentLen);
-        this.stringForm = oid;
     }
 
     /**
-     * Check if the values make a legal OID. There must be at least 2
-     * components and they must be all non-negative. The first component
-     * should be 0,1 or 2. When the first component is 0 or 1, the
-     * second component should be less than or equal to 39
-     *
-     * @param values the components that will make the OID
-     * @param len the number of components to check. Note that the allocation
-     *        size of <code>values</code> may be longer than <code>len</code>.
-     *        In this case, only the first <code>len</code> items are checked.
-     * @exception IOException if this is not a legal OID
-     */
-    private void checkValidOid(int[] values, int len) throws IOException {
-        if (values == null || len < 2) {
-            throw new IOException("ObjectIdentifier() -- " +
-                    "Must be at least two oid components ");
-        }
-
-        for (int i=0; i<len; i++) {
-            if (values[i] < 0) {
-                throw new IOException("ObjectIdentifier() -- " +
-                        "oid component #" + (i+1) + " must be non-negative ");
-            }
-        }
-
-        if (values[0] > maxFirstComponent) {
-            throw new IOException("ObjectIdentifier() -- " +
-                    "First oid component is invalid ");
-        }
-
-        if (values[0] < 2 && values[1] > maxSecondComponent) {
-            throw new IOException("ObjectIdentifier() -- " +
-                    "Second oid component is invalid ");
-        }
-    }
-    /**
-     * Constructs an object ID from an array of integers.  This
-     * is used to construct constant object IDs.
+     * Constructor, from an array of integers.
+     * Validity check included.
      */
     public ObjectIdentifier (int values []) throws IOException
     {
-        checkValidOid(values, values.length);
-        components = values.clone();
-        componentLen = values.length;
+        checkCount(values.length);
+        checkFirstComponent(values[0]);
+        checkSecondComponent(values[0], values[1]);
+        for (int i=2; i<values.length; i++)
+            checkOtherComponent(i, values[i]);
+        init(values, values.length);
     }
 
     /**
-     * Constructs an object ID from an ASN.1 encoded input stream.
+     * Constructor, from an ASN.1 encoded input stream.
+     * Validity check NOT included.
      * The encoding of the ID in the stream uses "DER", a BER/1 subset.
      * In this case, that means a triple { typeId, length, data }.
      *
@@ -152,8 +234,7 @@
      * @param in DER-encoded data holding an object ID
      * @exception IOException indicates a decoding error
      */
-    public ObjectIdentifier (DerInputStream in)
-        throws IOException
+    public ObjectIdentifier (DerInputStream in) throws IOException
     {
         byte    type_id;
         int     bufferEnd;
@@ -174,215 +255,67 @@
                 + " (tag = " +  type_id + ")"
                 );
 
-        bufferEnd = in.available () - in.getLength () - 1;
-        if (bufferEnd < 0)
-            throw new IOException (
-                "ObjectIdentifier() -- not enough data");
-
-        initFromEncoding (in, bufferEnd);
-    }
-
-    /*
-     * Build the OID from the rest of a DER input buffer; the tag
-     * and length have been removed/verified
-     */
-    ObjectIdentifier (DerInputBuffer buf) throws IOException
-    {
-        initFromEncoding (new DerInputStream (buf), 0);
-    }
-
-    /**
-     * Private constructor for use by newInternal(). Dummy argument
-     * to avoid clash with the public constructor.
-     */
-    private ObjectIdentifier(int[] components, boolean dummy) {
-        this.components = components;
-        this.componentLen = components.length;
-    }
-
-    /**
-     * Create a new ObjectIdentifier for internal use. The values are
-     * neither checked nor cloned.
-     */
-    public static ObjectIdentifier newInternal(int[] values) {
-        return new ObjectIdentifier(values, true);
+        encoding = new byte[in.getLength()];
+        in.getBytes(encoding);
+        check(encoding);
     }
 
     /*
-     * Helper function -- get the OID from a stream, after tag and
-     * length are verified.
+     * Constructor, from the rest of a DER input buffer;
+     * the tag and length have been removed/verified
+     * Validity check NOT included.
      */
-    private void initFromEncoding (DerInputStream in, int bufferEnd)
-        throws IOException
+    ObjectIdentifier (DerInputBuffer buf) throws IOException
     {
-
-        /*
-         * Now get the components ("sub IDs") one at a time.  We fill a
-         * temporary buffer, resizing it as needed.
-         */
-        int             component;
-        boolean         first_subid = true;
-
-        for (components = new int [allocationQuantum], componentLen = 0;
-                in.available () > bufferEnd;
-        ) {
-            component = getComponent (in);
-            if (component < 0) {
-                throw new IOException(
-                    "ObjectIdentifier() -- " +
-                    "component values must be nonnegative");
-            }
-            if (first_subid) {
-                int     X, Y;
+        DerInputStream in = new DerInputStream(buf);
+        encoding = new byte[in.available()];
+        in.getBytes(encoding);
+        check(encoding);
+    }
 
-                /*
-                 * NOTE:  the allocation quantum is large enough that we know
-                 * we don't have to reallocate here!
-                 */
-                if (component < 40)
-                    X = 0;
-                else if (component < 80)
-                    X = 1;
-                else
-                    X = 2;
-                Y = component - ( X * 40);
-                components [0] = X;
-                components [1] = Y;
-                componentLen = 2;
-
-                first_subid = false;
+    private void init(int[] components, int length) {
+        int pos = 0;
+        byte[] tmp = new byte[length*5+1];  // +1 for empty input
 
-            } else {
-
-                /*
-                 * Other components are encoded less exotically.  The only
-                 * potential trouble is the need to grow the array.
-                 */
-                if (componentLen >= components.length) {
-                    int         tmp_components [];
-
-                    tmp_components = new int [components.length
-                                        + allocationQuantum];
-                    System.arraycopy (components, 0, tmp_components, 0,
-                            components.length);
-                    components = tmp_components;
-                }
-                components [componentLen++] = component;
-            }
+        if (components[1] < Integer.MAX_VALUE - components[0]*40)
+            pos += pack7Oid(components[0]*40+components[1], tmp, pos);
+        else {
+            BigInteger big = BigInteger.valueOf(components[1]);
+            big = big.add(BigInteger.valueOf(components[0]*40));
+            pos += pack7Oid(big, tmp, pos);
         }
 
-        checkValidOid(components, componentLen);
+        for (int i=2; i<length; i++) {
+            pos += pack7Oid(components[i], tmp, pos);
+        }
+        encoding = new byte[pos];
+        System.arraycopy(tmp, 0, encoding, 0, pos);
+    }
 
-        /*
-         * Final sanity check -- if we didn't use exactly the number of bytes
-         * specified, something's quite wrong.
-         */
-        if (in.available () != bufferEnd) {
-            throw new IOException (
-                    "ObjectIdentifier() -- malformed input data");
+    /**
+     * This method is kept for compatibility reasons. The new implementation
+     * does the check and conversion. All around the JDK, the method is called
+     * in static blocks to initialize pre-defined ObjectIdentifieies. No
+     * obvious performance hurt will be made after this change.
+     *
+     * Old doc: Create a new ObjectIdentifier for internal use. The values are
+     * neither checked nor cloned.
+     */
+    public static ObjectIdentifier newInternal(int[] values) {
+        try {
+            return new ObjectIdentifier(values);
+        } catch (IOException ex) {
+            throw new RuntimeException(ex);
+            // Should not happen, internal calls always uses legal values.
         }
     }
 
-
     /*
      * n.b. the only public interface is DerOutputStream.putOID()
      */
     void encode (DerOutputStream out) throws IOException
     {
-        DerOutputStream bytes = new DerOutputStream ();
-        int i;
-
-        // According to ISO X.660, when the 1st component is 0 or 1, the 2nd
-        // component is restricted to be less than or equal to 39, thus make
-        // it small enough to be encoded into one single byte.
-        if (components[0] < 2) {
-            bytes.write ((components [0] * 40) + components [1]);
-        } else {
-            putComponent(bytes, (components [0] * 40) + components [1]);
-        }
-        for (i = 2; i < componentLen; i++)
-            putComponent (bytes, components [i]);
-
-        /*
-         * Now that we've constructed the component, encode
-         * it in the stream we were given.
-         */
-        out.write (DerValue.tag_ObjectId, bytes);
-    }
-
-    /*
-     * Tricky OID component parsing technique ... note that one bit
-     * per octet is lost, this returns at most 28 bits of component.
-     * Also, notice this parses in big-endian format.
-     */
-    private static int getComponent (DerInputStream in)
-    throws IOException
-    {
-        int retval, i, tmp;
-
-        for (i = 0, retval = 0; i < 4; i++) {
-            retval <<= 7;
-            tmp = in.getByte ();
-            retval |= (tmp & 0x07f);
-            if ((tmp & 0x080) == 0)
-                return retval;
-        }
-
-        throw new IOException ("ObjectIdentifier() -- component value too big");
-    }
-
-    /*
-     * Reverse of the above routine.  Notice it needs to emit in
-     * big-endian form, so it buffers the output until it's ready.
-     * (Minimum length encoding is a DER requirement.)
-     */
-    private static void putComponent (DerOutputStream out, int val)
-    throws IOException
-    {
-        int     i;
-        // TODO: val must be <128*128*128*128 here, otherwise, 4 bytes is not
-        // enough to hold it. Will address this later.
-        byte    buf [] = new byte [4] ;
-
-        for (i = 0; i < 4; i++) {
-            buf [i] = (byte) (val & 0x07f);
-            val >>>= 7;
-            if (val == 0)
-                break;
-        }
-        for ( ; i > 0; --i)
-            out.write (buf [i] | 0x080);
-        out.write (buf [0]);
-    }
-
-    // XXX this API should probably facilitate the JDK sort utility
-
-    /**
-     * Compares this identifier with another, for sorting purposes.
-     * An identifier does not precede itself.
-     *
-     * @param other identifer that may precede this one.
-     * @return true iff <em>other</em> precedes this one
-     *          in a particular sorting order.
-     */
-    public boolean precedes (ObjectIdentifier other)
-    {
-        int             i;
-
-        // shorter IDs go first
-        if (other == this || componentLen < other.componentLen)
-            return false;
-        if (other.componentLen < componentLen)
-            return true;
-
-        // for each component, the lesser component goes first
-        for (i = 0; i < componentLen; i++) {
-            if (other.components [i] < components [i])
-                return true;
-        }
-
-        // identical IDs don't precede each other
-        return false;
+        out.write (DerValue.tag_ObjectId, encoding);
     }
 
     /**
@@ -398,6 +331,7 @@
      *
      * @return true iff the names are identical.
      */
+    @Override
     public boolean equals(Object obj) {
         if (this == obj) {
             return true;
@@ -406,23 +340,71 @@
             return false;
         }
         ObjectIdentifier other = (ObjectIdentifier)obj;
-        if (componentLen != other.componentLen) {
-            return false;
-        }
-        for (int i = 0; i < componentLen; i++) {
-            if (components[i] != other.components[i]) {
-                return false;
+        return Arrays.equals(encoding, other.encoding);
+    }
+
+    @Override
+    public int hashCode() {
+        return Arrays.hashCode(encoding);
+    }
+
+    /**
+     * Private helper method for serialization. To be compatible with old
+     * versions of JDK.
+     * @return components in an int array, if all the components are less than
+     *         Integer.MAX_VALUE. Otherwise, null.
+     */
+    private int[] toIntArray() {
+        int length = encoding.length;
+        int[] result = new int[20];
+        int which = 0;
+        int fromPos = 0;
+        for (int i = 0; i < length; i++) {
+            if ((encoding[i] & 0x80) == 0) {
+                // one section [fromPos..i]
+                if (i - fromPos + 1 > 4) {
+                    BigInteger big = new BigInteger(pack(encoding, fromPos, i-fromPos+1, 7, 8));
+                    if (fromPos == 0) {
+                        result[which++] = 2;
+                        BigInteger second = big.subtract(BigInteger.valueOf(80));
+                        if (second.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) == 1) {
+                            return null;
+                        } else {
+                            result[which++] = second.intValue();
+                        }
+                    } else {
+                        if (big.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) == 1) {
+                            return null;
+                        } else {
+                            result[which++] = big.intValue();
+                        }
+                    }
+                } else {
+                    int retval = 0;
+                    for (int j = fromPos; j <= i; j++) {
+                        retval <<= 7;
+                        byte tmp = encoding[j];
+                        retval |= (tmp & 0x07f);
+                    }
+                    if (fromPos == 0) {
+                        if (retval < 80) {
+                            result[which++] = retval / 40;
+                            result[which++] = retval % 40;
+                        } else {
+                            result[which++] = 2;
+                            result[which++] = retval - 80;
+                        }
+                    } else {
+                        result[which++] = retval;
+                    }
+                }
+                fromPos = i+1;
+            }
+            if (which >= result.length) {
+                result = Arrays.copyOf(result, which + 10);
             }
         }
-        return true;
-    }
-
-    public int hashCode() {
-        int h = componentLen;
-        for (int i = 0; i < componentLen; i++) {
-            h += components[i] * 37;
-        }
-        return h;
+        return Arrays.copyOf(result, which);
     }
 
     /**
@@ -431,15 +413,52 @@
      * user-friendly descriptive strings, since those strings
      * will not be understood everywhere.
      */
+    @Override
     public String toString() {
         String s = stringForm;
         if (s == null) {
-            StringBuffer sb = new StringBuffer(componentLen * 4);
-            for (int i = 0; i < componentLen; i++) {
-                if (i != 0) {
-                    sb.append('.');
+            int length = encoding.length;
+            StringBuffer sb = new StringBuffer(length * 4);
+
+            int fromPos = 0;
+            for (int i = 0; i < length; i++) {
+                if ((encoding[i] & 0x80) == 0) {
+                    // one section [fromPos..i]
+                    if (fromPos != 0) {  // not the first segment
+                        sb.append('.');
+                    }
+                    if (i - fromPos + 1 > 4) { // maybe big integer
+                        BigInteger big = new BigInteger(pack(encoding, fromPos, i-fromPos+1, 7, 8));
+                        if (fromPos == 0) {
+                            // first section encoded with more than 4 bytes,
+                            // must be 2.something
+                            sb.append("2.");
+                            sb.append(big.subtract(BigInteger.valueOf(80)));
+                        } else {
+                            sb.append(big);
+                        }
+                    } else { // small integer
+                        int retval = 0;
+                        for (int j = fromPos; j <= i; j++) {
+                            retval <<= 7;
+                            byte tmp = encoding[j];
+                            retval |= (tmp & 0x07f);
+                        }
+                        if (fromPos == 0) {
+                            if (retval < 80) {
+                                sb.append(retval/40);
+                                sb.append('.');
+                                sb.append(retval%40);
+                            } else {
+                                sb.append("2.");
+                                sb.append(retval - 80);
+                            }
+                        } else {
+                            sb.append(retval);
+                        }
+                    }
+                    fromPos = i+1;
                 }
-                sb.append(components[i]);
             }
             s = sb.toString();
             stringForm = s;
@@ -447,15 +466,197 @@
         return s;
     }
 
-    /*
-     * To simplify, we assume no individual component of an object ID is
-     * larger than 32 bits.  Then we represent the path from the root as
-     * an array that's (usually) only filled at the beginning.
+    /**
+     * Repack all bits from input to output. On the both sides, only a portion
+     * (from the least significant bit) of the 8 bits in a byte is used. This
+     * number is defined as the number of useful bits (NUB) for the array. All the
+     * used bits from the input byte array and repacked into the output in the
+     * exactly same order. The output bits are aligned so that the final bit of
+     * the input (the least significant bit in the last byte), when repacked as
+     * the final bit of the output, is still at the least significant position.
+     * Zeroes will be padded on the left side of the first output byte if
+     * necessary. All unused bits in the output are also zeroed.
+     *
+     * For example: if the input is 01001100 with NUB 8, the output which
+     * has a NUB 6 will look like:
+     *      00000001 00001100
+     * The first 2 bits of the output bytes are unused bits. The other bits
+     * turn out to be 000001 001100. While the 8 bits on the right are from
+     * the input, the left 4 zeroes are padded to fill the 6 bits space.
+     *
+     * @param in        the input byte array
+     * @param ioffset   start point inside <code>in</code>
+     * @param ilength   number of bytes to repack
+     * @param iw        NUB for input
+     * @param ow        NUB for output
+     * @return          the repacked bytes
+     */
+    private static byte[] pack(byte[] in, int ioffset, int ilength, int iw, int ow) {
+        assert (iw > 0 && iw <= 8): "input NUB must be between 1 and 8";
+        assert (ow > 0 && ow <= 8): "output NUB must be between 1 and 8";
+
+        if (iw == ow) {
+            return in.clone();
+        }
+
+        int bits = ilength * iw;    // number of all used bits
+        byte[] out = new byte[(bits+ow-1)/ow];
+
+        // starting from the 0th bit in the input
+        int ipos = 0;
+
+        // the number of padding 0's needed in the output, skip them
+        int opos = (bits+ow-1)/ow*ow-bits;
+
+        while(ipos < bits) {
+            int count = iw - ipos%iw;   // unpacked bits in current input byte
+            if (count > ow - opos%ow) { // free space available in output byte
+                count = ow - opos%ow;   // choose the smaller number
+            }
+            // and move them!
+            out[opos/ow] |=                         // paste!
+                (((in[ioffset+ipos/iw]+256)         // locate the byte (+256 so that it's never negative)
+                    >> (iw-ipos%iw-count))          // move to the end of a byte
+                        & ((1 << (count))-1))       // zero out all other bits
+                            << (ow-opos%ow-count);  // move to the output position
+            ipos += count;  // advance
+            opos += count;  // advance
+        }
+        return out;
+    }
+
+    /**
+     * Repack from NUB 8 to a NUB 7 OID sub-identifier, remove all
+     * unnecessary 0 headings, set the first bit of all non-tail
+     * output bytes to 1 (as ITU-T Rec. X.690 8.19.2 says), and
+     * paste it into an existing byte array.
+     * @param out the existing array to be pasted into
+     * @param ooffset the starting position to paste
+     * @return the number of bytes pasted
+     */
+    private static int pack7Oid(byte[] in, int ioffset, int ilength, byte[] out, int ooffset) {
+        byte[] pack = pack(in, ioffset, ilength, 8, 7);
+        int firstNonZero = pack.length-1;   // paste at least one byte
+        for (int i=pack.length-2; i>=0; i--) {
+            if (pack[i] != 0) {
+                firstNonZero = i;
+            }
+            pack[i] |= 0x80;
+        }
+        System.arraycopy(pack, firstNonZero, out, ooffset, pack.length-firstNonZero);
+        return pack.length-firstNonZero;
+    }
+
+    /**
+     * Repack from NUB 7 to NUB 8, remove all unnecessary 0
+     * headings, and paste it into an existing byte array.
+     * @param out the existing array to be pasted into
+     * @param ooffset the starting position to paste
+     * @return the number of bytes pasted
      */
-    private int         components [];                  // path from root
-    private int         componentLen;                   // how much is used.
+    private static int pack8(byte[] in, int ioffset, int ilength, byte[] out, int ooffset) {
+        byte[] pack = pack(in, ioffset, ilength, 7, 8);
+        int firstNonZero = pack.length-1;   // paste at least one byte
+        for (int i=pack.length-2; i>=0; i--) {
+            if (pack[i] != 0) {
+                firstNonZero = i;
+            }
+        }
+        System.arraycopy(pack, firstNonZero, out, ooffset, pack.length-firstNonZero);
+        return pack.length-firstNonZero;
+    }
+
+    /**
+     * Pack the int into a OID sub-identifier DER encoding
+     */
+    private static int pack7Oid(int input, byte[] out, int ooffset) {
+        byte[] b = new byte[4];
+        b[0] = (byte)(input >> 24);
+        b[1] = (byte)(input >> 16);
+        b[2] = (byte)(input >> 8);
+        b[3] = (byte)(input);
+        return pack7Oid(b, 0, 4, out, ooffset);
+    }
+
+    /**
+     * Pack the BigInteger into a OID subidentifier DER encoding
+     */
+    private static int pack7Oid(BigInteger input, byte[] out, int ooffset) {
+        byte[] b = input.toByteArray();
+        return pack7Oid(b, 0, b.length, out, ooffset);
+    }
+
+    /**
+     * Private methods to check validity of OID. They must be --
+     * 1. at least 2 components
+     * 2. all components must be non-negative
+     * 3. the first must be 0, 1 or 2
+     * 4. if the first is 0 or 1, the second must be <40
+     */
 
-    private transient volatile String stringForm;
-
-    private static final int allocationQuantum = 5;     // >= 2
+    /**
+     * Check the DER encoding. Since DER encoding defines that the integer bits
+     * are unsigned, so there's no need to check the MSB.
+     */
+    private static void check(byte[] encoding) throws IOException {
+        int length = encoding.length;
+        if (length < 1 ||      // too short
+                (encoding[length - 1] & 0x80) != 0) {  // not ended
+            throw new IOException("ObjectIdentifier() -- " +
+                    "Invalid DER encoding, not ended");
+        }
+        for (int i=0; i<length; i++) {
+            // 0x80 at the beginning of a subidentifier
+            if (encoding[i] == (byte)0x80 &&
+                    (i==0 || (encoding[i-1] & 0x80) == 0)) {
+                throw new IOException("ObjectIdentifier() -- " +
+                        "Invalid DER encoding, useless extra octet detected");
+            }
+        }
+    }
+    private static void checkCount(int count) throws IOException {
+        if (count < 2) {
+            throw new IOException("ObjectIdentifier() -- " +
+                    "Must be at least two oid components ");
+        }
+    }
+    private static void checkFirstComponent(int first) throws IOException {
+        if (first < 0 || first > 2) {
+            throw new IOException("ObjectIdentifier() -- " +
+                    "First oid component is invalid ");
+        }
+    }
+    private static void checkFirstComponent(BigInteger first) throws IOException {
+        if (first.signum() == -1 ||
+                first.compareTo(BigInteger.valueOf(2)) == 1) {
+            throw new IOException("ObjectIdentifier() -- " +
+                    "First oid component is invalid ");
+        }
+    }
+    private static void checkSecondComponent(int first, int second) throws IOException {
+        if (second < 0 || first != 2 && second > 39) {
+            throw new IOException("ObjectIdentifier() -- " +
+                    "Second oid component is invalid ");
+        }
+    }
+    private static void checkSecondComponent(int first, BigInteger second) throws IOException {
+        if (second.signum() == -1 ||
+                first != 2 &&
+                second.compareTo(BigInteger.valueOf(39)) == 1) {
+            throw new IOException("ObjectIdentifier() -- " +
+                    "Second oid component is invalid ");
+        }
+    }
+    private static void checkOtherComponent(int i, int num) throws IOException {
+        if (num < 0) {
+            throw new IOException("ObjectIdentifier() -- " +
+                    "oid component #" + (i+1) + " must be non-negative ");
+        }
+    }
+    private static void checkOtherComponent(int i, BigInteger num) throws IOException {
+        if (num.signum() == -1) {
+            throw new IOException("ObjectIdentifier() -- " +
+                    "oid component #" + (i+1) + " must be non-negative ");
+        }
+    }
 }
--- a/jdk/src/share/classes/sun/swing/DefaultLookup.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/swing/DefaultLookup.java	Wed Jul 05 16:52:18 2017 +0200
@@ -27,6 +27,7 @@
 import java.awt.Color;
 import java.awt.Insets;
 import javax.swing.*;
+import javax.swing.border.Border;
 import javax.swing.plaf.ComponentUI;
 import sun.awt.AppContext;
 
@@ -137,6 +138,10 @@
         return ((Number)iValue).intValue();
     }
 
+    public static int getInt(JComponent c, ComponentUI ui, String key) {
+        return getInt(c, ui, key, -1);
+    }
+
     public static Insets getInsets(JComponent c, ComponentUI ui, String key,
                                    Insets defaultValue) {
         Object iValue = get(c, ui, key);
@@ -147,6 +152,10 @@
         return (Insets)iValue;
     }
 
+    public static Insets getInsets(JComponent c, ComponentUI ui, String key) {
+        return getInsets(c, ui, key, null);
+    }
+
     public static boolean getBoolean(JComponent c, ComponentUI ui, String key,
                                      boolean defaultValue) {
         Object iValue = get(c, ui, key);
@@ -157,6 +166,10 @@
         return ((Boolean)iValue).booleanValue();
     }
 
+    public static boolean getBoolean(JComponent c, ComponentUI ui, String key) {
+        return getBoolean(c, ui, key, false);
+    }
+
     public static Color getColor(JComponent c, ComponentUI ui, String key,
                                  Color defaultValue) {
         Object iValue = get(c, ui, key);
@@ -167,7 +180,35 @@
         return (Color)iValue;
     }
 
+    public static Color getColor(JComponent c, ComponentUI ui, String key) {
+        return getColor(c, ui, key, null);
+    }
 
+    public static Icon getIcon(JComponent c, ComponentUI ui, String key,
+            Icon defaultValue) {
+        Object iValue = get(c, ui, key);
+        if (iValue == null || !(iValue instanceof Icon)) {
+            return defaultValue;
+        }
+        return (Icon)iValue;
+    }
+
+    public static Icon getIcon(JComponent c, ComponentUI ui, String key) {
+        return getIcon(c, ui, key, null);
+    }
+
+    public static Border getBorder(JComponent c, ComponentUI ui, String key,
+            Border defaultValue) {
+        Object iValue = get(c, ui, key);
+        if (iValue == null || !(iValue instanceof Border)) {
+            return defaultValue;
+        }
+        return (Border)iValue;
+    }
+
+    public static Border getBorder(JComponent c, ComponentUI ui, String key) {
+        return getBorder(c, ui, key, null);
+    }
 
     public Object getDefault(JComponent c, ComponentUI ui, String key) {
         // basic
--- a/jdk/src/share/classes/sun/swing/FilePane.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/swing/FilePane.java	Wed Jul 05 16:52:18 2017 +0200
@@ -265,6 +265,7 @@
     private Color   listViewBackground;
     private boolean listViewWindowsStyle;
     private boolean readOnly;
+    private boolean fullRowSelection = false;
 
     private ListSelectionModel listSelectionModel;
     private JList list;
@@ -448,6 +449,7 @@
         kiloByteString = UIManager.getString("FileChooser.fileSizeKiloBytes", l);
         megaByteString = UIManager.getString("FileChooser.fileSizeMegaBytes", l);
         gigaByteString = UIManager.getString("FileChooser.fileSizeGigaBytes", l);
+        fullRowSelection = UIManager.getBoolean("FileView.fullRowSelection");
 
         renameErrorTitleText = UIManager.getString("FileChooser.renameErrorTitleText", l);
         renameErrorText = UIManager.getString("FileChooser.renameErrorText", l);
@@ -991,6 +993,7 @@
         public DetailsTableCellEditor(JTextField tf) {
             super(tf);
             this.tf = tf;
+            tf.setName("Table.editor");
             tf.addFocusListener(editorFocusListener);
         }
 
@@ -1018,7 +1021,8 @@
         }
 
         public void setBounds(int x, int y, int width, int height) {
-            if (getHorizontalAlignment() == SwingConstants.LEADING) {
+        if (getHorizontalAlignment() == SwingConstants.LEADING &&
+                    !fullRowSelection) {
                 // Restrict width to actual text
                 width = Math.min(width, this.getPreferredSize().width+4);
             } else {
@@ -1039,9 +1043,9 @@
         public Component getTableCellRendererComponent(JTable table, Object value,
                               boolean isSelected, boolean hasFocus, int row, int column) {
 
-            if (table.convertColumnIndexToModel(column) != COLUMN_FILENAME ||
-                    (listViewWindowsStyle && !table.isFocusOwner())) {
-
+            if ((table.convertColumnIndexToModel(column) != COLUMN_FILENAME ||
+                    (listViewWindowsStyle && !table.isFocusOwner())) &&
+                    !fullRowSelection) {
                 isSelected = false;
             }
 
@@ -1338,6 +1342,7 @@
             Rectangle r = list.getCellBounds(index, index);
             if (editCell == null) {
                 editCell = new JTextField();
+                editCell.setName("Tree.cellEditor");
                 editCell.addActionListener(new EditActionListener());
                 editCell.addFocusListener(editorFocusListener);
                 editCell.setNextFocusableComponent(list);
@@ -1797,10 +1802,11 @@
                 Point p = evt.getPoint();
                 index = table.rowAtPoint(p);
 
-                if (SwingUtilities2.pointOutsidePrefSize(table,
-                                                         index,
-                                                         table.columnAtPoint(p), p)) {
+                boolean pointOutsidePrefSize =
+                        SwingUtilities2.pointOutsidePrefSize(
+                            table, index, table.columnAtPoint(p), p);
 
+                if (pointOutsidePrefSize && !fullRowSelection) {
                     return;
                 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/sun/swing/plaf/GTKKeybindings.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,736 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.swing.plaf;
+
+import javax.swing.JTextField;
+import javax.swing.UIDefaults;
+import javax.swing.text.DefaultEditorKit;
+
+/**
+ * GTKKeybindings - The standard set of keymaps for the GTK Platform
+ *
+ * @author Jasper Potts
+ */
+public class GTKKeybindings {
+
+    /**
+     * Install all GTK keybindings into the provided UIDefaults table
+     *
+     * @param table The UiDefaults table to install into
+     */
+    public static void installKeybindings(UIDefaults table) {
+        Object fieldInputMap = new UIDefaults.LazyInputMap(new Object[]{
+                "ctrl C", DefaultEditorKit.copyAction,
+                "ctrl V", DefaultEditorKit.pasteAction,
+                "ctrl X", DefaultEditorKit.cutAction,
+                "COPY", DefaultEditorKit.copyAction,
+                "PASTE", DefaultEditorKit.pasteAction,
+                "CUT", DefaultEditorKit.cutAction,
+                "control INSERT", DefaultEditorKit.copyAction,
+                "shift INSERT", DefaultEditorKit.pasteAction,
+                "shift DELETE", DefaultEditorKit.cutAction,
+                "shift LEFT", DefaultEditorKit.selectionBackwardAction,
+                "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
+                "shift RIGHT", DefaultEditorKit.selectionForwardAction,
+                "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
+                "ctrl LEFT", DefaultEditorKit.previousWordAction,
+                "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
+                "ctrl RIGHT", DefaultEditorKit.nextWordAction,
+                "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
+                "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
+                "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
+                "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
+                "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
+                "ctrl A", DefaultEditorKit.selectAllAction,
+                "HOME", DefaultEditorKit.beginLineAction,
+                "END", DefaultEditorKit.endLineAction,
+                "shift HOME", DefaultEditorKit.selectionBeginLineAction,
+                "shift END", DefaultEditorKit.selectionEndLineAction,
+                "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                "ctrl H", DefaultEditorKit.deletePrevCharAction,
+                "DELETE", DefaultEditorKit.deleteNextCharAction,
+                "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
+                "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
+                "RIGHT", DefaultEditorKit.forwardAction,
+                "LEFT", DefaultEditorKit.backwardAction,
+                "KP_RIGHT", DefaultEditorKit.forwardAction,
+                "KP_LEFT", DefaultEditorKit.backwardAction,
+                "ENTER", JTextField.notifyAction,
+                "ctrl BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
+                "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
+        });
+        Object passwordInputMap = new UIDefaults.LazyInputMap(new Object[]{
+                "ctrl C", DefaultEditorKit.copyAction,
+                "ctrl V", DefaultEditorKit.pasteAction,
+                "ctrl X", DefaultEditorKit.cutAction,
+                "COPY", DefaultEditorKit.copyAction,
+                "PASTE", DefaultEditorKit.pasteAction,
+                "CUT", DefaultEditorKit.cutAction,
+                "control INSERT", DefaultEditorKit.copyAction,
+                "shift INSERT", DefaultEditorKit.pasteAction,
+                "shift DELETE", DefaultEditorKit.cutAction,
+                "shift LEFT", DefaultEditorKit.selectionBackwardAction,
+                "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
+                "shift RIGHT", DefaultEditorKit.selectionForwardAction,
+                "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
+                "ctrl LEFT", DefaultEditorKit.beginLineAction,
+                "ctrl KP_LEFT", DefaultEditorKit.beginLineAction,
+                "ctrl RIGHT", DefaultEditorKit.endLineAction,
+                "ctrl KP_RIGHT", DefaultEditorKit.endLineAction,
+                "ctrl shift LEFT", DefaultEditorKit.selectionBeginLineAction,
+                "ctrl shift KP_LEFT", DefaultEditorKit.selectionBeginLineAction,
+                "ctrl shift RIGHT", DefaultEditorKit.selectionEndLineAction,
+                "ctrl shift KP_RIGHT", DefaultEditorKit.selectionEndLineAction,
+                "ctrl A", DefaultEditorKit.selectAllAction,
+                "HOME", DefaultEditorKit.beginLineAction,
+                "END", DefaultEditorKit.endLineAction,
+                "shift HOME", DefaultEditorKit.selectionBeginLineAction,
+                "shift END", DefaultEditorKit.selectionEndLineAction,
+                "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                "ctrl H", DefaultEditorKit.deletePrevCharAction,
+                "DELETE", DefaultEditorKit.deleteNextCharAction,
+                "RIGHT", DefaultEditorKit.forwardAction,
+                "LEFT", DefaultEditorKit.backwardAction,
+                "KP_RIGHT", DefaultEditorKit.forwardAction,
+                "KP_LEFT", DefaultEditorKit.backwardAction,
+                "ENTER", JTextField.notifyAction,
+                "ctrl BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
+                "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
+        });
+        Object multilineInputMap = new UIDefaults.LazyInputMap(new Object[]{
+                "ctrl C", DefaultEditorKit.copyAction,
+                "ctrl V", DefaultEditorKit.pasteAction,
+                "ctrl X", DefaultEditorKit.cutAction,
+                "COPY", DefaultEditorKit.copyAction,
+                "PASTE", DefaultEditorKit.pasteAction,
+                "CUT", DefaultEditorKit.cutAction,
+                "control INSERT", DefaultEditorKit.copyAction,
+                "shift INSERT", DefaultEditorKit.pasteAction,
+                "shift DELETE", DefaultEditorKit.cutAction,
+                "shift LEFT", DefaultEditorKit.selectionBackwardAction,
+                "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
+                "shift RIGHT", DefaultEditorKit.selectionForwardAction,
+                "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
+                "ctrl LEFT", DefaultEditorKit.previousWordAction,
+                "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
+                "ctrl RIGHT", DefaultEditorKit.nextWordAction,
+                "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
+                "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
+                "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
+                "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
+                "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
+                "ctrl A", DefaultEditorKit.selectAllAction,
+                "HOME", DefaultEditorKit.beginLineAction,
+                "END", DefaultEditorKit.endLineAction,
+                "shift HOME", DefaultEditorKit.selectionBeginLineAction,
+                "shift END", DefaultEditorKit.selectionEndLineAction,
+
+                "UP", DefaultEditorKit.upAction,
+                "KP_UP", DefaultEditorKit.upAction,
+                "DOWN", DefaultEditorKit.downAction,
+                "KP_DOWN", DefaultEditorKit.downAction,
+                "PAGE_UP", DefaultEditorKit.pageUpAction,
+                "PAGE_DOWN", DefaultEditorKit.pageDownAction,
+                "shift PAGE_UP", "selection-page-up",
+                "shift PAGE_DOWN", "selection-page-down",
+                "ctrl shift PAGE_UP", "selection-page-left",
+                "ctrl shift PAGE_DOWN", "selection-page-right",
+                "shift UP", DefaultEditorKit.selectionUpAction,
+                "shift KP_UP", DefaultEditorKit.selectionUpAction,
+                "shift DOWN", DefaultEditorKit.selectionDownAction,
+                "shift KP_DOWN", DefaultEditorKit.selectionDownAction,
+                "ENTER", DefaultEditorKit.insertBreakAction,
+                "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                "ctrl H", DefaultEditorKit.deletePrevCharAction,
+                "DELETE", DefaultEditorKit.deleteNextCharAction,
+                "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
+                "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
+                "RIGHT", DefaultEditorKit.forwardAction,
+                "LEFT", DefaultEditorKit.backwardAction,
+                "KP_RIGHT", DefaultEditorKit.forwardAction,
+                "KP_LEFT", DefaultEditorKit.backwardAction,
+                "TAB", DefaultEditorKit.insertTabAction,
+                "ctrl BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
+                "ctrl HOME", DefaultEditorKit.beginAction,
+                "ctrl END", DefaultEditorKit.endAction,
+                "ctrl shift HOME", DefaultEditorKit.selectionBeginAction,
+                "ctrl shift END", DefaultEditorKit.selectionEndAction,
+                "ctrl T", "next-link-action",
+                "ctrl shift T", "previous-link-action",
+                "ctrl SPACE", "activate-link-action",
+                "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
+        });
+
+        Object[] defaults = new Object[]{
+                "Button.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "SPACE", "pressed",
+                        "released SPACE", "released",
+                        "ENTER", "pressed",
+                        "released ENTER", "released"
+                }),
+                "CheckBox.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "SPACE", "pressed",
+                        "released SPACE", "released"
+                }),
+                "ComboBox.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ESCAPE", "hidePopup",
+                        "PAGE_UP", "pageUpPassThrough",
+                        "PAGE_DOWN", "pageDownPassThrough",
+                        "HOME", "homePassThrough",
+                        "END", "endPassThrough",
+                        "DOWN", "selectNext",
+                        "KP_DOWN", "selectNext",
+                        "alt DOWN", "togglePopup",
+                        "alt KP_DOWN", "togglePopup",
+                        "alt UP", "togglePopup",
+                        "alt KP_UP", "togglePopup",
+                        "SPACE", "spacePopup",
+                        "ENTER", "enterPressed",
+                        "UP", "selectPrevious",
+                        "KP_UP", "selectPrevious"
+
+                }),
+                "EditorPane.focusInputMap", multilineInputMap,
+                "FileChooser.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ESCAPE", "cancelSelection",
+                        "F2", "editFileName",
+                        "F5", "refresh",
+                        "BACK_SPACE", "Go Up",
+                        "ENTER", "approveSelection",
+                        "ctrl ENTER", "approveSelection"
+                }),
+                "FormattedTextField.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ctrl C", DefaultEditorKit.copyAction,
+                        "ctrl V", DefaultEditorKit.pasteAction,
+                        "ctrl X", DefaultEditorKit.cutAction,
+                        "COPY", DefaultEditorKit.copyAction,
+                        "PASTE", DefaultEditorKit.pasteAction,
+                        "CUT", DefaultEditorKit.cutAction,
+                        "control INSERT", DefaultEditorKit.copyAction,
+                        "shift INSERT", DefaultEditorKit.pasteAction,
+                        "shift DELETE", DefaultEditorKit.cutAction,
+                        "shift LEFT", DefaultEditorKit.selectionBackwardAction,
+                        "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
+                        "shift RIGHT", DefaultEditorKit.selectionForwardAction,
+                        "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
+                        "ctrl LEFT", DefaultEditorKit.previousWordAction,
+                        "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
+                        "ctrl RIGHT", DefaultEditorKit.nextWordAction,
+                        "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
+                        "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
+                        "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
+                        "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
+                        "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
+                        "ctrl A", DefaultEditorKit.selectAllAction,
+                        "HOME", DefaultEditorKit.beginLineAction,
+                        "END", DefaultEditorKit.endLineAction,
+                        "shift HOME", DefaultEditorKit.selectionBeginLineAction,
+                        "shift END", DefaultEditorKit.selectionEndLineAction,
+                        "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                        "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                        "ctrl H", DefaultEditorKit.deletePrevCharAction,
+                        "DELETE", DefaultEditorKit.deleteNextCharAction,
+                        "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
+                        "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
+                        "RIGHT", DefaultEditorKit.forwardAction,
+                        "LEFT", DefaultEditorKit.backwardAction,
+                        "KP_RIGHT", DefaultEditorKit.forwardAction,
+                        "KP_LEFT", DefaultEditorKit.backwardAction,
+                        "ENTER", JTextField.notifyAction,
+                        "ctrl BACK_SLASH", "unselect",
+                        "control shift O", "toggle-componentOrientation",
+                        "ESCAPE", "reset-field-edit",
+                        "UP", "increment",
+                        "KP_UP", "increment",
+                        "DOWN", "decrement",
+                        "KP_DOWN", "decrement",
+                }),
+                "InternalFrame.windowBindings",
+                new Object[]{
+                        "shift ESCAPE", "showSystemMenu",
+                        "ctrl SPACE", "showSystemMenu",
+                        "ESCAPE", "hideSystemMenu"
+                },
+                "List.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ctrl C", "copy",
+                        "ctrl V", "paste",
+                        "ctrl X", "cut",
+                        "COPY", "copy",
+                        "PASTE", "paste",
+                        "CUT", "cut",
+                        "control INSERT", "copy",
+                        "shift INSERT", "paste",
+                        "shift DELETE", "cut",
+                        "UP", "selectPreviousRow",
+                        "KP_UP", "selectPreviousRow",
+                        "shift UP", "selectPreviousRowExtendSelection",
+                        "shift KP_UP", "selectPreviousRowExtendSelection",
+                        "ctrl shift UP", "selectPreviousRowExtendSelection",
+                        "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
+                        "ctrl UP", "selectPreviousRowChangeLead",
+                        "ctrl KP_UP", "selectPreviousRowChangeLead",
+                        "DOWN", "selectNextRow",
+                        "KP_DOWN", "selectNextRow",
+                        "shift DOWN", "selectNextRowExtendSelection",
+                        "shift KP_DOWN", "selectNextRowExtendSelection",
+                        "ctrl shift DOWN", "selectNextRowExtendSelection",
+                        "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
+                        "ctrl DOWN", "selectNextRowChangeLead",
+                        "ctrl KP_DOWN", "selectNextRowChangeLead",
+                        "LEFT", "selectPreviousColumn",
+                        "KP_LEFT", "selectPreviousColumn",
+                        "shift LEFT", "selectPreviousColumnExtendSelection",
+                        "shift KP_LEFT", "selectPreviousColumnExtendSelection",
+                        "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
+                        "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
+                        "ctrl LEFT", "selectPreviousColumnChangeLead",
+                        "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
+                        "RIGHT", "selectNextColumn",
+                        "KP_RIGHT", "selectNextColumn",
+                        "shift RIGHT", "selectNextColumnExtendSelection",
+                        "shift KP_RIGHT", "selectNextColumnExtendSelection",
+                        "ctrl shift RIGHT", "selectNextColumnExtendSelection",
+                        "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
+                        "ctrl RIGHT", "selectNextColumnChangeLead",
+                        "ctrl KP_RIGHT", "selectNextColumnChangeLead",
+                        "HOME", "selectFirstRow",
+                        "shift HOME", "selectFirstRowExtendSelection",
+                        "ctrl shift HOME", "selectFirstRowExtendSelection",
+                        "ctrl HOME", "selectFirstRowChangeLead",
+                        "END", "selectLastRow",
+                        "shift END", "selectLastRowExtendSelection",
+                        "ctrl shift END", "selectLastRowExtendSelection",
+                        "ctrl END", "selectLastRowChangeLead",
+                        "PAGE_UP", "scrollUp",
+                        "shift PAGE_UP", "scrollUpExtendSelection",
+                        "ctrl shift PAGE_UP", "scrollUpExtendSelection",
+                        "ctrl PAGE_UP", "scrollUpChangeLead",
+                        "PAGE_DOWN", "scrollDown",
+                        "shift PAGE_DOWN", "scrollDownExtendSelection",
+                        "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
+                        "ctrl PAGE_DOWN", "scrollDownChangeLead",
+                        "ctrl A", "selectAll",
+                        "ctrl SLASH", "selectAll",
+                        "ctrl BACK_SLASH", "clearSelection",
+                        "SPACE", "addToSelection",
+                        "ctrl SPACE", "toggleAndAnchor",
+                        "shift SPACE", "extendTo",
+                        "ctrl shift SPACE", "moveSelectionTo"
+                }),
+                "List.focusInputMap.RightToLeft",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "LEFT", "selectNextColumn",
+                        "KP_LEFT", "selectNextColumn",
+                        "shift LEFT", "selectNextColumnExtendSelection",
+                        "shift KP_LEFT", "selectNextColumnExtendSelection",
+                        "ctrl shift LEFT", "selectNextColumnExtendSelection",
+                        "ctrl shift KP_LEFT", "selectNextColumnExtendSelection",
+                        "ctrl LEFT", "selectNextColumnChangeLead",
+                        "ctrl KP_LEFT", "selectNextColumnChangeLead",
+                        "RIGHT", "selectPreviousColumn",
+                        "KP_RIGHT", "selectPreviousColumn",
+                        "shift RIGHT", "selectPreviousColumnExtendSelection",
+                        "shift KP_RIGHT", "selectPreviousColumnExtendSelection",
+                        "ctrl shift RIGHT", "selectPreviousColumnExtendSelection",
+                        "ctrl shift KP_RIGHT", "selectPreviousColumnExtendSelection",
+                        "ctrl RIGHT", "selectPreviousColumnChangeLead",
+                        "ctrl KP_RIGHT", "selectPreviousColumnChangeLead",
+                }),
+                "MenuBar.windowBindings", new Object[]{
+                        "F10", "takeFocus"
+                },
+                "OptionPane.windowBindings", new Object[]{
+                        "ESCAPE", "close"
+                },
+                "PasswordField.focusInputMap", passwordInputMap,
+                "PopupMenu.selectedWindowInputMapBindings",
+                new Object[]{
+                        "ESCAPE", "cancel",
+                        "DOWN", "selectNext",
+                        "KP_DOWN", "selectNext",
+                        "UP", "selectPrevious",
+                        "KP_UP", "selectPrevious",
+                        "LEFT", "selectParent",
+                        "KP_LEFT", "selectParent",
+                        "RIGHT", "selectChild",
+                        "KP_RIGHT", "selectChild",
+                        "ENTER", "return",
+                        "SPACE", "return"
+                },
+                "PopupMenu.selectedWindowInputMapBindings.RightToLeft",
+                new Object[]{
+                        "LEFT", "selectChild",
+                        "KP_LEFT", "selectChild",
+                        "RIGHT", "selectParent",
+                        "KP_RIGHT", "selectParent",
+                },
+                "RadioButton.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "SPACE", "pressed",
+                        "released SPACE", "released",
+                        "RETURN", "pressed"
+                }),
+                // These bindings are only enabled when there is a default
+                // button set on the rootpane.
+                "RootPane.defaultButtonWindowKeyBindings", new Object[]{
+                        "ENTER", "press",
+                        "released ENTER", "release",
+                        "ctrl ENTER", "press",
+                        "ctrl released ENTER", "release"
+                },
+                "ScrollBar.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "RIGHT", "positiveUnitIncrement",
+                        "KP_RIGHT", "positiveUnitIncrement",
+                        "DOWN", "positiveUnitIncrement",
+                        "KP_DOWN", "positiveUnitIncrement",
+                        "PAGE_DOWN", "positiveBlockIncrement",
+                        "LEFT", "negativeUnitIncrement",
+                        "KP_LEFT", "negativeUnitIncrement",
+                        "UP", "negativeUnitIncrement",
+                        "KP_UP", "negativeUnitIncrement",
+                        "PAGE_UP", "negativeBlockIncrement",
+                        "HOME", "minScroll",
+                        "END", "maxScroll"
+                }),
+                "ScrollBar.ancestorInputMap.RightToLeft",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "RIGHT", "negativeUnitIncrement",
+                        "KP_RIGHT", "negativeUnitIncrement",
+                        "LEFT", "positiveUnitIncrement",
+                        "KP_LEFT", "positiveUnitIncrement",
+                }),
+                "ScrollPane.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "RIGHT", "unitScrollRight",
+                        "KP_RIGHT", "unitScrollRight",
+                        "DOWN", "unitScrollDown",
+                        "KP_DOWN", "unitScrollDown",
+                        "LEFT", "unitScrollLeft",
+                        "KP_LEFT", "unitScrollLeft",
+                        "UP", "unitScrollUp",
+                        "KP_UP", "unitScrollUp",
+                        "PAGE_UP", "scrollUp",
+                        "PAGE_DOWN", "scrollDown",
+                        "ctrl PAGE_UP", "scrollLeft",
+                        "ctrl PAGE_DOWN", "scrollRight",
+                        "ctrl HOME", "scrollHome",
+                        "ctrl END", "scrollEnd"
+                }),
+                "ScrollPane.ancestorInputMap.RightToLeft",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ctrl PAGE_UP", "scrollRight",
+                        "ctrl PAGE_DOWN", "scrollLeft",
+                }),
+                "Slider.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "RIGHT", "positiveUnitIncrement",
+                        "KP_RIGHT", "positiveUnitIncrement",
+                        "DOWN", "negativeUnitIncrement",
+                        "KP_DOWN", "negativeUnitIncrement",
+                        "PAGE_DOWN", "negativeBlockIncrement",
+                        "LEFT", "negativeUnitIncrement",
+                        "KP_LEFT", "negativeUnitIncrement",
+                        "UP", "positiveUnitIncrement",
+                        "KP_UP", "positiveUnitIncrement",
+                        "PAGE_UP", "positiveBlockIncrement",
+                        "HOME", "minScroll",
+                        "END", "maxScroll"
+                }),
+                "Slider.focusInputMap.RightToLeft",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "RIGHT", "negativeUnitIncrement",
+                        "KP_RIGHT", "negativeUnitIncrement",
+                        "LEFT", "positiveUnitIncrement",
+                        "KP_LEFT", "positiveUnitIncrement",
+                }),
+                "Spinner.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "UP", "increment",
+                        "KP_UP", "increment",
+                        "DOWN", "decrement",
+                        "KP_DOWN", "decrement",
+                }),
+                "SplitPane.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "UP", "negativeIncrement",
+                        "DOWN", "positiveIncrement",
+                        "LEFT", "negativeIncrement",
+                        "RIGHT", "positiveIncrement",
+                        "KP_UP", "negativeIncrement",
+                        "KP_DOWN", "positiveIncrement",
+                        "KP_LEFT", "negativeIncrement",
+                        "KP_RIGHT", "positiveIncrement",
+                        "HOME", "selectMin",
+                        "END", "selectMax",
+                        "F8", "startResize",
+                        "F6", "toggleFocus",
+                        "ctrl TAB", "focusOutForward",
+                        "ctrl shift TAB", "focusOutBackward"
+                }),
+                "TabbedPane.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "RIGHT", "navigateRight",
+                        "KP_RIGHT", "navigateRight",
+                        "LEFT", "navigateLeft",
+                        "KP_LEFT", "navigateLeft",
+                        "UP", "navigateUp",
+                        "KP_UP", "navigateUp",
+                        "DOWN", "navigateDown",
+                        "KP_DOWN", "navigateDown",
+                        "ctrl DOWN", "requestFocusForVisibleComponent",
+                        "ctrl KP_DOWN", "requestFocusForVisibleComponent",
+                        "SPACE", "selectTabWithFocus"
+                }),
+                "TabbedPane.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ctrl TAB", "navigateNext",
+                        "ctrl shift TAB", "navigatePrevious",
+                        "ctrl PAGE_DOWN", "navigatePageDown",
+                        "ctrl PAGE_UP", "navigatePageUp",
+                        "ctrl UP", "requestFocus",
+                        "ctrl KP_UP", "requestFocus",
+                }),
+                "TableHeader.ancestorInputMap",
+                   new UIDefaults.LazyInputMap(new Object[] {
+                                    "SPACE", "toggleSortOrder",
+                                     "LEFT", "selectColumnToLeft",
+                                  "KP_LEFT", "selectColumnToLeft",
+                                    "RIGHT", "selectColumnToRight",
+                                 "KP_RIGHT", "selectColumnToRight",
+                                 "alt LEFT", "moveColumnLeft",
+                              "alt KP_LEFT", "moveColumnLeft",
+                                "alt RIGHT", "moveColumnRight",
+                             "alt KP_RIGHT", "moveColumnRight",
+                           "alt shift LEFT", "resizeLeft",
+                        "alt shift KP_LEFT", "resizeLeft",
+                          "alt shift RIGHT", "resizeRight",
+                       "alt shift KP_RIGHT", "resizeRight",
+                                   "ESCAPE", "focusTable",
+                   }),
+                "Table.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ctrl C", "copy",
+                        "ctrl V", "paste",
+                        "ctrl X", "cut",
+                        "COPY", "copy",
+                        "PASTE", "paste",
+                        "CUT", "cut",
+                        "control INSERT", "copy",
+                        "shift INSERT", "paste",
+                        "shift DELETE", "cut",
+                        "RIGHT", "selectNextColumn",
+                        "KP_RIGHT", "selectNextColumn",
+                        "shift RIGHT", "selectNextColumnExtendSelection",
+                        "shift KP_RIGHT", "selectNextColumnExtendSelection",
+                        "ctrl shift RIGHT", "selectNextColumnExtendSelection",
+                        "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
+                        "ctrl RIGHT", "selectNextColumnChangeLead",
+                        "ctrl KP_RIGHT", "selectNextColumnChangeLead",
+                        "LEFT", "selectPreviousColumn",
+                        "KP_LEFT", "selectPreviousColumn",
+                        "shift LEFT", "selectPreviousColumnExtendSelection",
+                        "shift KP_LEFT", "selectPreviousColumnExtendSelection",
+                        "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
+                        "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
+                        "ctrl LEFT", "selectPreviousColumnChangeLead",
+                        "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
+                        "DOWN", "selectNextRow",
+                        "KP_DOWN", "selectNextRow",
+                        "shift DOWN", "selectNextRowExtendSelection",
+                        "shift KP_DOWN", "selectNextRowExtendSelection",
+                        "ctrl shift DOWN", "selectNextRowExtendSelection",
+                        "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
+                        "ctrl DOWN", "selectNextRowChangeLead",
+                        "ctrl KP_DOWN", "selectNextRowChangeLead",
+                        "UP", "selectPreviousRow",
+                        "KP_UP", "selectPreviousRow",
+                        "shift UP", "selectPreviousRowExtendSelection",
+                        "shift KP_UP", "selectPreviousRowExtendSelection",
+                        "ctrl shift UP", "selectPreviousRowExtendSelection",
+                        "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
+                        "ctrl UP", "selectPreviousRowChangeLead",
+                        "ctrl KP_UP", "selectPreviousRowChangeLead",
+                        "HOME", "selectFirstColumn",
+                        "shift HOME", "selectFirstColumnExtendSelection",
+                        "ctrl shift HOME", "selectFirstRowExtendSelection",
+                        "ctrl HOME", "selectFirstRow",
+                        "END", "selectLastColumn",
+                        "shift END", "selectLastColumnExtendSelection",
+                        "ctrl shift END", "selectLastRowExtendSelection",
+                        "ctrl END", "selectLastRow",
+                        "PAGE_UP", "scrollUpChangeSelection",
+                        "shift PAGE_UP", "scrollUpExtendSelection",
+                        "ctrl shift PAGE_UP", "scrollLeftExtendSelection",
+                        "ctrl PAGE_UP", "scrollLeftChangeSelection",
+                        "PAGE_DOWN", "scrollDownChangeSelection",
+                        "shift PAGE_DOWN", "scrollDownExtendSelection",
+                        "ctrl shift PAGE_DOWN", "scrollRightExtendSelection",
+                        "ctrl PAGE_DOWN", "scrollRightChangeSelection",
+                        "TAB", "selectNextColumnCell",
+                        "shift TAB", "selectPreviousColumnCell",
+                        "ENTER", "selectNextRowCell",
+                        "shift ENTER", "selectPreviousRowCell",
+                        "ctrl A", "selectAll",
+                        "ctrl SLASH", "selectAll",
+                        "ctrl BACK_SLASH", "clearSelection",
+                        "ESCAPE", "cancel",
+                        "F2", "startEditing",
+                        "SPACE", "addToSelection",
+                        "ctrl SPACE", "toggleAndAnchor",
+                        "shift SPACE", "extendTo",
+                        "ctrl shift SPACE", "moveSelectionTo",
+                        "F8", "focusHeader"
+                }),
+                "Table.ancestorInputMap.RightToLeft",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "RIGHT", "selectPreviousColumn",
+                        "KP_RIGHT", "selectPreviousColumn",
+                        "shift RIGHT", "selectPreviousColumnExtendSelection",
+                        "shift KP_RIGHT", "selectPreviousColumnExtendSelection",
+                        "ctrl shift RIGHT", "selectPreviousColumnExtendSelection",
+                        "ctrl shift KP_RIGHT", "selectPreviousColumnExtendSelection",
+                        "shift RIGHT", "selectPreviousColumnChangeLead",
+                        "shift KP_RIGHT", "selectPreviousColumnChangeLead",
+                        "LEFT", "selectNextColumn",
+                        "KP_LEFT", "selectNextColumn",
+                        "shift LEFT", "selectNextColumnExtendSelection",
+                        "shift KP_LEFT", "selectNextColumnExtendSelection",
+                        "ctrl shift LEFT", "selectNextColumnExtendSelection",
+                        "ctrl shift KP_LEFT", "selectNextColumnExtendSelection",
+                        "ctrl LEFT", "selectNextColumnChangeLead",
+                        "ctrl KP_LEFT", "selectNextColumnChangeLead",
+                        "ctrl PAGE_UP", "scrollRightChangeSelection",
+                        "ctrl PAGE_DOWN", "scrollLeftChangeSelection",
+                        "ctrl shift PAGE_UP", "scrollRightExtendSelection",
+                        "ctrl shift PAGE_DOWN", "scrollLeftExtendSelection",
+                }),
+                "TextArea.focusInputMap", multilineInputMap,
+                "TextField.focusInputMap", fieldInputMap,
+                "TextPane.focusInputMap", multilineInputMap,
+                "ToggleButton.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "SPACE", "pressed",
+                        "released SPACE", "released"
+                }),
+                "ToolBar.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "UP", "navigateUp",
+                        "KP_UP", "navigateUp",
+                        "DOWN", "navigateDown",
+                        "KP_DOWN", "navigateDown",
+                        "LEFT", "navigateLeft",
+                        "KP_LEFT", "navigateLeft",
+                        "RIGHT", "navigateRight",
+                        "KP_RIGHT", "navigateRight"
+                }),
+                "Tree.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ctrl C", "copy",
+                        "ctrl V", "paste",
+                        "ctrl X", "cut",
+                        "COPY", "copy",
+                        "PASTE", "paste",
+                        "CUT", "cut",
+                        "control INSERT", "copy",
+                        "shift INSERT", "paste",
+                        "shift DELETE", "cut",
+                        "UP", "selectPrevious",
+                        "KP_UP", "selectPrevious",
+                        "shift UP", "selectPreviousExtendSelection",
+                        "shift KP_UP", "selectPreviousExtendSelection",
+                        "ctrl shift UP", "selectPreviousExtendSelection",
+                        "ctrl shift KP_UP", "selectPreviousExtendSelection",
+                        "ctrl UP", "selectPreviousChangeLead",
+                        "ctrl KP_UP", "selectPreviousChangeLead",
+                        "DOWN", "selectNext",
+                        "KP_DOWN", "selectNext",
+                        "shift DOWN", "selectNextExtendSelection",
+                        "shift KP_DOWN", "selectNextExtendSelection",
+                        "ctrl shift DOWN", "selectNextExtendSelection",
+                        "ctrl shift KP_DOWN", "selectNextExtendSelection",
+                        "ctrl DOWN", "selectNextChangeLead",
+                        "ctrl KP_DOWN", "selectNextChangeLead",
+                        "RIGHT", "selectChild",
+                        "KP_RIGHT", "selectChild",
+                        "LEFT", "selectParent",
+                        "KP_LEFT", "selectParent",
+                        "typed +", "expand",
+                        "typed -", "collapse",
+                        "BACK_SPACE", "moveSelectionToParent",
+                        "PAGE_UP", "scrollUpChangeSelection",
+                        "shift PAGE_UP", "scrollUpExtendSelection",
+                        "ctrl shift PAGE_UP", "scrollUpExtendSelection",
+                        "ctrl PAGE_UP", "scrollUpChangeLead",
+                        "PAGE_DOWN", "scrollDownChangeSelection",
+                        "shift PAGE_DOWN", "scrollDownExtendSelection",
+                        "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
+                        "ctrl PAGE_DOWN", "scrollDownChangeLead",
+                        "HOME", "selectFirst",
+                        "shift HOME", "selectFirstExtendSelection",
+                        "ctrl shift HOME", "selectFirstExtendSelection",
+                        "ctrl HOME", "selectFirstChangeLead",
+                        "END", "selectLast",
+                        "shift END", "selectLastExtendSelection",
+                        "ctrl shift END", "selectLastExtendSelection",
+                        "ctrl END", "selectLastChangeLead",
+                        "F2", "startEditing",
+                        "ctrl A", "selectAll",
+                        "ctrl SLASH", "selectAll",
+                        "ctrl BACK_SLASH", "clearSelection",
+                        "ctrl LEFT", "scrollLeft",
+                        "ctrl KP_LEFT", "scrollLeft",
+                        "ctrl RIGHT", "scrollRight",
+                        "ctrl KP_RIGHT", "scrollRight",
+                        "SPACE", "addToSelection",
+                        "ctrl SPACE", "toggleAndAnchor",
+                        "shift SPACE", "extendTo",
+                        "ctrl shift SPACE", "moveSelectionTo"
+                }),
+                "Tree.focusInputMap.RightToLeft",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "RIGHT", "selectParent",
+                        "KP_RIGHT", "selectParent",
+                        "LEFT", "selectChild",
+                        "KP_LEFT", "selectChild",
+                }),
+                "Tree.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ESCAPE", "cancel"
+                }),
+        };
+        table.putDefaults(defaults);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/sun/swing/plaf/WindowsKeybindings.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,643 @@
+/*
+ * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.swing.plaf;
+
+import javax.swing.JTextField;
+import javax.swing.UIDefaults;
+import javax.swing.text.DefaultEditorKit;
+
+/**
+ * WindowsKeybindings - The standard set of keymaps for the Windows Platform
+ *
+ * @author Jasper Potts
+ */
+public class WindowsKeybindings {
+
+    /**
+     * Install all Windows keybindings into the provided UIDefaults table
+     *
+     * @param table The UiDefaults table to install into
+     */
+    public static void installKeybindings(UIDefaults table) {
+        // *** Text
+        Object fieldInputMap = new UIDefaults.LazyInputMap(new Object[]{
+                "control C", DefaultEditorKit.copyAction,
+                "control V", DefaultEditorKit.pasteAction,
+                "control X", DefaultEditorKit.cutAction,
+                "COPY", DefaultEditorKit.copyAction,
+                "PASTE", DefaultEditorKit.pasteAction,
+                "CUT", DefaultEditorKit.cutAction,
+                "control INSERT", DefaultEditorKit.copyAction,
+                "shift INSERT", DefaultEditorKit.pasteAction,
+                "shift DELETE", DefaultEditorKit.cutAction,
+                "control A", DefaultEditorKit.selectAllAction,
+                "control BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
+                "shift LEFT", DefaultEditorKit.selectionBackwardAction,
+                "shift RIGHT", DefaultEditorKit.selectionForwardAction,
+                "control LEFT", DefaultEditorKit.previousWordAction,
+                "control RIGHT", DefaultEditorKit.nextWordAction,
+                "control shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
+                "control shift RIGHT", DefaultEditorKit.selectionNextWordAction,
+                "HOME", DefaultEditorKit.beginLineAction,
+                "END", DefaultEditorKit.endLineAction,
+                "shift HOME", DefaultEditorKit.selectionBeginLineAction,
+                "shift END", DefaultEditorKit.selectionEndLineAction,
+                "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                "ctrl H", DefaultEditorKit.deletePrevCharAction,
+                "DELETE", DefaultEditorKit.deleteNextCharAction,
+                "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
+                "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
+                "RIGHT", DefaultEditorKit.forwardAction,
+                "LEFT", DefaultEditorKit.backwardAction,
+                "KP_RIGHT", DefaultEditorKit.forwardAction,
+                "KP_LEFT", DefaultEditorKit.backwardAction,
+                "ENTER", JTextField.notifyAction,
+                "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
+        });
+        Object passwordInputMap = new UIDefaults.LazyInputMap(new Object[]{
+                "control C", DefaultEditorKit.copyAction,
+                "control V", DefaultEditorKit.pasteAction,
+                "control X", DefaultEditorKit.cutAction,
+                "COPY", DefaultEditorKit.copyAction,
+                "PASTE", DefaultEditorKit.pasteAction,
+                "CUT", DefaultEditorKit.cutAction,
+                "control INSERT", DefaultEditorKit.copyAction,
+                "shift INSERT", DefaultEditorKit.pasteAction,
+                "shift DELETE", DefaultEditorKit.cutAction,
+                "control A", DefaultEditorKit.selectAllAction,
+                "control BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
+                "shift LEFT", DefaultEditorKit.selectionBackwardAction,
+                "shift RIGHT", DefaultEditorKit.selectionForwardAction,
+                "control LEFT", DefaultEditorKit.beginLineAction,
+                "control RIGHT", DefaultEditorKit.endLineAction,
+                "control shift LEFT", DefaultEditorKit.selectionBeginLineAction,
+                "control shift RIGHT", DefaultEditorKit.selectionEndLineAction,
+                "HOME", DefaultEditorKit.beginLineAction,
+                "END", DefaultEditorKit.endLineAction,
+                "shift HOME", DefaultEditorKit.selectionBeginLineAction,
+                "shift END", DefaultEditorKit.selectionEndLineAction,
+                "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                "ctrl H", DefaultEditorKit.deletePrevCharAction,
+                "DELETE", DefaultEditorKit.deleteNextCharAction,
+                "RIGHT", DefaultEditorKit.forwardAction,
+                "LEFT", DefaultEditorKit.backwardAction,
+                "KP_RIGHT", DefaultEditorKit.forwardAction,
+                "KP_LEFT", DefaultEditorKit.backwardAction,
+                "ENTER", JTextField.notifyAction,
+                "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
+        });
+        Object multilineInputMap = new UIDefaults.LazyInputMap(new Object[]{
+                "control C", DefaultEditorKit.copyAction,
+                "control V", DefaultEditorKit.pasteAction,
+                "control X", DefaultEditorKit.cutAction,
+                "COPY", DefaultEditorKit.copyAction,
+                "PASTE", DefaultEditorKit.pasteAction,
+                "CUT", DefaultEditorKit.cutAction,
+                "control INSERT", DefaultEditorKit.copyAction,
+                "shift INSERT", DefaultEditorKit.pasteAction,
+                "shift DELETE", DefaultEditorKit.cutAction,
+                "shift LEFT", DefaultEditorKit.selectionBackwardAction,
+                "shift RIGHT", DefaultEditorKit.selectionForwardAction,
+                "control LEFT", DefaultEditorKit.previousWordAction,
+                "control RIGHT", DefaultEditorKit.nextWordAction,
+                "control shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
+                "control shift RIGHT", DefaultEditorKit.selectionNextWordAction,
+                "control A", DefaultEditorKit.selectAllAction,
+                "control BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
+                "HOME", DefaultEditorKit.beginLineAction,
+                "END", DefaultEditorKit.endLineAction,
+                "shift HOME", DefaultEditorKit.selectionBeginLineAction,
+                "shift END", DefaultEditorKit.selectionEndLineAction,
+                "control HOME", DefaultEditorKit.beginAction,
+                "control END", DefaultEditorKit.endAction,
+                "control shift HOME", DefaultEditorKit.selectionBeginAction,
+                "control shift END", DefaultEditorKit.selectionEndAction,
+                "UP", DefaultEditorKit.upAction,
+                "DOWN", DefaultEditorKit.downAction,
+                "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                "ctrl H", DefaultEditorKit.deletePrevCharAction,
+                "DELETE", DefaultEditorKit.deleteNextCharAction,
+                "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
+                "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
+                "RIGHT", DefaultEditorKit.forwardAction,
+                "LEFT", DefaultEditorKit.backwardAction,
+                "KP_RIGHT", DefaultEditorKit.forwardAction,
+                "KP_LEFT", DefaultEditorKit.backwardAction,
+                "PAGE_UP", DefaultEditorKit.pageUpAction,
+                "PAGE_DOWN", DefaultEditorKit.pageDownAction,
+                "shift PAGE_UP", "selection-page-up",
+                "shift PAGE_DOWN", "selection-page-down",
+                "ctrl shift PAGE_UP", "selection-page-left",
+                "ctrl shift PAGE_DOWN", "selection-page-right",
+                "shift UP", DefaultEditorKit.selectionUpAction,
+                "shift DOWN", DefaultEditorKit.selectionDownAction,
+                "ENTER", DefaultEditorKit.insertBreakAction,
+                "TAB", DefaultEditorKit.insertTabAction,
+                "control T", "next-link-action",
+                "control shift T", "previous-link-action",
+                "control SPACE", "activate-link-action",
+                "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
+        });
+        Object[] defaults = {
+                "TextField.focusInputMap", fieldInputMap,
+                "PasswordField.focusInputMap", passwordInputMap,
+                "TextArea.focusInputMap", multilineInputMap,
+                "TextPane.focusInputMap", multilineInputMap,
+                "EditorPane.focusInputMap", multilineInputMap,
+                "Button.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "SPACE", "pressed",
+                        "released SPACE", "released"
+                }),
+                "CheckBox.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "SPACE", "pressed",
+                        "released SPACE", "released"
+                }),
+                "ComboBox.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[]{
+                        "ESCAPE", "hidePopup",
+                        "PAGE_UP", "pageUpPassThrough",
+                        "PAGE_DOWN", "pageDownPassThrough",
+                        "HOME", "homePassThrough",
+                        "END", "endPassThrough",
+                        "DOWN", "selectNext2",
+                        "KP_DOWN", "selectNext2",
+                        "UP", "selectPrevious2",
+                        "KP_UP", "selectPrevious2",
+                        "ENTER", "enterPressed",
+                        "F4", "togglePopup",
+                        "alt DOWN", "togglePopup",
+                        "alt KP_DOWN", "togglePopup",
+                        "alt UP", "togglePopup",
+                        "alt KP_UP", "togglePopup"
+                }),
+                "Desktop.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ctrl F5", "restore",
+                        "ctrl F4", "close",
+                        "ctrl F7", "move",
+                        "ctrl F8", "resize",
+                        "RIGHT", "right",
+                        "KP_RIGHT", "right",
+                        "LEFT", "left",
+                        "KP_LEFT", "left",
+                        "UP", "up",
+                        "KP_UP", "up",
+                        "DOWN", "down",
+                        "KP_DOWN", "down",
+                        "ESCAPE", "escape",
+                        "ctrl F9", "minimize",
+                        "ctrl F10", "maximize",
+                        "ctrl F6", "selectNextFrame",
+                        "ctrl TAB", "selectNextFrame",
+                        "ctrl alt F6", "selectNextFrame",
+                        "shift ctrl alt F6", "selectPreviousFrame",
+                        "ctrl F12", "navigateNext",
+                        "shift ctrl F12", "navigatePrevious"
+                }),
+                "FileChooser.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ESCAPE", "cancelSelection",
+                        "F2", "editFileName",
+                        "F5", "refresh",
+                        "BACK_SPACE", "Go Up",
+                        "ENTER", "approveSelection",
+                        "ctrl ENTER", "approveSelection"
+                }),
+                "InternalFrame.windowBindings", new Object[]{
+                        "shift ESCAPE", "showSystemMenu",
+                        "ctrl SPACE", "showSystemMenu",
+                        "ESCAPE", "hideSystemMenu"
+                },
+                "List.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ctrl C", "copy",
+                        "ctrl V", "paste",
+                        "ctrl X", "cut",
+                        "COPY", "copy",
+                        "PASTE", "paste",
+                        "CUT", "cut",
+                        "control INSERT", "copy",
+                        "shift INSERT", "paste",
+                        "shift DELETE", "cut",
+                        "UP", "selectPreviousRow",
+                        "KP_UP", "selectPreviousRow",
+                        "shift UP", "selectPreviousRowExtendSelection",
+                        "shift KP_UP", "selectPreviousRowExtendSelection",
+                        "ctrl shift UP", "selectPreviousRowExtendSelection",
+                        "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
+                        "ctrl UP", "selectPreviousRowChangeLead",
+                        "ctrl KP_UP", "selectPreviousRowChangeLead",
+                        "DOWN", "selectNextRow",
+                        "KP_DOWN", "selectNextRow",
+                        "shift DOWN", "selectNextRowExtendSelection",
+                        "shift KP_DOWN", "selectNextRowExtendSelection",
+                        "ctrl shift DOWN", "selectNextRowExtendSelection",
+                        "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
+                        "ctrl DOWN", "selectNextRowChangeLead",
+                        "ctrl KP_DOWN", "selectNextRowChangeLead",
+                        "LEFT", "selectPreviousColumn",
+                        "KP_LEFT", "selectPreviousColumn",
+                        "shift LEFT", "selectPreviousColumnExtendSelection",
+                        "shift KP_LEFT", "selectPreviousColumnExtendSelection",
+                        "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
+                        "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
+                        "ctrl LEFT", "selectPreviousColumnChangeLead",
+                        "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
+                        "RIGHT", "selectNextColumn",
+                        "KP_RIGHT", "selectNextColumn",
+                        "shift RIGHT", "selectNextColumnExtendSelection",
+                        "shift KP_RIGHT", "selectNextColumnExtendSelection",
+                        "ctrl shift RIGHT", "selectNextColumnExtendSelection",
+                        "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
+                        "ctrl RIGHT", "selectNextColumnChangeLead",
+                        "ctrl KP_RIGHT", "selectNextColumnChangeLead",
+                        "HOME", "selectFirstRow",
+                        "shift HOME", "selectFirstRowExtendSelection",
+                        "ctrl shift HOME", "selectFirstRowExtendSelection",
+                        "ctrl HOME", "selectFirstRowChangeLead",
+                        "END", "selectLastRow",
+                        "shift END", "selectLastRowExtendSelection",
+                        "ctrl shift END", "selectLastRowExtendSelection",
+                        "ctrl END", "selectLastRowChangeLead",
+                        "PAGE_UP", "scrollUp",
+                        "shift PAGE_UP", "scrollUpExtendSelection",
+                        "ctrl shift PAGE_UP", "scrollUpExtendSelection",
+                        "ctrl PAGE_UP", "scrollUpChangeLead",
+                        "PAGE_DOWN", "scrollDown",
+                        "shift PAGE_DOWN", "scrollDownExtendSelection",
+                        "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
+                        "ctrl PAGE_DOWN", "scrollDownChangeLead",
+                        "ctrl A", "selectAll",
+                        "ctrl SLASH", "selectAll",
+                        "ctrl BACK_SLASH", "clearSelection",
+                        "SPACE", "addToSelection",
+                        "ctrl SPACE", "toggleAndAnchor",
+                        "shift SPACE", "extendTo",
+                        "ctrl shift SPACE", "moveSelectionTo"
+                }),
+                "MenuBar.windowBindings", new Object[]{
+                        "F10", "takeFocus"
+                },
+                "RadioButton.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "SPACE", "pressed",
+                        "released SPACE", "released"
+                }),
+                "OptionPane.windowBindings", new Object[]{
+                        "ESCAPE", "close"
+                },
+                "FormattedTextField.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ctrl C", DefaultEditorKit.copyAction,
+                        "ctrl V", DefaultEditorKit.pasteAction,
+                        "ctrl X", DefaultEditorKit.cutAction,
+                        "COPY", DefaultEditorKit.copyAction,
+                        "PASTE", DefaultEditorKit.pasteAction,
+                        "CUT", DefaultEditorKit.cutAction,
+                        "control INSERT", DefaultEditorKit.copyAction,
+                        "shift INSERT", DefaultEditorKit.pasteAction,
+                        "shift DELETE", DefaultEditorKit.cutAction,
+                        "shift LEFT", DefaultEditorKit.selectionBackwardAction,
+                        "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
+                        "shift RIGHT", DefaultEditorKit.selectionForwardAction,
+                        "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
+                        "ctrl LEFT", DefaultEditorKit.previousWordAction,
+                        "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
+                        "ctrl RIGHT", DefaultEditorKit.nextWordAction,
+                        "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
+                        "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
+                        "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
+                        "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
+                        "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
+                        "ctrl A", DefaultEditorKit.selectAllAction,
+                        "HOME", DefaultEditorKit.beginLineAction,
+                        "END", DefaultEditorKit.endLineAction,
+                        "shift HOME", DefaultEditorKit.selectionBeginLineAction,
+                        "shift END", DefaultEditorKit.selectionEndLineAction,
+                        "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                        "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
+                        "ctrl H", DefaultEditorKit.deletePrevCharAction,
+                        "DELETE", DefaultEditorKit.deleteNextCharAction,
+                        "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
+                        "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
+                        "RIGHT", DefaultEditorKit.forwardAction,
+                        "LEFT", DefaultEditorKit.backwardAction,
+                        "KP_RIGHT", DefaultEditorKit.forwardAction,
+                        "KP_LEFT", DefaultEditorKit.backwardAction,
+                        "ENTER", JTextField.notifyAction,
+                        "ctrl BACK_SLASH", "unselect",
+                        "control shift O", "toggle-componentOrientation",
+                        "ESCAPE", "reset-field-edit",
+                        "UP", "increment",
+                        "KP_UP", "increment",
+                        "DOWN", "decrement",
+                        "KP_DOWN", "decrement",
+                }),
+                // These bindings are only enabled when there is a default
+                // button set on the rootpane.
+                "RootPane.defaultButtonWindowKeyBindings", new Object[]{
+                        "ENTER", "press",
+                        "released ENTER", "release",
+                        "ctrl ENTER", "press",
+                        "ctrl released ENTER", "release"
+                },
+                "ScrollBar.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "RIGHT", "positiveUnitIncrement",
+                        "KP_RIGHT", "positiveUnitIncrement",
+                        "DOWN", "positiveUnitIncrement",
+                        "KP_DOWN", "positiveUnitIncrement",
+                        "PAGE_DOWN", "positiveBlockIncrement",
+                        "ctrl PAGE_DOWN", "positiveBlockIncrement",
+                        "LEFT", "negativeUnitIncrement",
+                        "KP_LEFT", "negativeUnitIncrement",
+                        "UP", "negativeUnitIncrement",
+                        "KP_UP", "negativeUnitIncrement",
+                        "PAGE_UP", "negativeBlockIncrement",
+                        "ctrl PAGE_UP", "negativeBlockIncrement",
+                        "HOME", "minScroll",
+                        "END", "maxScroll"
+                }),
+                "ScrollPane.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "RIGHT", "unitScrollRight",
+                        "KP_RIGHT", "unitScrollRight",
+                        "DOWN", "unitScrollDown",
+                        "KP_DOWN", "unitScrollDown",
+                        "LEFT", "unitScrollLeft",
+                        "KP_LEFT", "unitScrollLeft",
+                        "UP", "unitScrollUp",
+                        "KP_UP", "unitScrollUp",
+                        "PAGE_UP", "scrollUp",
+                        "PAGE_DOWN", "scrollDown",
+                        "ctrl PAGE_UP", "scrollLeft",
+                        "ctrl PAGE_DOWN", "scrollRight",
+                        "ctrl HOME", "scrollHome",
+                        "ctrl END", "scrollEnd"
+                }),
+                "Slider.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "RIGHT", "positiveUnitIncrement",
+                        "KP_RIGHT", "positiveUnitIncrement",
+                        "DOWN", "negativeUnitIncrement",
+                        "KP_DOWN", "negativeUnitIncrement",
+                        "PAGE_DOWN", "negativeBlockIncrement",
+                        "LEFT", "negativeUnitIncrement",
+                        "KP_LEFT", "negativeUnitIncrement",
+                        "UP", "positiveUnitIncrement",
+                        "KP_UP", "positiveUnitIncrement",
+                        "PAGE_UP", "positiveBlockIncrement",
+                        "HOME", "minScroll",
+                        "END", "maxScroll"
+                }),
+                "Spinner.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "UP", "increment",
+                        "KP_UP", "increment",
+                        "DOWN", "decrement",
+                        "KP_DOWN", "decrement",
+                }),
+                "SplitPane.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "UP", "negativeIncrement",
+                        "DOWN", "positiveIncrement",
+                        "LEFT", "negativeIncrement",
+                        "RIGHT", "positiveIncrement",
+                        "KP_UP", "negativeIncrement",
+                        "KP_DOWN", "positiveIncrement",
+                        "KP_LEFT", "negativeIncrement",
+                        "KP_RIGHT", "positiveIncrement",
+                        "HOME", "selectMin",
+                        "END", "selectMax",
+                        "F8", "startResize",
+                        "F6", "toggleFocus",
+                        "ctrl TAB", "focusOutForward",
+                        "ctrl shift TAB", "focusOutBackward"
+                }),
+                "TabbedPane.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "RIGHT", "navigateRight",
+                        "KP_RIGHT", "navigateRight",
+                        "LEFT", "navigateLeft",
+                        "KP_LEFT", "navigateLeft",
+                        "UP", "navigateUp",
+                        "KP_UP", "navigateUp",
+                        "DOWN", "navigateDown",
+                        "KP_DOWN", "navigateDown",
+                        "ctrl DOWN", "requestFocusForVisibleComponent",
+                        "ctrl KP_DOWN", "requestFocusForVisibleComponent",
+                }),
+                "TabbedPane.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ctrl TAB", "navigateNext",
+                        "ctrl shift TAB", "navigatePrevious",
+                        "ctrl PAGE_DOWN", "navigatePageDown",
+                        "ctrl PAGE_UP", "navigatePageUp",
+                        "ctrl UP", "requestFocus",
+                        "ctrl KP_UP", "requestFocus",
+                }),
+                "TableHeader.ancestorInputMap",
+                   new UIDefaults.LazyInputMap(new Object[] {
+                                    "SPACE", "toggleSortOrder",
+                                     "LEFT", "selectColumnToLeft",
+                                  "KP_LEFT", "selectColumnToLeft",
+                                    "RIGHT", "selectColumnToRight",
+                                 "KP_RIGHT", "selectColumnToRight",
+                                 "alt LEFT", "moveColumnLeft",
+                              "alt KP_LEFT", "moveColumnLeft",
+                                "alt RIGHT", "moveColumnRight",
+                             "alt KP_RIGHT", "moveColumnRight",
+                           "alt shift LEFT", "resizeLeft",
+                        "alt shift KP_LEFT", "resizeLeft",
+                          "alt shift RIGHT", "resizeRight",
+                       "alt shift KP_RIGHT", "resizeRight",
+                                   "ESCAPE", "focusTable",
+                   }),
+                "Table.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ctrl C", "copy",
+                        "ctrl V", "paste",
+                        "ctrl X", "cut",
+                        "COPY", "copy",
+                        "PASTE", "paste",
+                        "CUT", "cut",
+                        "control INSERT", "copy",
+                        "shift INSERT", "paste",
+                        "shift DELETE", "cut",
+                        "RIGHT", "selectNextColumn",
+                        "KP_RIGHT", "selectNextColumn",
+                        "shift RIGHT", "selectNextColumnExtendSelection",
+                        "shift KP_RIGHT", "selectNextColumnExtendSelection",
+                        "ctrl shift RIGHT", "selectNextColumnExtendSelection",
+                        "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
+                        "ctrl RIGHT", "selectNextColumnChangeLead",
+                        "ctrl KP_RIGHT", "selectNextColumnChangeLead",
+                        "LEFT", "selectPreviousColumn",
+                        "KP_LEFT", "selectPreviousColumn",
+                        "shift LEFT", "selectPreviousColumnExtendSelection",
+                        "shift KP_LEFT", "selectPreviousColumnExtendSelection",
+                        "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
+                        "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
+                        "ctrl LEFT", "selectPreviousColumnChangeLead",
+                        "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
+                        "DOWN", "selectNextRow",
+                        "KP_DOWN", "selectNextRow",
+                        "shift DOWN", "selectNextRowExtendSelection",
+                        "shift KP_DOWN", "selectNextRowExtendSelection",
+                        "ctrl shift DOWN", "selectNextRowExtendSelection",
+                        "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
+                        "ctrl DOWN", "selectNextRowChangeLead",
+                        "ctrl KP_DOWN", "selectNextRowChangeLead",
+                        "UP", "selectPreviousRow",
+                        "KP_UP", "selectPreviousRow",
+                        "shift UP", "selectPreviousRowExtendSelection",
+                        "shift KP_UP", "selectPreviousRowExtendSelection",
+                        "ctrl shift UP", "selectPreviousRowExtendSelection",
+                        "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
+                        "ctrl UP", "selectPreviousRowChangeLead",
+                        "ctrl KP_UP", "selectPreviousRowChangeLead",
+                        "HOME", "selectFirstColumn",
+                        "shift HOME", "selectFirstColumnExtendSelection",
+                        "ctrl shift HOME", "selectFirstRowExtendSelection",
+                        "ctrl HOME", "selectFirstRow",
+                        "END", "selectLastColumn",
+                        "shift END", "selectLastColumnExtendSelection",
+                        "ctrl shift END", "selectLastRowExtendSelection",
+                        "ctrl END", "selectLastRow",
+                        "PAGE_UP", "scrollUpChangeSelection",
+                        "shift PAGE_UP", "scrollUpExtendSelection",
+                        "ctrl shift PAGE_UP", "scrollLeftExtendSelection",
+                        "ctrl PAGE_UP", "scrollLeftChangeSelection",
+                        "PAGE_DOWN", "scrollDownChangeSelection",
+                        "shift PAGE_DOWN", "scrollDownExtendSelection",
+                        "ctrl shift PAGE_DOWN", "scrollRightExtendSelection",
+                        "ctrl PAGE_DOWN", "scrollRightChangeSelection",
+                        "TAB", "selectNextColumnCell",
+                        "shift TAB", "selectPreviousColumnCell",
+                        "ENTER", "selectNextRowCell",
+                        "shift ENTER", "selectPreviousRowCell",
+                        "ctrl A", "selectAll",
+                        "ctrl SLASH", "selectAll",
+                        "ctrl BACK_SLASH", "clearSelection",
+                        "ESCAPE", "cancel",
+                        "F2", "startEditing",
+                        "SPACE", "addToSelection",
+                        "ctrl SPACE", "toggleAndAnchor",
+                        "shift SPACE", "extendTo",
+                        "ctrl shift SPACE", "moveSelectionTo",
+                        "F8", "focusHeader"
+                }),
+                "ToggleButton.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "SPACE", "pressed",
+                        "released SPACE", "released"
+                }),
+                "ToolBar.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "UP", "navigateUp",
+                        "KP_UP", "navigateUp",
+                        "DOWN", "navigateDown",
+                        "KP_DOWN", "navigateDown",
+                        "LEFT", "navigateLeft",
+                        "KP_LEFT", "navigateLeft",
+                        "RIGHT", "navigateRight",
+                        "KP_RIGHT", "navigateRight"
+                }),
+                "Tree.focusInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ADD", "expand",
+                        "SUBTRACT", "collapse",
+                        "ctrl C", "copy",
+                        "ctrl V", "paste",
+                        "ctrl X", "cut",
+                        "COPY", "copy",
+                        "PASTE", "paste",
+                        "CUT", "cut",
+                        "control INSERT", "copy",
+                        "shift INSERT", "paste",
+                        "shift DELETE", "cut",
+                        "UP", "selectPrevious",
+                        "KP_UP", "selectPrevious",
+                        "shift UP", "selectPreviousExtendSelection",
+                        "shift KP_UP", "selectPreviousExtendSelection",
+                        "ctrl shift UP", "selectPreviousExtendSelection",
+                        "ctrl shift KP_UP", "selectPreviousExtendSelection",
+                        "ctrl UP", "selectPreviousChangeLead",
+                        "ctrl KP_UP", "selectPreviousChangeLead",
+                        "DOWN", "selectNext",
+                        "KP_DOWN", "selectNext",
+                        "shift DOWN", "selectNextExtendSelection",
+                        "shift KP_DOWN", "selectNextExtendSelection",
+                        "ctrl shift DOWN", "selectNextExtendSelection",
+                        "ctrl shift KP_DOWN", "selectNextExtendSelection",
+                        "ctrl DOWN", "selectNextChangeLead",
+                        "ctrl KP_DOWN", "selectNextChangeLead",
+                        "RIGHT", "selectChild",
+                        "KP_RIGHT", "selectChild",
+                        "LEFT", "selectParent",
+                        "KP_LEFT", "selectParent",
+                        "PAGE_UP", "scrollUpChangeSelection",
+                        "shift PAGE_UP", "scrollUpExtendSelection",
+                        "ctrl shift PAGE_UP", "scrollUpExtendSelection",
+                        "ctrl PAGE_UP", "scrollUpChangeLead",
+                        "PAGE_DOWN", "scrollDownChangeSelection",
+                        "shift PAGE_DOWN", "scrollDownExtendSelection",
+                        "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
+                        "ctrl PAGE_DOWN", "scrollDownChangeLead",
+                        "HOME", "selectFirst",
+                        "shift HOME", "selectFirstExtendSelection",
+                        "ctrl shift HOME", "selectFirstExtendSelection",
+                        "ctrl HOME", "selectFirstChangeLead",
+                        "END", "selectLast",
+                        "shift END", "selectLastExtendSelection",
+                        "ctrl shift END", "selectLastExtendSelection",
+                        "ctrl END", "selectLastChangeLead",
+                        "F2", "startEditing",
+                        "ctrl A", "selectAll",
+                        "ctrl SLASH", "selectAll",
+                        "ctrl BACK_SLASH", "clearSelection",
+                        "ctrl LEFT", "scrollLeft",
+                        "ctrl KP_LEFT", "scrollLeft",
+                        "ctrl RIGHT", "scrollRight",
+                        "ctrl KP_RIGHT", "scrollRight",
+                        "SPACE", "addToSelection",
+                        "ctrl SPACE", "toggleAndAnchor",
+                        "shift SPACE", "extendTo",
+                        "ctrl shift SPACE", "moveSelectionTo"
+                }),
+                "Tree.ancestorInputMap",
+                new UIDefaults.LazyInputMap(new Object[]{
+                        "ESCAPE", "cancel"
+                }),
+        };
+        table.putDefaults(defaults);
+    }
+
+}
--- a/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUI.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUI.java	Wed Jul 05 16:52:18 2017 +0200
@@ -183,14 +183,7 @@
         }
     }
 
-    ActionMap createActionMap() {
-        ActionMap map = new ActionMapUIResource();
-        map.put("approveSelection", getApproveSelectionAction());
-        map.put("cancelSelection", getCancelSelectionAction());
-        map.put("Go Up", getChangeToParentDirectoryAction());
-        map.put("fileNameCompletion", getFileNameCompletionAction());
-        return map;
-    }
+    protected abstract ActionMap createActionMap();
 
 
     protected void installDefaults(JFileChooser fc) {
--- a/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -38,8 +38,7 @@
 import javax.swing.filechooser.FileFilter;
 import javax.swing.plaf.basic.*;
 import javax.swing.plaf.synth.*;
-
-import sun.swing.SwingUtilities2;
+import javax.swing.plaf.ActionMapUIResource;
 
 import sun.awt.shell.ShellFolder;
 import sun.swing.*;
@@ -286,9 +285,9 @@
         b.setAlignmentX(JComponent.LEFT_ALIGNMENT);
         b.setAlignmentY(JComponent.CENTER_ALIGNMENT);
         b.setMargin(shrinkwrap);
+        topButtonPanel.add(b);
+        topButtonPanel.add(Box.createRigidArea(hstrut5));
     }
-    topButtonPanel.add(b);
-    topButtonPanel.add(Box.createRigidArea(hstrut5));
 
     // View button group
     ButtonGroup viewButtonGroup = new ButtonGroup();
@@ -521,6 +520,9 @@
         }
     }
 
+    @Override public void rescanCurrentDirectory(JFileChooser fc) {
+        filePane.rescanCurrentDirectory();
+    }
 
     protected void doSelectedFileChanged(PropertyChangeEvent e) {
         super.doSelectedFileChanged(e);
@@ -635,6 +637,14 @@
     // ************ FileChooser UI PLAF methods **************
     // *******************************************************
 
+    protected ActionMap createActionMap() {
+        ActionMap map = new ActionMapUIResource();
+        // add standard actions
+        FilePane.addActionsToMap(map, filePane.getActions());
+        // add synth only actions
+        map.put("fileNameCompletion", getFileNameCompletionAction());
+        return map;
+    }
 
     // *****************************
     // ***** Directory Actions *****
@@ -649,32 +659,44 @@
     }
 
     protected DirectoryComboBoxRenderer createDirectoryComboBoxRenderer(JFileChooser fc) {
-        return new DirectoryComboBoxRenderer();
+        return new DirectoryComboBoxRenderer(directoryComboBox.getRenderer());
     }
 
     //
     // Renderer for DirectoryComboBox
     //
-    class DirectoryComboBoxRenderer extends DefaultListCellRenderer  {
+    // Synth has some odd behavior with regards to renderers. Renderers are styled
+    // in a specific manner by the SynthComboBoxUI. If we extend DefaultListCellRenderer
+    // here, then we get none of those benefits or behaviors, leading to poor
+    // looking combo boxes.
+    // So what we do here is delegate most jobs to the "real" or original renderer,
+    // and simply monkey with the icon and text of the renderer.
+    private class DirectoryComboBoxRenderer implements ListCellRenderer {
+        private ListCellRenderer delegate;
         IndentIcon ii = new IndentIcon();
-        public Component getListCellRendererComponent(JList list, Object value,
-                                                      int index, boolean isSelected,
-                                                      boolean cellHasFocus) {
 
-            super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+        private DirectoryComboBoxRenderer(ListCellRenderer delegate) {
+            this.delegate = delegate;
+        }
 
+        @Override
+        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+            Component c = delegate.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+
+            assert c instanceof JLabel;
+            JLabel label = (JLabel)c;
             if (value == null) {
-                setText("");
-                return this;
+                label.setText("");
+                return label;
             }
-            File directory = (File)value;
-            setText(getFileChooser().getName(directory));
+            File directory = (File) value;
+            label.setText(getFileChooser().getName(directory));
             Icon icon = getFileChooser().getIcon(directory);
             ii.icon = icon;
             ii.depth = directoryComboBoxModel.getDepth(index);
-            setIcon(ii);
+            label.setIcon(ii);
 
-            return this;
+            return label;
         }
     }
 
@@ -862,24 +884,33 @@
     // Renderer for Types ComboBox
     //
     protected FilterComboBoxRenderer createFilterComboBoxRenderer() {
-        return new FilterComboBoxRenderer();
+        return new FilterComboBoxRenderer(filterComboBox.getRenderer());
     }
 
     /**
      * Render different type sizes and styles.
      */
-    public class FilterComboBoxRenderer extends DefaultListCellRenderer {
-        public Component getListCellRendererComponent(JList list,
-            Object value, int index, boolean isSelected,
-            boolean cellHasFocus) {
+    public class FilterComboBoxRenderer implements ListCellRenderer {
+        private ListCellRenderer delegate;
+        private FilterComboBoxRenderer(ListCellRenderer delegate) {
+            this.delegate = delegate;
+        }
 
-            super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+            Component c = delegate.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
 
+            String text = null;
             if (value != null && value instanceof FileFilter) {
-                setText(((FileFilter)value).getDescription());
+                text = ((FileFilter) value).getDescription();
             }
 
-            return this;
+            //this should always be true, since SynthComboBoxUI's SynthComboBoxRenderer
+            //extends JLabel
+            assert c instanceof JLabel;
+            if (text != null) {
+                ((JLabel)c).setText(text);
+            }
+            return c;
         }
     }
 
--- a/jdk/src/share/classes/sun/swing/table/DefaultTableCellHeaderRenderer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/classes/sun/swing/table/DefaultTableCellHeaderRenderer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -26,16 +26,23 @@
 
 import java.awt.Component;
 import java.awt.Color;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Insets;
+import java.awt.Point;
+import java.awt.Rectangle;
 import javax.swing.*;
 import javax.swing.plaf.UIResource;
 import javax.swing.border.Border;
 import javax.swing.table.*;
+import sun.swing.DefaultLookup;
 
-/**
- */
+
 public class DefaultTableCellHeaderRenderer extends DefaultTableCellRenderer
         implements UIResource {
     private boolean horizontalTextPositionSet;
+    private Icon sortArrow;
+    private EmptyIcon emptyIcon = new EmptyIcon();
 
     public DefaultTableCellHeaderRenderer() {
         setHorizontalAlignment(JLabel.CENTER);
@@ -58,8 +65,8 @@
                 Color fgColor = null;
                 Color bgColor = null;
                 if (hasFocus) {
-                    fgColor = UIManager.getColor("TableHeader.focusCellForeground");
-                    bgColor = UIManager.getColor("TableHeader.focusCellBackground");
+                    fgColor = DefaultLookup.getColor(this, ui, "TableHeader.focusCellForeground");
+                    bgColor = DefaultLookup.getColor(this, ui, "TableHeader.focusCellBackground");
                 }
                 if (fgColor == null) {
                     fgColor = header.getForeground();
@@ -85,16 +92,16 @@
                 if (sortOrder != null) {
                     switch(sortOrder) {
                     case ASCENDING:
-                        sortIcon = UIManager.getIcon(
-                            "Table.ascendingSortIcon");
+                        sortIcon = DefaultLookup.getIcon(
+                            this, ui, "Table.ascendingSortIcon");
                         break;
                     case DESCENDING:
-                        sortIcon = UIManager.getIcon(
-                            "Table.descendingSortIcon");
+                        sortIcon = DefaultLookup.getIcon(
+                            this, ui, "Table.descendingSortIcon");
                         break;
                     case UNSORTED:
-                        sortIcon = UIManager.getIcon(
-                            "Table.naturalSortIcon");
+                        sortIcon = DefaultLookup.getIcon(
+                            this, ui, "Table.naturalSortIcon");
                         break;
                     }
                 }
@@ -103,13 +110,14 @@
 
         setText(value == null ? "" : value.toString());
         setIcon(sortIcon);
+        sortArrow = sortIcon;
 
         Border border = null;
         if (hasFocus) {
-            border = UIManager.getBorder("TableHeader.focusCellBorder");
+            border = DefaultLookup.getBorder(this, ui, "TableHeader.focusCellBorder");
         }
         if (border == null) {
-            border = UIManager.getBorder("TableHeader.cellBorder");
+            border = DefaultLookup.getBorder(this, ui, "TableHeader.cellBorder");
         }
         setBorder(border);
 
@@ -129,4 +137,60 @@
         }
         return rv;
     }
+
+    @Override
+    public void paintComponent(Graphics g) {
+        boolean b = DefaultLookup.getBoolean(this, ui,
+                "TableHeader.rightAlignSortArrow", false);
+        if (b && sortArrow != null) {
+            //emptyIcon is used so that if the text in the header is right
+            //aligned, or if the column is too narrow, then the text will
+            //be sized appropriately to make room for the icon that is about
+            //to be painted manually here.
+            emptyIcon.width = sortArrow.getIconWidth();
+            emptyIcon.height = sortArrow.getIconHeight();
+            setIcon(emptyIcon);
+            super.paintComponent(g);
+            Point position = computeIconPosition(g);
+            sortArrow.paintIcon(this, g, position.x, position.y);
+        } else {
+            super.paintComponent(g);
+        }
+    }
+
+    private Point computeIconPosition(Graphics g) {
+        FontMetrics fontMetrics = g.getFontMetrics();
+        Rectangle viewR = new Rectangle();
+        Rectangle textR = new Rectangle();
+        Rectangle iconR = new Rectangle();
+        Insets i = getInsets();
+        viewR.x = i.left;
+        viewR.y = i.top;
+        viewR.width = getWidth() - (i.left + i.right);
+        viewR.height = getHeight() - (i.top + i.bottom);
+        SwingUtilities.layoutCompoundLabel(
+            this,
+            fontMetrics,
+            getText(),
+            sortArrow,
+            getVerticalAlignment(),
+            getHorizontalAlignment(),
+            getVerticalTextPosition(),
+            getHorizontalTextPosition(),
+            viewR,
+            iconR,
+            textR,
+            getIconTextGap());
+        int x = getWidth() - i.right - sortArrow.getIconWidth();
+        int y = iconR.y;
+        return new Point(x, y);
+    }
+
+    private class EmptyIcon implements Icon {
+        int width = 0;
+        int height = 0;
+        public void paintIcon(Component c, Graphics g, int x, int y) {}
+        public int getIconWidth() { return width; }
+        public int getIconHeight() { return height; }
+    }
 }
--- a/jdk/src/share/lib/management/jmxremote.access	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/lib/management/jmxremote.access	Wed Jul 05 16:52:18 2017 +0200
@@ -8,7 +8,7 @@
 # passwords.  To be functional, a role must have an entry in
 # both the password and the access files.
 #
-# Default location of this file is $JRE/lib/management/jmxremote.access
+# The default location of this file is $JRE/lib/management/jmxremote.access
 # You can specify an alternate location by specifying a property in 
 # the management config file $JRE/lib/management/management.properties
 # (See that file for details)
@@ -16,7 +16,7 @@
 # The file format for password and access files is syntactically the same
 # as the Properties file format.  The syntax is described in the Javadoc
 # for java.util.Properties.load.
-# Typical access file has multiple  lines, where each line is blank,
+# A typical access file has multiple lines, where each line is blank,
 # a comment (like this one), or an access control entry.
 #
 # An access control entry consists of a role name, and an
@@ -29,10 +29,38 @@
 #                   role can read measurements but cannot perform any action
 #                   that changes the environment of the running program.
 #       "readwrite" grants access to read and write attributes of MBeans,
-#                   to invoke operations on them, and to create or remove them.
-#		    This access should be granted to only trusted clients, 
-#                   since they can potentially interfere with the smooth
-#		    operation of a running program 
+#                   to invoke operations on them, and optionally
+#                   to create or remove them. This access should be granted
+#                   only to trusted clients, since they can potentially
+#                   interfere with the smooth operation of a running program.
+#
+# The "readwrite" access level can optionally be followed by the "create" and/or
+# "unregister" keywords.  The "unregister" keyword grants access to unregister
+# (delete) MBeans.  The "create" keyword grants access to create MBeans of a
+# particular class or of any class matching a particular pattern.  Access
+# should only be granted to create MBeans of known and trusted classes.
+#
+# For example, the following entry would grant readwrite access
+# to "controlRole", as well as access to create MBeans of the class
+# javax.management.monitor.CounterMonitor and to unregister any MBean:
+#  controlRole readwrite \
+#              create javax.management.monitor.CounterMonitorMBean \
+#              unregister
+# or equivalently:
+#  controlRole readwrite unregister create javax.management.monitor.CounterMBean
+#
+# The following entry would grant readwrite access as well as access to create
+# MBeans of any class in the packages javax.management.monitor and
+# javax.management.timer:
+#  controlRole readwrite \
+#              create javax.management.monitor.*,javax.management.timer.* \
+#              unregister
+#
+# The \ character is defined in the Properties file syntax to allow continuation
+# lines as shown here.  A * in a class pattern matches a sequence of characters
+# other than dot (.), so javax.management.monitor.* matches
+# javax.management.monitor.CounterMonitor but not
+# javax.management.monitor.foo.Bar.
 #
 # A given role should have at most one entry in this file.  If a role
 # has no entry, it has no access.
@@ -42,7 +70,10 @@
 #
 # Default access control entries:
 # o The "monitorRole" role has readonly access.  
-# o The "controlRole" role has readwrite access.
+# o The "controlRole" role has readwrite access and can create the standard
+#   Timer and Monitor MBeans defined by the JMX API.
 
 monitorRole   readonly
-controlRole   readwrite
+controlRole   readwrite \
+              create javax.management.monitor.*,javax.management.timer.* \
+              unregister
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/bands.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/bands.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -94,6 +94,7 @@
       assert(!valc->isMalloc);
     }
     xvs.init(u->rp, u->rplimit, valc);
+    CHECK;
     int X = xvs.getInt();
     if (valc->S() != 0) {
       assert(valc->min <= -256);
@@ -117,6 +118,7 @@
     byte XB_byte = (byte) XB;
     byte* XB_ptr = &XB_byte;
     cm.init(u->rp, u->rplimit, XB_ptr, 0, defc, length, null);
+    CHECK;
   } else {
     NOT_PRODUCT(byte* meta_rp0 = u->meta_rp);
     assert(u->meta_rp != null);
@@ -215,8 +217,19 @@
   if (length == 0)  return 0;
   if (total_memo > 0)  return total_memo-1;
   int total = getInt();
+  // overflow checks require that none of the addends are <0,
+  // and that the partial sums never overflow (wrap negative)
+  if (total < 0) {
+    abort("overflow detected");
+    return 0;
+  }
   for (int k = length-1; k > 0; k--) {
+    int prev_total = total;
     total += vs[0].getInt();
+    if (total < prev_total) {
+      abort("overflow detected");
+      return 0;
+    }
   }
   rewind();
   total_memo = total+1;
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/bytes.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/bytes.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -56,7 +56,7 @@
     return;
   }
   byte* oldptr = ptr;
-  ptr = (byte*)::realloc(ptr, len_+1);
+  ptr = (len_ >= PSIZE_MAX) ? null : (byte*)::realloc(ptr, len_+1);
   if (ptr != null)  {
     mtrace('r', oldptr, 0);
     mtrace('m', ptr, len_+1);
@@ -128,7 +128,7 @@
 // Make sure there are 'o' bytes beyond the fill pointer,
 // advance the fill pointer, and return the old fill pointer.
 byte* fillbytes::grow(size_t s) {
-  size_t nlen = b.len+s;
+  size_t nlen = add_size(b.len, s);
   if (nlen <= allocated) {
     b.len = nlen;
     return limit()-s;
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/coding.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/coding.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -814,6 +814,7 @@
     }
     band_rp = vs.rp;
   }
+  CHECK;
 
   // Get an accurate upper limit now.
   vs0.rplimit = band_rp;
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/defines.h	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/defines.h	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -47,11 +47,13 @@
 #define NOT_PRODUCT(xxx)
 #define assert(p)
 #define PRINTCR(args)
+#define VERSION_STRING "%s version %s\n"
 #else
 #define IF_PRODUCT(xxx)
 #define NOT_PRODUCT(xxx) xxx
 #define assert(p) ((p) || assert_failed(#p))
 #define PRINTCR(args)  u->verbose && u->printcr_if_verbose args
+#define VERSION_STRING "%s version non-product %s\n"
 extern "C" void breakpoint();
 extern int assert_failed(const char*);
 #define BREAK (breakpoint())
@@ -79,9 +81,9 @@
 
 #define lengthof(array) (sizeof(array)/sizeof(array[0]))
 
-#define NEW(T, n)    (T*) must_malloc((int)(sizeof(T)*(n)))
-#define U_NEW(T, n)  (T*) u->alloc(sizeof(T)*(n))
-#define T_NEW(T, n)  (T*) u->temp_alloc(sizeof(T)*(n))
+#define NEW(T, n)    (T*) must_malloc((int)(scale_size(n, sizeof(T))))
+#define U_NEW(T, n)  (T*) u->alloc(scale_size(n, sizeof(T)))
+#define T_NEW(T, n)  (T*) u->temp_alloc(scale_size(n, sizeof(T)))
 
 
 // bytes and byte arrays
@@ -153,6 +155,8 @@
 #define CHECK_NULL_(y,p)        _CHECK_DO((p)==null, return y)
 #define CHECK_NULL_0(p)         _CHECK_DO((p)==null, return 0)
 
+#define CHECK_COUNT(t)          if (t < 0){abort("bad value count");} CHECK
+
 #define STR_TRUE   "true"
 #define STR_FALSE  "false"
 
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/main.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/main.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -299,7 +299,7 @@
     case 'J':  argp += 1; break;  // skip ignored -Jxxx parameter
 
     case 'V':
-      fprintf(u.errstrm, "%s version %s\n", nbasename(argv[0]), sccsver);
+      fprintf(u.errstrm, VERSION_STRING, nbasename(argv[0]), sccsver);
       exit(0);
 
     case 'h':
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -523,15 +523,39 @@
   enum {
     MAGIC_BYTES = 4,
     AH_LENGTH_0 = 3,  //minver, majver, options are outside of archive_size
+    AH_LENGTH_0_MAX = AH_LENGTH_0 + 1,  // options might have 2 bytes
     AH_LENGTH   = 26, //maximum archive header length (w/ all fields)
     // Length contributions from optional header fields:
     AH_FILE_HEADER_LEN = 5, // sizehi/lo/next/modtime/files
+    AH_ARCHIVE_SIZE_LEN = 2, // sizehi/lo only; part of AH_FILE_HEADER_LEN
     AH_CP_NUMBER_LEN = 4,  // int/float/long/double
     AH_SPECIAL_FORMAT_LEN = 2, // layouts/band-headers
     AH_LENGTH_MIN = AH_LENGTH
         -(AH_FILE_HEADER_LEN+AH_SPECIAL_FORMAT_LEN+AH_CP_NUMBER_LEN),
+    ARCHIVE_SIZE_MIN = AH_LENGTH_MIN - (AH_LENGTH_0 + AH_ARCHIVE_SIZE_LEN),
     FIRST_READ  = MAGIC_BYTES + AH_LENGTH_MIN
   };
+
+  assert(AH_LENGTH_MIN    == 15); // # of UNSIGNED5 fields required after archive_magic
+  assert(ARCHIVE_SIZE_MIN == 10); // # of UNSIGNED5 fields required after archive_size
+  // An absolute minimum null archive is magic[4], {minver,majver,options}[3],
+  // archive_size[0], cp_counts[8], class_counts[4], for a total of 19 bytes.
+  // (Note that archive_size is optional; it may be 0..10 bytes in length.)
+  // The first read must capture everything up through the options field.
+  // This happens to work even if {minver,majver,options} is a pathological
+  // 15 bytes long.  Legal pack files limit those three fields to 1+1+2 bytes.
+  assert(FIRST_READ >= MAGIC_BYTES + AH_LENGTH_0 * B_MAX);
+
+  // Up through archive_size, the largest possible archive header is
+  // magic[4], {minver,majver,options}[4], archive_size[10].
+  // (Note only the low 12 bits of options are allowed to be non-zero.)
+  // In order to parse archive_size, we need at least this many bytes
+  // in the first read.  Of course, if archive_size_hi is more than
+  // a byte, we probably will fail to allocate the buffer, since it
+  // will be many gigabytes long.  This is a practical, not an
+  // architectural limit to Pack200 archive sizes.
+  assert(FIRST_READ >= MAGIC_BYTES + AH_LENGTH_0_MAX + 2*B_MAX);
+
   bool foreign_buf = (read_input_fn == null);
   byte initbuf[(int)FIRST_READ + (int)C_SLOP + 200];  // 200 is for JAR I/O
   if (foreign_buf) {
@@ -547,7 +571,7 @@
     // There is no way to tell the caller that we used only part of them.
     // Therefore, the caller must use only a bare minimum of read-ahead.
     if (inbytes.len > FIRST_READ) {
-      abort("too much pushback");
+      abort("too much read-ahead");
       return;
     }
     input.set(initbuf, sizeof(initbuf));
@@ -557,7 +581,7 @@
     rplimit += inbytes.len;
     bytes_read += inbytes.len;
   }
-  // Read only 19 bytes, which is certain to contain #archive_size fields,
+  // Read only 19 bytes, which is certain to contain #archive_options fields,
   // but is certain not to overflow past the archive_header.
   input.b.len = FIRST_READ;
   if (!ensure_input(FIRST_READ))
@@ -629,26 +653,25 @@
 #undef ORBIT
   if ((archive_options & ~OPTION_LIMIT) != 0) {
     fprintf(errstrm, "Warning: Illegal archive options 0x%x\n",
-            archive_options);
-    // Do not abort.  If the format really changes, version numbers will bump.
-    //abort("illegal archive options");
+        archive_options);
+    abort("illegal archive options");
+    return;
   }
 
   if ((archive_options & AO_HAVE_FILE_HEADERS) != 0) {
     uint hi = hdr.getInt();
     uint lo = hdr.getInt();
-    archive_size = band::makeLong(hi, lo);
+    julong x = band::makeLong(hi, lo);
+    archive_size = (size_t) x;
+    if (archive_size != x) {
+      // Silly size specified; force overflow.
+      archive_size = PSIZE_MAX+1;
+    }
     hdrVals += 2;
   } else {
     hdrValsSkipped += 2;
   }
 
-  if (archive_size != (size_t)archive_size) {
-    // Silly size specified.
-    abort("archive too large");
-    return;
-  }
-
   // Now we can size the whole archive.
   // Read everything else into a mega-buffer.
   rp = hdr.rp;
@@ -662,9 +685,18 @@
       abort("EOF reading fixed input buffer");
       return;
     }
-  } else if (archive_size > 0) {
-    input.set(U_NEW(byte, (size_t)(header_size_0 + archive_size + C_SLOP)),
-              (size_t) header_size_0 + (size_t)archive_size);
+  } else if (archive_size != 0) {
+    if (archive_size < ARCHIVE_SIZE_MIN) {
+      abort("impossible archive size");  // bad input data
+      return;
+    }
+    if (archive_size < header_size_1) {
+      abort("too much read-ahead");  // somehow we pre-fetched too much?
+      return;
+    }
+    input.set(U_NEW(byte, add_size(header_size_0, archive_size, C_SLOP)),
+              (size_t) header_size_0 + archive_size);
+    CHECK;
     assert(input.limit()[0] == 0);
     // Move all the bytes we read initially into the real buffer.
     input.b.copyFrom(initbuf, header_size);
@@ -673,17 +705,17 @@
   } else {
     // It's more complicated and painful.
     // A zero archive_size means that we must read until EOF.
-    assert(archive_size == 0);
     input.init(CHUNK*2);
     CHECK;
     input.b.len = input.allocated;
     rp = rplimit = input.base();
     // Set up input buffer as if we already read the header:
     input.b.copyFrom(initbuf, header_size);
+    CHECK;
     rplimit += header_size;
     while (ensure_input(input.limit() - rp)) {
       size_t dataSoFar = input_remaining();
-      size_t nextSize = dataSoFar + CHUNK;
+      size_t nextSize = add_size(dataSoFar, CHUNK);
       input.ensureSize(nextSize);
       CHECK;
       input.b.len = input.allocated;
@@ -715,8 +747,10 @@
 
   if ((archive_options & AO_HAVE_FILE_HEADERS) != 0) {
     archive_next_count = hdr.getInt();
+    CHECK_COUNT(archive_next_count);
     archive_modtime = hdr.getInt();
     file_count = hdr.getInt();
+    CHECK_COUNT(file_count);
     hdrVals += 3;
   } else {
     hdrValsSkipped += 3;
@@ -724,7 +758,9 @@
 
   if ((archive_options & AO_HAVE_SPECIAL_FORMATS) != 0) {
     band_headers_size = hdr.getInt();
+    CHECK_COUNT(band_headers_size);
     attr_definition_count = hdr.getInt();
+    CHECK_COUNT(attr_definition_count);
     hdrVals += 2;
   } else {
     hdrValsSkipped += 2;
@@ -744,13 +780,16 @@
       }
     }
     cp_counts[k] = hdr.getInt();
+    CHECK_COUNT(cp_counts[k]);
     hdrVals += 1;
   }
 
   ic_count = hdr.getInt();
+  CHECK_COUNT(ic_count);
   default_class_minver = hdr.getInt();
   default_class_majver = hdr.getInt();
   class_count = hdr.getInt();
+  CHECK_COUNT(class_count);
   hdrVals += 4;
 
   // done with archive_header
@@ -807,7 +846,6 @@
   bytes::of(band_headers.limit(), C_SLOP).clear(_meta_error);
 }
 
-
 void unpacker::finish() {
   if (verbose >= 1) {
     fprintf(errstrm,
@@ -973,12 +1011,12 @@
   // First band:  Read lengths of shared prefixes.
   if (len > PREFIX_SKIP_2)
     cp_Utf8_prefix.readData(len - PREFIX_SKIP_2);
-  NOT_PRODUCT(else cp_Utf8_prefix.readData(0));  // for asserts
+    NOT_PRODUCT(else cp_Utf8_prefix.readData(0));  // for asserts
 
   // Second band:  Read lengths of unshared suffixes:
   if (len > SUFFIX_SKIP_1)
     cp_Utf8_suffix.readData(len - SUFFIX_SKIP_1);
-  NOT_PRODUCT(else cp_Utf8_suffix.readData(0));  // for asserts
+    NOT_PRODUCT(else cp_Utf8_suffix.readData(0));  // for asserts
 
   bytes* allsuffixes = T_NEW(bytes, len);
   CHECK;
@@ -2117,6 +2155,7 @@
 
   field_descr.readData(field_count);
   read_attrs(ATTR_CONTEXT_FIELD, field_count);
+  CHECK;
 
   method_descr.readData(method_count);
   read_attrs(ATTR_CONTEXT_METHOD, method_count);
@@ -2124,6 +2163,7 @@
   CHECK;
 
   read_attrs(ATTR_CONTEXT_CLASS, class_count);
+  CHECK;
 
   read_code_headers();
 
@@ -2150,10 +2190,12 @@
   assert(endsWith(xxx_flags_hi.name, "_flags_hi"));
   if (haveLongFlags)
     xxx_flags_hi.readData(obj_count);
+  CHECK;
 
   band& xxx_flags_lo = ad.xxx_flags_lo();
   assert(endsWith(xxx_flags_lo.name, "_flags_lo"));
   xxx_flags_lo.readData(obj_count);
+  CHECK;
 
   // pre-scan flags, counting occurrences of each index bit
   julong indexMask = ad.flagIndexMask();  // which flag bits are index bits?
@@ -2176,11 +2218,13 @@
   assert(endsWith(xxx_attr_count.name, "_attr_count"));
   // There is one count element for each 1<<16 bit set in flags:
   xxx_attr_count.readData(ad.predefCount(X_ATTR_OVERFLOW));
+  CHECK;
 
   band& xxx_attr_indexes = ad.xxx_attr_indexes();
   assert(endsWith(xxx_attr_indexes.name, "_attr_indexes"));
   int overflowIndexCount = xxx_attr_count.getIntTotal();
   xxx_attr_indexes.readData(overflowIndexCount);
+  CHECK;
   // pre-scan attr indexes, counting occurrences of each value
   for (i = 0; i < overflowIndexCount; i++) {
     idx = xxx_attr_indexes.getInt();
@@ -2211,6 +2255,7 @@
     }
   }
   ad.xxx_attr_calls().readData(backwardCounts);
+  CHECK;
 
   // Read built-in bands.
   // Mostly, these are hand-coded equivalents to readBandData().
@@ -2219,42 +2264,53 @@
 
     count = ad.predefCount(CLASS_ATTR_SourceFile);
     class_SourceFile_RUN.readData(count);
+    CHECK;
 
     count = ad.predefCount(CLASS_ATTR_EnclosingMethod);
     class_EnclosingMethod_RC.readData(count);
     class_EnclosingMethod_RDN.readData(count);
+    CHECK;
 
     count = ad.predefCount(X_ATTR_Signature);
     class_Signature_RS.readData(count);
+    CHECK;
 
     ad.readBandData(X_ATTR_RuntimeVisibleAnnotations);
     ad.readBandData(X_ATTR_RuntimeInvisibleAnnotations);
 
     count = ad.predefCount(CLASS_ATTR_InnerClasses);
     class_InnerClasses_N.readData(count);
+    CHECK;
+
     count = class_InnerClasses_N.getIntTotal();
     class_InnerClasses_RC.readData(count);
     class_InnerClasses_F.readData(count);
+    CHECK;
     // Drop remaining columns wherever flags are zero:
     count -= class_InnerClasses_F.getIntCount(0);
     class_InnerClasses_outer_RCN.readData(count);
     class_InnerClasses_name_RUN.readData(count);
+    CHECK;
 
     count = ad.predefCount(CLASS_ATTR_ClassFile_version);
     class_ClassFile_version_minor_H.readData(count);
     class_ClassFile_version_major_H.readData(count);
+    CHECK;
     break;
 
   case ATTR_CONTEXT_FIELD:
 
     count = ad.predefCount(FIELD_ATTR_ConstantValue);
     field_ConstantValue_KQ.readData(count);
+    CHECK;
 
     count = ad.predefCount(X_ATTR_Signature);
     field_Signature_RS.readData(count);
+    CHECK;
 
     ad.readBandData(X_ATTR_RuntimeVisibleAnnotations);
     ad.readBandData(X_ATTR_RuntimeInvisibleAnnotations);
+    CHECK;
     break;
 
   case ATTR_CONTEXT_METHOD:
@@ -2266,15 +2322,18 @@
     method_Exceptions_N.readData(count);
     count = method_Exceptions_N.getIntTotal();
     method_Exceptions_RC.readData(count);
+    CHECK;
 
     count = ad.predefCount(X_ATTR_Signature);
     method_Signature_RS.readData(count);
+    CHECK;
 
     ad.readBandData(X_ATTR_RuntimeVisibleAnnotations);
     ad.readBandData(X_ATTR_RuntimeInvisibleAnnotations);
     ad.readBandData(METHOD_ATTR_RuntimeVisibleParameterAnnotations);
     ad.readBandData(METHOD_ATTR_RuntimeInvisibleParameterAnnotations);
     ad.readBandData(METHOD_ATTR_AnnotationDefault);
+    CHECK;
     break;
 
   case ATTR_CONTEXT_CODE:
@@ -2286,8 +2345,10 @@
       return;
     }
     code_StackMapTable_N.readData(count);
+    CHECK;
     count = code_StackMapTable_N.getIntTotal();
     code_StackMapTable_frame_T.readData(count);
+    CHECK;
     // the rest of it depends in a complicated way on frame tags
     {
       int fat_frame_count = 0;
@@ -2321,18 +2382,23 @@
       // deal completely with fat frames:
       offset_count += fat_frame_count;
       code_StackMapTable_local_N.readData(fat_frame_count);
+      CHECK;
       type_count += code_StackMapTable_local_N.getIntTotal();
       code_StackMapTable_stack_N.readData(fat_frame_count);
       type_count += code_StackMapTable_stack_N.getIntTotal();
+      CHECK;
       // read the rest:
       code_StackMapTable_offset.readData(offset_count);
       code_StackMapTable_T.readData(type_count);
+      CHECK;
       // (7) [RCH]
       count = code_StackMapTable_T.getIntCount(7);
       code_StackMapTable_RC.readData(count);
+      CHECK;
       // (8) [PH]
       count = code_StackMapTable_T.getIntCount(8);
       code_StackMapTable_P.readData(count);
+      CHECK;
     }
 
     count = ad.predefCount(CODE_ATTR_LineNumberTable);
@@ -2654,6 +2720,7 @@
   code_max_na_locals.readData();
   code_handler_count.readData();
   totalHandlerCount += code_handler_count.getIntTotal();
+  CHECK;
 
   // Read handler specifications.
   // Cf. PackageReader.readCodeHandlers.
@@ -2661,8 +2728,10 @@
   code_handler_end_PO.readData(totalHandlerCount);
   code_handler_catch_PO.readData(totalHandlerCount);
   code_handler_class_RCN.readData(totalHandlerCount);
+  CHECK;
 
   read_attrs(ATTR_CONTEXT_CODE, totalFlagsCount);
+  CHECK;
 }
 
 static inline bool is_in_range(uint n, uint min, uint max) {
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.h	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.h	Wed Jul 05 16:52:18 2017 +0200
@@ -204,7 +204,7 @@
 
   // archive header fields
   int      magic, minver, majver;
-  julong   archive_size;
+  size_t   archive_size;
   int      archive_next_count, archive_options, archive_modtime;
   int      band_headers_size;
   int      file_count, attr_definition_count, ic_count, class_count;
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/utils.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/utils.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -46,14 +46,13 @@
 
 #include "unpack.h"
 
-void* must_malloc(int size) {
-  int msize = size;
-  assert(size >= 0);
+void* must_malloc(size_t size) {
+  size_t msize = size;
   #ifdef USE_MTRACE
-  if (msize < sizeof(int))
+  if (msize >= 0 && msize < sizeof(int))
     msize = sizeof(int);  // see 0xbaadf00d below
   #endif
-  void* ptr = malloc(msize);
+  void* ptr = (msize > PSIZE_MAX) ? null : malloc(msize);
   if (ptr != null) {
     memset(ptr, 0, size);
   } else {
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/utils.h	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/utils.h	Wed Jul 05 16:52:18 2017 +0200
@@ -25,13 +25,31 @@
 
 //Definitions of our util functions
 
-void* must_malloc(int size);
+void* must_malloc(size_t size);
 #ifndef USE_MTRACE
 #define mtrace(c, ptr, size)
 #else
 void mtrace(char c, void* ptr, size_t size);
 #endif
 
+// overflow management
+#define OVERFLOW ((size_t)-1)
+#define PSIZE_MAX (OVERFLOW/2)  /* normal size limit */
+
+inline size_t scale_size(size_t size, size_t scale) {
+  return (size > PSIZE_MAX / scale) ? OVERFLOW : size * scale;
+}
+
+inline size_t add_size(size_t size1, size_t size2) {
+  return ((size1 | size2 | (size1 + size2)) > PSIZE_MAX)
+    ? OVERFLOW
+    : size1 + size2;
+}
+
+inline size_t add_size(size_t size1, size_t size2, int size3) {
+  return add_size(add_size(size1, size2), size3);
+}
+
 // These may be expensive, because they have to go via Java TSD,
 // if the optional u argument is missing.
 struct unpacker;
--- a/jdk/src/share/native/java/util/zip/ZipEntry.c	Mon Apr 27 20:18:40 2009 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
- * Copyright 1998 Sun Microsystems, Inc.  All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-/*
- * Native method support for java.util.zip.ZipEntry
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "jlong.h"
-#include "jvm.h"
-#include "jni.h"
-#include "jni_util.h"
-#include "zip_util.h"
-
-#include "java_util_zip_ZipEntry.h"
-
-#define DEFLATED 8
-#define STORED 0
-
-static jfieldID nameID;
-static jfieldID timeID;
-static jfieldID crcID;
-static jfieldID sizeID;
-static jfieldID csizeID;
-static jfieldID methodID;
-static jfieldID extraID;
-static jfieldID commentID;
-
-JNIEXPORT void JNICALL
-Java_java_util_zip_ZipEntry_initIDs(JNIEnv *env, jclass cls)
-{
-    nameID = (*env)->GetFieldID(env, cls, "name", "Ljava/lang/String;");
-    timeID = (*env)->GetFieldID(env, cls, "time", "J");
-    crcID = (*env)->GetFieldID(env, cls, "crc", "J");
-    sizeID = (*env)->GetFieldID(env, cls, "size", "J");
-    csizeID = (*env)->GetFieldID(env, cls, "csize", "J");
-    methodID = (*env)->GetFieldID(env, cls, "method", "I");
-    extraID = (*env)->GetFieldID(env, cls, "extra", "[B");
-    commentID = (*env)->GetFieldID(env, cls, "comment", "Ljava/lang/String;");
-}
-
-JNIEXPORT void JNICALL
-Java_java_util_zip_ZipEntry_initFields(JNIEnv *env, jobject obj, jlong zentry)
-{
-    jzentry *ze = jlong_to_ptr(zentry);
-    jstring name = (*env)->GetObjectField(env, obj, nameID);
-
-    if (name == 0) {
-        name = (*env)->NewStringUTF(env, ze->name);
-        if (name == 0) {
-            return;
-        }
-        (*env)->SetObjectField(env, obj, nameID, name);
-    }
-    (*env)->SetLongField(env, obj, timeID, (jlong)ze->time & 0xffffffffUL);
-    (*env)->SetLongField(env, obj, crcID, (jlong)ze->crc & 0xffffffffUL);
-    (*env)->SetLongField(env, obj, sizeID, (jlong)ze->size);
-    if (ze->csize == 0) {
-        (*env)->SetLongField(env, obj, csizeID, (jlong)ze->size);
-        (*env)->SetIntField(env, obj, methodID, STORED);
-    } else {
-        (*env)->SetLongField(env, obj, csizeID, (jlong)ze->csize);
-        (*env)->SetIntField(env, obj, methodID, DEFLATED);
-    }
-    if (ze->extra != 0) {
-        unsigned char *bp = (unsigned char *)&ze->extra[0];
-        jsize len = (bp[0] | (bp[1] << 8));
-        jbyteArray extra = (*env)->NewByteArray(env, len);
-        if (extra == 0) {
-            return;
-        }
-        (*env)->SetByteArrayRegion(env, extra, 0, len, &ze->extra[2]);
-        (*env)->SetObjectField(env, obj, extraID, extra);
-    }
-    if (ze->comment != 0) {
-        jstring comment = (*env)->NewStringUTF(env, ze->comment);
-        if (comment == 0) {
-            return;
-        }
-        (*env)->SetObjectField(env, obj, commentID, comment);
-    }
-}
--- a/jdk/src/share/native/java/util/zip/ZipFile.c	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/java/util/zip/ZipFile.c	Wed Jul 05 16:52:18 2017 +0200
@@ -141,12 +141,11 @@
 
 JNIEXPORT jlong JNICALL
 Java_java_util_zip_ZipFile_getEntry(JNIEnv *env, jclass cls, jlong zfile,
-                                    jstring name, jboolean addSlash)
+                                    jbyteArray name, jboolean addSlash)
 {
 #define MAXNAME 1024
     jzfile *zip = jlong_to_ptr(zfile);
-    jsize slen = (*env)->GetStringLength(env, name);
-    jsize ulen = (*env)->GetStringUTFLength(env, name);
+    jsize ulen = (*env)->GetArrayLength(env, name);
     char buf[MAXNAME+2], *path;
     jzentry *ze;
 
@@ -159,7 +158,7 @@
     } else {
         path = buf;
     }
-    (*env)->GetStringUTFRegion(env, name, 0, slen, path);
+    (*env)->GetByteArrayRegion(env, name, 0, ulen, (jbyte *)path);
     path[ulen] = '\0';
     if (addSlash == JNI_FALSE) {
         ze = ZIP_GetEntry(zip, path, 0);
@@ -186,32 +185,85 @@
                                         jint n)
 {
     jzentry *ze = ZIP_GetNextEntry(jlong_to_ptr(zfile), n);
-
     return ptr_to_jlong(ze);
 }
 
 JNIEXPORT jint JNICALL
-Java_java_util_zip_ZipFile_getMethod(JNIEnv *env, jclass cls, jlong zentry)
+Java_java_util_zip_ZipFile_getEntryMethod(JNIEnv *env, jclass cls, jlong zentry)
 {
     jzentry *ze = jlong_to_ptr(zentry);
-
     return ze->csize != 0 ? DEFLATED : STORED;
 }
 
-JNIEXPORT jlong JNICALL
-Java_java_util_zip_ZipFile_getCSize(JNIEnv *env, jclass cls, jlong zentry)
+JNIEXPORT jint JNICALL
+Java_java_util_zip_ZipFile_getEntryFlag(JNIEnv *env, jclass cls, jlong zentry)
 {
     jzentry *ze = jlong_to_ptr(zentry);
+    return ze->flag;
+}
 
+JNIEXPORT jlong JNICALL
+Java_java_util_zip_ZipFile_getEntryCSize(JNIEnv *env, jclass cls, jlong zentry)
+{
+    jzentry *ze = jlong_to_ptr(zentry);
     return ze->csize != 0 ? ze->csize : ze->size;
 }
 
 JNIEXPORT jlong JNICALL
-Java_java_util_zip_ZipFile_getSize(JNIEnv *env, jclass cls, jlong zentry)
+Java_java_util_zip_ZipFile_getEntrySize(JNIEnv *env, jclass cls, jlong zentry)
+{
+    jzentry *ze = jlong_to_ptr(zentry);
+    return ze->size;
+}
+
+JNIEXPORT jlong JNICALL
+Java_java_util_zip_ZipFile_getEntryTime(JNIEnv *env, jclass cls, jlong zentry)
+{
+    jzentry *ze = jlong_to_ptr(zentry);
+    return (jlong)ze->time & 0xffffffffUL;
+}
+
+JNIEXPORT jlong JNICALL
+Java_java_util_zip_ZipFile_getEntryCrc(JNIEnv *env, jclass cls, jlong zentry)
+{
+    jzentry *ze = jlong_to_ptr(zentry);
+    return (jlong)ze->crc & 0xffffffffUL;
+}
+
+JNIEXPORT jbyteArray JNICALL
+Java_java_util_zip_ZipFile_getEntryBytes(JNIEnv *env, jclass cls, jlong zentry, jint type)
 {
     jzentry *ze = jlong_to_ptr(zentry);
-
-    return ze->size;
+    int len = 0;
+    jbyteArray jba = NULL;
+    switch (type) {
+    case java_util_zip_ZipFile_JZENTRY_NAME:
+        if (ze->name != 0) {
+            len = (int)strlen(ze->name);
+            if (len == 0 || (jba = (*env)->NewByteArray(env, len)) == NULL)
+                break;
+            (*env)->SetByteArrayRegion(env, jba, 0, len, (jbyte *)ze->name);
+        }
+        break;
+    case java_util_zip_ZipFile_JZENTRY_EXTRA:
+        if (ze->extra != 0) {
+            unsigned char *bp = (unsigned char *)&ze->extra[0];
+            len = (bp[0] | (bp[1] << 8));
+            if (len <= 0 || (jba = (*env)->NewByteArray(env, len)) == NULL)
+                break;
+            (*env)->SetByteArrayRegion(env, jba, 0, len, &ze->extra[2]);
+        }
+        break;
+    case java_util_zip_ZipFile_JZENTRY_COMMENT:
+        if (ze->comment != 0) {
+            len = (int)strlen(ze->comment);
+            if (len == 0 || (jba = (*env)->NewByteArray(env, len)) == NULL)
+                break;
+            (*env)->SetByteArrayRegion(env, jba, 0, len, (jbyte*)ze->comment);
+        }
+        break;
+    }
+    return jba;
 }
 
 JNIEXPORT jint JNICALL
--- a/jdk/src/share/native/java/util/zip/zip_util.c	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/java/util/zip/zip_util.c	Wed Jul 05 16:52:18 2017 +0200
@@ -512,7 +512,6 @@
 
     /* Clear previous zip error */
     zip->msg = NULL;
-
     /* Get position of END header */
     if ((endpos = findEND(zip, endbuf)) == -1)
         return -1; /* no END header or system error */
@@ -520,7 +519,6 @@
     if (endpos == 0) return 0;  /* only END header present */
 
     freeCEN(zip);
-
    /* Get position and length of central directory */
     cenlen = ENDSIZ(endbuf);
     cenoff = ENDOFF(endbuf);
@@ -935,6 +933,7 @@
     ze->crc   = CENCRC(cen);
     locoff    = CENOFF(cen);
     ze->pos   = -(zip->locpos + locoff);
+    ze->flag  = CENFLG(cen);
 
     if ((ze->name = malloc(nlen + 1)) == NULL) goto Catch;
     memcpy(ze->name, cen + CENHDR, nlen);
--- a/jdk/src/share/native/java/util/zip/zip_util.h	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/java/util/zip/zip_util.h	Wed Jul 05 16:52:18 2017 +0200
@@ -168,6 +168,7 @@
     char *comment;        /* optional zip file comment */
     jbyte *extra;         /* optional extra data */
     jlong pos;            /* position of LOC header or entry data */
+    jint flag;            /* general purpose flag */
 } jzentry;
 
 /*
--- a/jdk/src/share/native/sun/awt/giflib/dgif_lib.c	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/sun/awt/giflib/dgif_lib.c	Wed Jul 05 16:52:18 2017 +0200
@@ -722,6 +722,10 @@
     GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private;
 
     READ(GifFile, &CodeSize, 1);    /* Read Code size from file. */
+    if (CodeSize >= 12) {
+        /* Invalid initial code size: report failure */
+        return GIF_ERROR;
+    }
     BitsPerPixel = CodeSize;
 
     Private->Buf[0] = 0;    /* Input Buffer empty. */
@@ -964,10 +968,13 @@
 
     /* If code cannot fit into RunningBits bits, must raise its size. Note
      * however that codes above 4095 are used for special signaling.  */
-    if (++Private->RunningCode > Private->MaxCode1 &&
-        Private->RunningBits < LZ_BITS) {
-        Private->MaxCode1 <<= 1;
-        Private->RunningBits++;
+    if (++Private->RunningCode > Private->MaxCode1) {
+        if (Private->RunningBits < LZ_BITS) {
+            Private->MaxCode1 <<= 1;
+            Private->RunningBits++;
+        } else {
+            Private->RunningCode = Private->MaxCode1;
+        }
     }
     return GIF_OK;
 }
--- a/jdk/src/share/native/sun/awt/image/gif/gifdecoder.c	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/sun/awt/image/gif/gifdecoder.c	Wed Jul 05 16:52:18 2017 +0200
@@ -191,6 +191,11 @@
     int passht = passinc;
     int len;
 
+    /* We have verified the initial code size on the java layer.
+     * Here we just check bounds for particular indexes. */
+    if (freeCode >= 4096 || maxCode >= 4096) {
+        return 0;
+    }
     if (blockh == 0 || raslineh == 0
         || prefixh == 0 || suffixh == 0
         || outCodeh == 0)
--- a/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	Wed Jul 05 16:52:18 2017 +0200
@@ -216,6 +216,16 @@
 
 #endif /* ! DEBUG */
 
+static int
+getMlibEdgeHint(jint edgeHint) {
+    switch (edgeHint) {
+    case java_awt_image_ConvolveOp_EDGE_NO_OP:
+        return MLIB_EDGE_DST_COPY_SRC;
+    case java_awt_image_ConvolveOp_EDGE_ZERO_FILL:
+    default:
+        return MLIB_EDGE_DST_FILL_ZERO;
+    }
+}
 
 /***************************************************************************
  *                          External Functions                             *
@@ -400,22 +410,10 @@
         }
     }
 
-    if (edgeHint == java_awt_image_ConvolveOp_EDGE_NO_OP) {
-        int kw2 = kwidth>>1;
-        int kh2 = kheight>>1;
-        int bsize = mlib_ImageGetChannels(src)*
-            (mlib_ImageGetType(src) == MLIB_BYTE ? 1 : 2);
-
-        void *dstDataP = mlib_ImageGetData(dst);
-        void *srcDataP = mlib_ImageGetData(src);
-        /* REMIND: Copy a smaller area */
-        memcpy(dstDataP, srcDataP, dst->width*dst->height*bsize);
-    }
-
     cmask = (1<<src->channels)-1;
     status = (*sMlibFns[MLIB_CONVMxN].fptr)(dst, src, kdata, w, h,
                                (w-1)/2, (h-1)/2, scale, cmask,
-                               MLIB_EDGE_DST_NO_WRITE);
+                               getMlibEdgeHint(edgeHint));
 
     if (status != MLIB_SUCCESS) {
         printMedialibError(status);
@@ -660,22 +658,10 @@
         }
     }
 
-    if (edgeHint == java_awt_image_ConvolveOp_EDGE_NO_OP) {
-        int kw2 = kwidth>>1;
-        int kh2 = kheight>>1;
-        int bsize = mlib_ImageGetChannels(src)*
-            (mlib_ImageGetType(src) == MLIB_BYTE ? 1 : 2);
-
-        void *dstDataP = mlib_ImageGetData(dst);
-        void *srcDataP = mlib_ImageGetData(src);
-        /* REMIND: Copy a smaller area */
-        memcpy(dstDataP, srcDataP, dst->width*dst->height*bsize);
-    }
-
     cmask = (1<<src->channels)-1;
     status = (*sMlibFns[MLIB_CONVMxN].fptr)(dst, src, kdata, w, h,
                                (w-1)/2, (h-1)/2, scale, cmask,
-                               MLIB_EDGE_DST_NO_WRITE);
+                               getMlibEdgeHint(edgeHint));
 
     if (status != MLIB_SUCCESS) {
         printMedialibError(status);
--- a/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gfx_impl.h	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gfx_impl.h	Wed Jul 05 16:52:18 2017 +0200
@@ -31,7 +31,7 @@
 /* here come some very simple macros */
 
 /* advance a pointer p by sizeof(type)*n bytes */
-#define INCPN(type,p,n) ((p) = (type*)(p)+n)
+#define INCPN(type,p,n) ((p) = (type*)(p)+(n))
 
 /* advance a pointer by sizeof(type) */
 #define INCP(type,p) INCPN(type,(p),1)
--- a/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c	Wed Jul 05 16:52:18 2017 +0200
@@ -62,6 +62,15 @@
     return rc;
 }
 
+/* These macro help to ensure that we only take part of frame that fits into
+   logical screen. */
+
+/* Ensure that p belongs to [pmin, pmax) interval. Returns fixed point (if fix is needed) */
+#define FIX_POINT(p, pmin, pmax) ( ((p) < (pmin)) ? (pmin) : (((p) > (pmax)) ? (pmax) : (p)))
+/* Ensures that line starting at point p does not exceed boundary pmax.
+   Returns fixed length (if fix is needed) */
+#define FIX_LENGTH(p, len, pmax) ( ((p) + (len)) > (pmax) ? ((pmax) - (p)) : (len))
+
 int
 SplashDecodeGif(Splash * splash, GifFileType * gif)
 {
@@ -70,6 +79,7 @@
     byte_t *pBitmapBits, *pOldBitmapBits;
     int i, j;
     int imageIndex;
+    int cx, cy, cw, ch; /* clamped coordinates */
     const int interlacedOffset[] = { 0, 4, 2, 1, 0 };   /* The way Interlaced image should. */
     const int interlacedJumps[] = { 8, 8, 4, 2, 1 };    /* be read - offsets and jumps... */
 
@@ -79,14 +89,31 @@
 
     SplashCleanup(splash);
 
+    if (!SAFE_TO_ALLOC(gif->SWidth, splash->imageFormat.depthBytes)) {
+        return 0;
+    }
     stride = gif->SWidth * splash->imageFormat.depthBytes;
     if (splash->byteAlignment > 1)
         stride =
             (stride + splash->byteAlignment - 1) & ~(splash->byteAlignment - 1);
 
+    if (!SAFE_TO_ALLOC(gif->SHeight, stride)) {
+        return 0;
+    }
+
+    if (!SAFE_TO_ALLOC(gif->ImageCount, sizeof(SplashImage*))) {
+        return 0;
+    }
     bufferSize = stride * gif->SHeight;
     pBitmapBits = (byte_t *) malloc(bufferSize);
+    if (!pBitmapBits) {
+        return 0;
+    }
     pOldBitmapBits = (byte_t *) malloc(bufferSize);
+    if (!pOldBitmapBits) {
+        free(pBitmapBits);
+        return 0;
+    }
     memset(pBitmapBits, 0, bufferSize);
 
     splash->width = gif->SWidth;
@@ -94,6 +121,11 @@
     splash->frameCount = gif->ImageCount;
     splash->frames = (SplashImage *)
         malloc(sizeof(SplashImage) * gif->ImageCount);
+    if (!splash->frames) {
+      free(pBitmapBits);
+      free(pOldBitmapBits);
+      return 0;
+    }
     memset(splash->frames, 0, sizeof(SplashImage) * gif->ImageCount);
     splash->loopCount = 1;
 
@@ -109,6 +141,11 @@
         int colorCount = 0;
         rgbquad_t colorMapBuf[SPLASH_COLOR_MAP_SIZE];
 
+        cx = FIX_POINT(desc->Left, 0, gif->SWidth);
+        cy = FIX_POINT(desc->Top, 0, gif->SHeight);
+        cw = FIX_LENGTH(desc->Left, desc->Width, gif->SWidth);
+        ch = FIX_LENGTH(desc->Top, desc->Height, gif->SHeight);
+
         if (colorMap) {
             if (colorMap->ColorCount <= SPLASH_COLOR_MAP_SIZE) {
                 colorCount = colorMap->ColorCount;
@@ -195,13 +232,22 @@
             for (; pass < npass; ++pass) {
                 int jump = interlacedJumps[pass];
                 int ofs = interlacedOffset[pass];
-                int numLines = (desc->Height + jump - 1 - ofs) / jump;
+                /* Number of source lines for current pass */
+                int numPassLines = (desc->Height + jump - ofs - 1) / jump;
+                /* Number of lines that fits to dest buffer */
+                int numLines = (ch + jump - ofs - 1) / jump;
 
                 initRect(&srcRect, 0, 0, desc->Width, numLines, 1,
                     desc->Width, pSrc, &srcFormat);
-                initRect(&dstRect, desc->Left, desc->Top + ofs, desc->Width,
-                    numLines, jump, stride, pBitmapBits, &splash->imageFormat);
-                pSrc += convertRect(&srcRect, &dstRect, CVT_ALPHATEST);
+
+                if (numLines > 0) {
+                    initRect(&dstRect, cx, cy + ofs, cw,
+                             numLines , jump, stride, pBitmapBits, &splash->imageFormat);
+
+                    pSrc += convertRect(&srcRect, &dstRect, CVT_ALPHATEST);
+                }
+                // skip extra source data
+                pSrc += (numPassLines - numLines) * srcRect.stride;
             }
         }
 
@@ -209,6 +255,12 @@
 
         splash->frames[imageIndex].bitmapBits =
             (rgbquad_t *) malloc(bufferSize);
+        if (!splash->frames[imageIndex].bitmapBits) {
+            free(pBitmapBits);
+            free(pOldBitmapBits);
+            /* Assuming that callee will take care of splash frames we have already allocated */
+            return 0;
+        }
         memcpy(splash->frames[imageIndex].bitmapBits, pBitmapBits, bufferSize);
 
         SplashInitFrameShape(splash, imageIndex);
@@ -224,27 +276,29 @@
             {
                 ImageRect dstRect;
                 rgbquad_t fillColor = 0;                        // 0 is transparent
-                if (transparentColor < 0) {
+
+                if (transparentColor > 0) {
                     fillColor= MAKE_QUAD_GIF(
                         colorMap->Colors[gif->SBackGroundColor], 0xff);
                 }
-                initRect(&dstRect, desc->Left, desc->Top,
-                    desc->Width, desc->Height, 1, stride,
-                    pBitmapBits, &splash->imageFormat);
+                initRect(&dstRect,
+                         cx, cy, cw, ch,
+                         1, stride,
+                         pBitmapBits, &splash->imageFormat);
                 fillRect(fillColor, &dstRect);
             }
             break;
         case GIF_DISPOSE_RESTORE:
             {
-
-                int lineSize = desc->Width * splash->imageFormat.depthBytes;
-
-                for (j = 0; j < desc->Height; j++) {
-                    int lineIndex = stride * (j + desc->Top) +
-                        desc->Left * splash->imageFormat.depthBytes;
-
-                    memcpy(pBitmapBits + lineIndex, pOldBitmapBits + lineIndex,
-                        lineSize);
+                int lineSize = cw * splash->imageFormat.depthBytes;
+                if (lineSize > 0) {
+                    int lineOffset = cx * splash->imageFormat.depthBytes;
+                    int lineIndex = cy * stride + lineOffset;
+                    for (j=0; j<ch; j++) {
+                        memcpy(pBitmapBits + lineIndex, pOldBitmapBits + lineIndex,
+                               lineSize);
+                        lineIndex += stride;
+                    }
                 }
             }
             break;
--- a/jdk/src/share/native/sun/awt/splashscreen/splashscreen_impl.h	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/sun/awt/splashscreen/splashscreen_impl.h	Wed Jul 05 16:52:18 2017 +0200
@@ -155,6 +155,10 @@
 
 void SplashInitFrameShape(Splash * splash, int imageIndex);
 
+#define SAFE_TO_ALLOC(c, sz)                                               \
+    (((c) > 0) && ((sz) > 0) &&                                            \
+     ((0xffffffffu / ((unsigned int)(c))) > (unsigned int)(sz)))
+
 #define dbgprintf printf
 
 #endif
--- a/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c	Wed Jul 05 16:52:18 2017 +0200
@@ -103,9 +103,17 @@
 
     rowbytes = png_get_rowbytes(png_ptr, info_ptr);
 
+    if (!SAFE_TO_ALLOC(rowbytes, height)) {
+        goto done;
+    }
+
     if ((image_data = (unsigned char *) malloc(rowbytes * height)) == NULL) {
         goto done;
     }
+
+    if (!SAFE_TO_ALLOC(height, sizeof(png_bytep))) {
+        goto done;
+    }
     if ((row_pointers = (png_bytepp) malloc(height * sizeof(png_bytep)))
             == NULL) {
         goto done;
@@ -121,13 +129,28 @@
     splash->width = width;
     splash->height = height;
 
+    if (!SAFE_TO_ALLOC(splash->width, splash->imageFormat.depthBytes)) {
+        goto done;
+    }
     stride = splash->width * splash->imageFormat.depthBytes;
 
+    if (!SAFE_TO_ALLOC(splash->height, stride)) {
+        goto done;
+    }
     splash->frameCount = 1;
     splash->frames = (SplashImage *)
         malloc(sizeof(SplashImage) * splash->frameCount);
+
+    if (splash->frames == NULL) {
+        goto done;
+    }
+
     splash->loopCount = 1;
     splash->frames[0].bitmapBits = malloc(stride * splash->height);
+    if (splash->frames[0].bitmapBits == NULL) {
+        free(splash->frames);
+        goto done;
+    }
     splash->frames[0].delay = 0;
 
     /* FIXME: sort out the real format */
--- a/jdk/src/share/sample/nio/file/Copy.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/share/sample/nio/file/Copy.java	Wed Jul 05 16:52:18 2017 +0200
@@ -52,7 +52,7 @@
 
     /**
      * Copy source file to target location. If {@code prompt} is true then
-     * prompted user to overwrite target if it exists. The {@code preserve}
+     * prompt user to overwrite target if it exists. The {@code preserve}
      * parameter determines if file attributes should be copied/preserved.
      */
     static void copyFile(Path source, Path target, boolean prompt, boolean preserve) {
@@ -63,7 +63,7 @@
             try {
                 source.copyTo(target, options);
             } catch (IOException x) {
-                System.err.format("Unable to create: %s: %s%n", target, x);
+                System.err.format("Unable to copy: %s: %s%n", source, x);
             }
         }
     }
@@ -124,13 +124,13 @@
         public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
             // fix up modification time of directory when done
             if (exc == null && preserve) {
+                Path newdir = target.resolve(source.relativize(dir));
                 try {
                     BasicFileAttributes attrs = Attributes.readBasicFileAttributes(dir);
-                    Path newdir = target.resolve(source.relativize(dir));
                     Attributes.setLastModifiedTime(newdir,
                         attrs.lastModifiedTime(), attrs.resolution());
                 } catch (IOException x) {
-                    // ignore
+                    System.err.format("Unable to copy all attributes to: %s: %s%n", newdir, x);
                 }
             }
             return CONTINUE;
@@ -191,6 +191,7 @@
         try {
             isDir = Attributes.readBasicFileAttributes(target).isDirectory();
         } catch (IOException x) {
+            // ignore (probably target does not exist)
         }
 
         // copy each source file/directory to target
@@ -201,7 +202,7 @@
                 // follow links when copying files
                 EnumSet<FileVisitOption> opts = EnumSet.of(FileVisitOption.FOLLOW_LINKS);
                 TreeCopier tc = new TreeCopier(source[i], dest, prompt, preserve);
-                Files.walkFileTree(source[i], opts, -1, tc);
+                Files.walkFileTree(source[i], opts, Integer.MAX_VALUE, tc);
             } else {
                 // not recursive so source must not be a directory
                 try {
@@ -209,7 +210,9 @@
                         System.err.format("%s: is a directory%n", source[i]);
                         continue;
                     }
-                } catch (IOException x) { }
+                } catch (IOException x) {
+                    // assume not directory
+                }
                 copyFile(source[i], dest, prompt, preserve);
             }
         }
--- a/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -490,8 +490,7 @@
             // if the window manager or any other part of the windowing
             // system sets inappropriate size for this window, we can
             // do nothing but accept it.
-            Rectangle reqBounds = newDimensions.getBounds();
-            Rectangle newBounds = constrainBounds(reqBounds.x, reqBounds.y, reqBounds.width, reqBounds.height);
+            Rectangle newBounds = newDimensions.getBounds();
             Insets insets = newDimensions.getInsets();
             // Inherit isClientSizeSet from newDimensions
             if (newDimensions.isClientSizeSet()) {
@@ -619,46 +618,6 @@
     // This method gets overriden in XFramePeer & XDialogPeer.
     abstract boolean isTargetUndecorated();
 
-    @Override
-    Rectangle constrainBounds(int x, int y, int width, int height) {
-        // We don't restrict the setBounds() operation if the code is trusted.
-        if (!hasWarningWindow()) {
-            return new Rectangle(x, y, width, height);
-        }
-
-        // If it's undecorated or is not currently visible,
-        // apply the same constraints as for the Window.
-        if (!isVisible() || isTargetUndecorated()) {
-            return super.constrainBounds(x, y, width, height);
-        }
-
-        // If it's visible & decorated, constraint the size only
-        int newX = x;
-        int newY = y;
-        int newW = width;
-        int newH = height;
-
-        GraphicsConfiguration gc = ((Window)target).getGraphicsConfiguration();
-        Rectangle sB = gc.getBounds();
-        Insets sIn = ((Window)target).getToolkit().getScreenInsets(gc);
-
-        Rectangle curBounds = getBounds();
-
-        int maxW = Math.max(sB.width - sIn.left - sIn.right, curBounds.width);
-        int maxH = Math.max(sB.height - sIn.top - sIn.bottom, curBounds.height);
-
-        // First make sure the size is withing the visible part of the screen
-        if (newW > maxW) {
-            newW = maxW;
-        }
-
-        if (newH > maxH) {
-            newH = maxH;
-        }
-
-        return new Rectangle(newX, newY, newW, newH);
-    }
-
     /**
      * @see java.awt.peer.ComponentPeer#setBounds
      */
--- a/jdk/src/solaris/classes/sun/awt/X11/XEmbeddedFramePeer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbeddedFramePeer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -196,12 +196,6 @@
         }
     }
 
-    @Override
-    Rectangle constrainBounds(int x, int y, int width, int height) {
-        // We don't constrain the bounds of the EmbeddedFrames
-        return new Rectangle(x, y, width, height);
-    }
-
     // don't use getBounds() inherited from XDecoratedPeer
     public Rectangle getBounds() {
         return new Rectangle(x, y, width, height);
--- a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java	Wed Jul 05 16:52:18 2017 +0200
@@ -568,6 +568,17 @@
     {
         XEvent ev = new XEvent();
         while(true) {
+            // Fix for 6829923: we should gracefully handle toolkit thread interruption
+            if (Thread.currentThread().isInterrupted()) {
+                // We expect interruption from the AppContext.dispose() method only.
+                // If the thread is interrupted from another place, let's skip it
+                // for compatibility reasons. Probably some time later we'll remove
+                // the check for AppContext.isDisposed() and will unconditionally
+                // break the loop here.
+                if (AppContext.getAppContext().isDisposed()) {
+                    break;
+                }
+            }
             awtLock();
             try {
                 if (loop == SECONDARY_LOOP) {
--- a/jdk/src/solaris/classes/sun/awt/X11/XWindow.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XWindow.java	Wed Jul 05 16:52:18 2017 +0200
@@ -156,11 +156,11 @@
     }
 
     XWindow(Component target, long parentWindow) {
-        this(target, parentWindow, target.getBounds());
+        this(target, parentWindow, new Rectangle(target.getBounds()));
     }
 
     XWindow(Component target) {
-        this(target, (target.getParent() == null) ? 0 : getParentWindowID(target), target.getBounds());
+        this(target, (target.getParent() == null) ? 0 : getParentWindowID(target), new Rectangle(target.getBounds()));
     }
 
     XWindow(Object target) {
@@ -198,7 +198,7 @@
             | XConstants.ButtonMotionMask | XConstants.ExposureMask | XConstants.StructureNotifyMask);
 
         if (target != null) {
-            params.putIfNull(BOUNDS, target.getBounds());
+            params.putIfNull(BOUNDS, new Rectangle(target.getBounds()));
         } else {
             params.putIfNull(BOUNDS, new Rectangle(0, 0, MIN_SIZE, MIN_SIZE));
         }
--- a/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -146,6 +146,13 @@
 
         params.put(OVERRIDE_REDIRECT, Boolean.valueOf(isOverrideRedirect()));
 
+        SunToolkit.awtLock();
+        try {
+            windows.add(this);
+        } finally {
+            SunToolkit.awtUnlock();
+        }
+
         cachedFocusableWindow = isFocusableWindow();
 
         Font f = target.getFont();
@@ -173,9 +180,6 @@
 
         GraphicsConfiguration gc = getGraphicsConfiguration();
         ((X11GraphicsDevice)gc.getDevice()).addDisplayChangedListener(this);
-
-        Rectangle bounds = (Rectangle)(params.get(BOUNDS));
-        params.put(BOUNDS, constrainBounds(bounds.x, bounds.y, bounds.width, bounds.height));
     }
 
     protected String getWMName() {
@@ -430,56 +434,6 @@
         return ownerPeer;
     }
 
-    // This method is overriden at the XDecoratedPeer to handle
-    // decorated windows a bit differently.
-    Rectangle constrainBounds(int x, int y, int width, int height) {
-        // We don't restrict the setBounds() operation if the code is trusted.
-        if (!hasWarningWindow()) {
-            return new Rectangle(x, y, width, height);
-        }
-
-        // The window bounds should be within the visible part of the screen
-        int newX = x;
-        int newY = y;
-        int newW = width;
-        int newH = height;
-
-        // Now check each point is within the visible part of the screen
-        GraphicsConfiguration gc = ((Window)target).getGraphicsConfiguration();
-        Rectangle sB = gc.getBounds();
-        Insets sIn = ((Window)target).getToolkit().getScreenInsets(gc);
-
-        int screenX = sB.x + sIn.left;
-        int screenY = sB.y + sIn.top;
-        int screenW = sB.width - sIn.left - sIn.right;
-        int screenH = sB.height - sIn.top - sIn.bottom;
-
-
-        // First make sure the size is withing the visible part of the screen
-        if (newW > screenW) {
-            newW = screenW;
-        }
-
-        if (newH > screenH) {
-            newH = screenH;
-        }
-
-        // Tweak the location if needed
-        if (newX < screenX) {
-            newX = screenX;
-        } else if (newX + newW > screenX + screenW) {
-            newX = screenX + screenW - newW;
-        }
-
-        if (newY < screenY) {
-            newY = screenY;
-        } else if (newY + newH > screenY + screenH) {
-            newY = screenY + screenH - newH;
-        }
-
-        return new Rectangle(newX, newY, newW, newH);
-    }
-
     //Fix for 6318144: PIT:Setting Min Size bigger than current size enlarges
     //the window but fails to revalidate, Sol-CDE
     //This bug is regression for
@@ -488,13 +442,11 @@
     //Note that this function is overriden in XDecoratedPeer so event
     //posting is not changing for decorated peers
     public void setBounds(int x, int y, int width, int height, int op) {
-        Rectangle newBounds = constrainBounds(x, y, width, height);
-
         XToolkit.awtLock();
         try {
             Rectangle oldBounds = getBounds();
 
-            super.setBounds(newBounds.x, newBounds.y, newBounds.width, newBounds.height, op);
+            super.setBounds(x, y, width, height, op);
 
             Rectangle bounds = getBounds();
 
--- a/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java	Wed Jul 05 16:52:18 2017 +0200
@@ -451,9 +451,7 @@
         }
     }
 
-    /*
     @Override
-    */
     public boolean isTranslucencyCapable() {
         return isTranslucencyCapable(getAData());
     }
--- a/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java	Wed Jul 05 16:52:18 2017 +0200
@@ -332,9 +332,7 @@
         // the rest of the flip actions are not supported
     }
 
-    /*
     @Override
-    */
     public boolean isTranslucencyCapable() {
         //XXX: worth checking if 8-bit? Anyway, it doesn't hurt.
         return true;
--- a/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -970,11 +970,12 @@
      *
      * Conditions which could prevent hw acceleration include the toplevel
      * window containing this component being
-     * {@link com.sun.awt.AWTUtilities.Translucency#TRANSLUCENT TRANSLUCENT}.
+     * {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
+     * PERPIXEL_TRANSLUCENT}.
      *
      * @return {@code true} if this component is capable of being hw
      * accelerated, {@code false} otherwise
-     * @see com.sun.awt.AWTUtilities.Translucency#TRANSLUCENT
+     * @see GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
      */
     public boolean isAccelCapable() {
         boolean isTranslucent =
--- a/jdk/src/windows/classes/sun/awt/windows/WDialogPeer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WDialogPeer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -114,12 +114,10 @@
     }
 
     public void reshape(int x, int y, int width, int height) {
-        Rectangle newBounds = constrainBounds(x, y, width, height);
-
         if (((Dialog)target).isUndecorated()) {
-            super.reshape(newBounds.x, newBounds.y, newBounds.width, newBounds.height);
+            super.reshape(x, y, width, height);
         } else {
-            reshapeFrame(newBounds.x, newBounds.y, newBounds.width, newBounds.height);
+            reshapeFrame(x, y, width, height);
         }
     }
 
--- a/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -68,12 +68,6 @@
     public native void synthesizeWmActivate(boolean doActivate);
 
     @Override
-    Rectangle constrainBounds(int x, int y, int width, int height) {
-        // We don't constrain the bounds of the EmbeddedFrames
-        return new Rectangle(x, y, width, height);
-    }
-
-    @Override
     public boolean isAccelCapable() {
         // REMIND: Temp workaround for issues with using HW acceleration
         // in the browser on Vista when DWM is enabled
--- a/jdk/src/windows/classes/sun/awt/windows/WFramePeer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WFramePeer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -89,12 +89,10 @@
     }
 
     public void reshape(int x, int y, int width, int height) {
-        Rectangle newBounds = constrainBounds(x, y, width, height);
-
         if (((Frame)target).isUndecorated()) {
-            super.reshape(newBounds.x, newBounds.y, newBounds.width, newBounds.height);
+            super.reshape(x, y, width, height);
         } else {
-            reshapeFrame(newBounds.x, newBounds.y, newBounds.width, newBounds.height);
+            reshapeFrame(x, y, width, height);
         }
     }
 
--- a/jdk/src/windows/classes/sun/awt/windows/WPanelPeer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WPanelPeer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -99,45 +99,4 @@
     public Insets insets() {
         return getInsets();
     }
-
-    private native void pRestack(Object[] peers);
-    private void restack(Container cont, Vector peers) {
-        for (int i = 0; i < cont.getComponentCount(); i++) {
-            Component comp = cont.getComponent(i);
-            if (!comp.isLightweight()) {
-                ComponentPeer peer = comp.getPeer();
-                if (peer != null && (peer instanceof WComponentPeer))
-                {
-                    peers.add(peer);
-                } else {
-                    if (log.isLoggable(Level.FINE)) {
-                        log.log(Level.FINE,
-                                "peer of a {0} is null or not a WComponentPeer: {1}.",
-                                new Object[]{comp, peer});
-                    }
-                }
-            }
-            if (comp.isLightweight() && comp instanceof Container) {
-                restack((Container)comp, peers);
-            }
-        }
-    }
-
-    /**
-     * @see java.awt.peer.ContainerPeer#restack
-     */
-    public void restack() {
-        Vector peers = new Vector();
-        peers.add(this);
-        Container cont = (Container)target;
-        restack(cont, peers);
-        pRestack(peers.toArray());
-    }
-
-    /**
-     * @see java.awt.peer.ContainerPeer#isRestackSupported
-     */
-    public boolean isRestackSupported() {
-        return true;
-    }
 }
--- a/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java	Wed Jul 05 16:52:18 2017 +0200
@@ -335,16 +335,14 @@
     }
 
     private void updateShape() {
-        // Shape shape = ((Window)target).getShape();
-        Shape shape = AWTAccessor.getWindowAccessor().getShape((Window)target);
+        Shape shape = ((Window)target).getShape();
         if (shape != null) {
             applyShape(Region.getInstance(shape, null));
         }
     }
 
     private void updateOpacity() {
-        // float opacity = ((Window)target).getOpacity();
-        float opacity = AWTAccessor.getWindowAccessor().getOpacity((Window)target);
+        float opacity = ((Window)target).getOpacity();
         if (opacity < 1.0f) {
             setOpacity(opacity);
         }
@@ -546,81 +544,16 @@
      private volatile int sysW = 0;
      private volatile int sysH = 0;
 
-     Rectangle constrainBounds(int x, int y, int width, int height) {
-         GraphicsConfiguration gc = this.winGraphicsConfig;
-
-         // We don't restrict the setBounds() operation if the code is trusted.
-         if (!hasWarningWindow() || gc == null) {
-             return new Rectangle(x, y, width, height);
-         }
-
-         int newX = x;
-         int newY = y;
-         int newW = width;
-         int newH = height;
-
-         Rectangle sB = gc.getBounds();
-         Insets sIn = Toolkit.getDefaultToolkit().getScreenInsets(gc);
-
-         int screenW = sB.width - sIn.left - sIn.right;
-         int screenH = sB.height - sIn.top - sIn.bottom;
-
-         // If it's undecorated or is not currently visible
-         if (!AWTAccessor.getComponentAccessor().isVisible_NoClientCode(
-                     (Component)target) || isTargetUndecorated())
-         {
-             // Now check each point is within the visible part of the screen
-             int screenX = sB.x + sIn.left;
-             int screenY = sB.y + sIn.top;
-
-             // First make sure the size is within the visible part of the screen
-             if (newW > screenW) {
-                 newW = screenW;
-             }
-             if (newH > screenH) {
-                 newH = screenH;
-             }
-
-             // Tweak the location if needed
-             if (newX < screenX) {
-                 newX = screenX;
-             } else if (newX + newW > screenX + screenW) {
-                 newX = screenX + screenW - newW;
-             }
-             if (newY < screenY) {
-                 newY = screenY;
-             } else if (newY + newH > screenY + screenH) {
-                 newY = screenY + screenH - newH;
-             }
-         } else {
-             int maxW = Math.max(screenW, sysW);
-             int maxH = Math.max(screenH, sysH);
-
-             // Make sure the size is withing the visible part of the screen
-             // OR less that the current size of the window.
-             if (newW > maxW) {
-                 newW = maxW;
-             }
-             if (newH > maxH) {
-                 newH = maxH;
-             }
-         }
-
-         return new Rectangle(newX, newY, newW, newH);
-     }
-
      public native void repositionSecurityWarning();
 
      @Override
      public void setBounds(int x, int y, int width, int height, int op) {
-         Rectangle newBounds = constrainBounds(x, y, width, height);
+         sysX = x;
+         sysY = y;
+         sysW = width;
+         sysH = height;
 
-         sysX = newBounds.x;
-         sysY = newBounds.y;
-         sysW = newBounds.width;
-         sysH = newBounds.height;
-
-         super.setBounds(newBounds.x, newBounds.y, newBounds.width, newBounds.height, op);
+         super.setBounds(x, y, width, height, op);
      }
 
     @Override
@@ -675,11 +608,13 @@
     public void setOpaque(boolean isOpaque) {
         Window target = (Window)getTarget();
 
-        SunToolkit sunToolkit = (SunToolkit)target.getToolkit();
-        if (!sunToolkit.isWindowTranslucencySupported() ||
-            !sunToolkit.isTranslucencyCapable(target.getGraphicsConfiguration()))
-        {
-            return;
+        if (!isOpaque) {
+            SunToolkit sunToolkit = (SunToolkit)target.getToolkit();
+            if (!sunToolkit.isWindowTranslucencySupported() ||
+                !sunToolkit.isTranslucencyCapable(target.getGraphicsConfiguration()))
+            {
+                return;
+            }
         }
 
         boolean opaqueChanged = this.isOpaque != isOpaque;
@@ -713,9 +648,9 @@
             // its shape only. To restore the correct visual appearance
             // of the window (i.e. w/ the correct shape) we have to reset
             // the shape.
-            Shape shape = AWTAccessor.getWindowAccessor().getShape(target);
+            Shape shape = ((Window)target).getShape();
             if (shape != null) {
-                AWTAccessor.getWindowAccessor().setShape(target, shape);
+                ((Window)target).setShape(shape);
             }
         }
 
@@ -729,6 +664,11 @@
             return;
         }
 
+        Component target = (Component)this.target;
+        if (target.getWidth() <= 0 || target.getHeight() <= 0) {
+            return;
+        }
+
         TranslucentWindowPainter currentPainter = painter;
         if (currentPainter != null) {
             currentPainter.updateWindow(backBuffer);
--- a/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java	Wed Jul 05 16:52:18 2017 +0200
@@ -354,16 +354,9 @@
         }
     }
 
-    // invoke by FileFileImpl to release lock
     @Override
-    void release(FileLockImpl fli) throws IOException {
-        try {
-            begin();
-            nd.release(fdObj, fli.position(), fli.size());
-            removeFromFileLockTable(fli);
-        } finally {
-            end();
-        }
+    protected void implRelease(FileLockImpl fli) throws IOException {
+        nd.release(fdObj, fli.position(), fli.size());
     }
 
     /**
--- a/jdk/src/windows/classes/sun/security/mscapi/RSAKeyPairGenerator.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/classes/sun/security/mscapi/RSAKeyPairGenerator.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 import java.security.spec.RSAKeyGenParameterSpec;
 
 import sun.security.jca.JCAUtil;
+import sun.security.rsa.RSAKeyFactory;
 
 /**
  * RSA keypair generator.
@@ -43,8 +44,8 @@
 public final class RSAKeyPairGenerator extends KeyPairGeneratorSpi {
 
     // Supported by Microsoft Base, Strong and Enhanced Cryptographic Providers
-    private static final int KEY_SIZE_MIN = 512; // disallow MSCAPI min. of 384
-    private static final int KEY_SIZE_MAX = 16384;
+    static final int KEY_SIZE_MIN = 512; // disallow MSCAPI min. of 384
+    static final int KEY_SIZE_MAX = 16384;
     private static final int KEY_SIZE_DEFAULT = 1024;
 
     // size of the key to generate, KEY_SIZE_MIN <= keySize <= KEY_SIZE_MAX
@@ -59,7 +60,14 @@
     // random is always ignored
     public void initialize(int keySize, SecureRandom random) {
 
-        checkKeySize(keySize);
+        try {
+            RSAKeyFactory.checkKeyLengths(keySize, null,
+                KEY_SIZE_MIN, KEY_SIZE_MAX);
+        } catch (InvalidKeyException e) {
+            throw new InvalidParameterException(e.getMessage());
+        }
+
+        this.keySize = keySize;
     }
 
     // second initialize method. See JCA doc
@@ -67,21 +75,31 @@
     public void initialize(AlgorithmParameterSpec params, SecureRandom random)
             throws InvalidAlgorithmParameterException {
 
+        int tmpSize;
         if (params == null) {
-            checkKeySize(KEY_SIZE_DEFAULT);
-
+            tmpSize = KEY_SIZE_DEFAULT;
         } else if (params instanceof RSAKeyGenParameterSpec) {
 
             if (((RSAKeyGenParameterSpec) params).getPublicExponent() != null) {
                 throw new InvalidAlgorithmParameterException
                     ("Exponent parameter is not supported");
             }
-            checkKeySize(((RSAKeyGenParameterSpec) params).getKeysize());
+            tmpSize = ((RSAKeyGenParameterSpec) params).getKeysize();
 
         } else {
             throw new InvalidAlgorithmParameterException
                 ("Params must be an instance of RSAKeyGenParameterSpec");
         }
+
+        try {
+            RSAKeyFactory.checkKeyLengths(tmpSize, null,
+                KEY_SIZE_MIN, KEY_SIZE_MAX);
+        } catch (InvalidKeyException e) {
+            throw new InvalidAlgorithmParameterException(
+                "Invalid Key sizes", e);
+        }
+
+        this.keySize = tmpSize;
     }
 
     // generate the keypair. See JCA doc
@@ -95,18 +113,6 @@
         return new KeyPair(keys.getPublic(), keys.getPrivate());
     }
 
-    private void checkKeySize(int keySize) throws InvalidParameterException {
-        if (keySize < KEY_SIZE_MIN) {
-            throw new InvalidParameterException
-                ("Key size must be at least " + KEY_SIZE_MIN + " bits");
-        }
-        if (keySize > KEY_SIZE_MAX) {
-            throw new InvalidParameterException
-                ("Key size must be " + KEY_SIZE_MAX + " bits or less");
-        }
-        this.keySize = keySize;
-    }
-
     private static native RSAKeyPair generateRSAKeyPair(int keySize,
         String keyContainerName);
 }
--- a/jdk/src/windows/classes/sun/security/mscapi/RSASignature.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/classes/sun/security/mscapi/RSASignature.java	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,6 +38,9 @@
 import java.security.Signature;
 import java.security.SignatureSpi;
 import java.security.SignatureException;
+import java.math.BigInteger;
+
+import sun.security.rsa.RSAKeyFactory;
 
 /**
  * RSA signature implementation. Supports RSA signing using PKCS#1 v1.5 padding.
@@ -124,7 +127,16 @@
 
             // convert key to MSCAPI format
 
-            byte[] modulusBytes = rsaKey.getModulus().toByteArray();
+            BigInteger modulus = rsaKey.getModulus();
+            BigInteger exponent =  rsaKey.getPublicExponent();
+
+            // Check against the local and global values to make sure
+            // the sizes are ok.  Round up to the nearest byte.
+            RSAKeyFactory.checkKeyLengths(((modulus.bitLength() + 7) & ~7),
+                exponent, -1, RSAKeyPairGenerator.KEY_SIZE_MAX);
+
+            byte[] modulusBytes = modulus.toByteArray();
+            byte[] exponentBytes = exponent.toByteArray();
 
             // Adjust key length due to sign bit
             int keyBitLength = (modulusBytes[0] == 0)
@@ -132,8 +144,7 @@
                 : modulusBytes.length * 8;
 
             byte[] keyBlob = generatePublicKeyBlob(
-                keyBitLength, modulusBytes,
-                rsaKey.getPublicExponent().toByteArray());
+                keyBitLength, modulusBytes, exponentBytes);
 
             publicKey = importPublicKey(keyBlob, keyBitLength);
 
@@ -166,12 +177,11 @@
         }
         privateKey = (sun.security.mscapi.RSAPrivateKey) key;
 
-        // Determine byte length from bit length
-        int keySize = (privateKey.bitLength() + 7) >> 3;
-
-        if (keySize < 64)
-            throw new InvalidKeyException(
-                "RSA keys must be at least 512 bits long");
+        // Check against the local and global values to make sure
+        // the sizes are ok.  Round up to nearest byte.
+        RSAKeyFactory.checkKeyLengths(((privateKey.bitLength() + 7) & ~7),
+            null, RSAKeyPairGenerator.KEY_SIZE_MIN,
+            RSAKeyPairGenerator.KEY_SIZE_MAX);
 
         if (needsReset) {
             messageDigest.reset();
--- a/jdk/src/windows/native/sun/nio/ch/FileDispatcherImpl.c	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/native/sun/nio/ch/FileDispatcherImpl.c	Wed Jul 05 16:52:18 2017 +0200
@@ -414,7 +414,7 @@
     o.Offset = lowPos;
     o.OffsetHigh = highPos;
     result = UnlockFileEx(h, 0, lowNumBytes, highNumBytes, &o);
-    if (result == 0) {
+    if (result == 0 && GetLastError() != ERROR_NOT_LOCKED) {
         JNU_ThrowIOExceptionWithLastError(env, "Release failed");
     }
 }
--- a/jdk/src/windows/native/sun/security/krb5/NativeCreds.c	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/native/sun/security/krb5/NativeCreds.c	Wed Jul 05 16:52:18 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -73,6 +73,7 @@
  * Function prototypes for internal routines
  *
  */
+BOOL native_debug = 0;
 
 BOOL PackageConnectLookup(PHANDLE,PULONG);
 
@@ -113,208 +114,221 @@
 
     jclass cls;
     JNIEnv *env;
+    jfieldID fldDEBUG;
 
     if ((*jvm)->GetEnv(jvm, (void **)&env, JNI_VERSION_1_2)) {
         return JNI_EVERSION; /* JNI version not supported */
     }
 
+    cls = (*env)->FindClass(env,"sun/security/krb5/internal/Krb5");
+    if (cls == NULL) {
+        printf("LSA: Couldn't find Krb5\n");
+        return JNI_ERR;
+    }
+    fldDEBUG = (*env)->GetStaticFieldID(env, cls, "DEBUG", "Z");
+    if (fldDEBUG == NULL) {
+        printf("LSA: Krb5 has no DEBUG field\n");
+        return JNI_ERR;
+    }
+    native_debug = (*env)->GetStaticBooleanField(env, cls, fldDEBUG);
+
     cls = (*env)->FindClass(env,"sun/security/krb5/internal/Ticket");
 
     if (cls == NULL) {
-        printf("Couldn't find Ticket\n");
+        printf("LSA: Couldn't find Ticket\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found Ticket\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found Ticket\n");
+    }
 
     ticketClass = (*env)->NewWeakGlobalRef(env,cls);
     if (ticketClass == NULL) {
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Made NewWeakGlobalRef\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Made NewWeakGlobalRef\n");
+    }
 
     cls = (*env)->FindClass(env, "sun/security/krb5/PrincipalName");
 
     if (cls == NULL) {
-        printf("Couldn't find PrincipalName\n");
+        printf("LSA: Couldn't find PrincipalName\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found PrincipalName\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found PrincipalName\n");
+    }
 
     principalNameClass = (*env)->NewWeakGlobalRef(env,cls);
     if (principalNameClass == NULL) {
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Made NewWeakGlobalRef\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Made NewWeakGlobalRef\n");
+    }
 
     cls = (*env)->FindClass(env,"sun/security/util/DerValue");
 
     if (cls == NULL) {
-        printf("Couldn't find DerValue\n");
+        printf("LSA: Couldn't find DerValue\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found DerValue\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found DerValue\n");
+    }
 
     derValueClass = (*env)->NewWeakGlobalRef(env,cls);
     if (derValueClass == NULL) {
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Made NewWeakGlobalRef\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Made NewWeakGlobalRef\n");
+    }
 
     cls = (*env)->FindClass(env,"sun/security/krb5/EncryptionKey");
 
     if (cls == NULL) {
-        printf("Couldn't find EncryptionKey\n");
+        printf("LSA: Couldn't find EncryptionKey\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found EncryptionKey\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found EncryptionKey\n");
+    }
 
     encryptionKeyClass = (*env)->NewWeakGlobalRef(env,cls);
     if (encryptionKeyClass == NULL) {
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Made NewWeakGlobalRef\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Made NewWeakGlobalRef\n");
+    }
 
     cls = (*env)->FindClass(env,"sun/security/krb5/internal/TicketFlags");
 
     if (cls == NULL) {
-        printf("Couldn't find TicketFlags\n");
+        printf("LSA: Couldn't find TicketFlags\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found TicketFlags\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found TicketFlags\n");
+    }
 
     ticketFlagsClass = (*env)->NewWeakGlobalRef(env,cls);
     if (ticketFlagsClass == NULL) {
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Made NewWeakGlobalRef\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Made NewWeakGlobalRef\n");
+    }
 
     cls = (*env)->FindClass(env,"sun/security/krb5/internal/KerberosTime");
 
     if (cls == NULL) {
-        printf("Couldn't find KerberosTime\n");
+        printf("LSA: Couldn't find KerberosTime\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found KerberosTime\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found KerberosTime\n");
+    }
 
     kerberosTimeClass = (*env)->NewWeakGlobalRef(env,cls);
     if (kerberosTimeClass == NULL) {
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Made NewWeakGlobalRef\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Made NewWeakGlobalRef\n");
+    }
 
     cls = (*env)->FindClass(env,"java/lang/String");
 
     if (cls == NULL) {
-        printf("Couldn't find String\n");
+        printf("LSA: Couldn't find String\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found String\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found String\n");
+    }
 
     javaLangStringClass = (*env)->NewWeakGlobalRef(env,cls);
     if (javaLangStringClass == NULL) {
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Made NewWeakGlobalRef\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Made NewWeakGlobalRef\n");
+    }
 
     derValueConstructor = (*env)->GetMethodID(env, derValueClass,
                                             "<init>", "([B)V");
     if (derValueConstructor == 0) {
-        printf("Couldn't find DerValue constructor\n");
+        printf("LSA: Couldn't find DerValue constructor\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found DerValue constructor\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found DerValue constructor\n");
+    }
 
     ticketConstructor = (*env)->GetMethodID(env, ticketClass,
                             "<init>", "(Lsun/security/util/DerValue;)V");
     if (ticketConstructor == 0) {
-        printf("Couldn't find Ticket constructor\n");
+        printf("LSA: Couldn't find Ticket constructor\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found Ticket constructor\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found Ticket constructor\n");
+    }
 
     principalNameConstructor = (*env)->GetMethodID(env, principalNameClass,
                                     "<init>", "([Ljava/lang/String;)V");
     if (principalNameConstructor == 0) {
-        printf("Couldn't find PrincipalName constructor\n");
+        printf("LSA: Couldn't find PrincipalName constructor\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found PrincipalName constructor\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found PrincipalName constructor\n");
+    }
 
     encryptionKeyConstructor = (*env)->GetMethodID(env, encryptionKeyClass,
                                             "<init>", "(I[B)V");
     if (encryptionKeyConstructor == 0) {
-        printf("Couldn't find EncryptionKey constructor\n");
+        printf("LSA: Couldn't find EncryptionKey constructor\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found EncryptionKey constructor\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found EncryptionKey constructor\n");
+    }
 
     ticketFlagsConstructor = (*env)->GetMethodID(env, ticketFlagsClass,
                                             "<init>", "(I[B)V");
     if (ticketFlagsConstructor == 0) {
-        printf("Couldn't find TicketFlags constructor\n");
+        printf("LSA: Couldn't find TicketFlags constructor\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found TicketFlags constructor\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found TicketFlags constructor\n");
+    }
 
     kerberosTimeConstructor = (*env)->GetMethodID(env, kerberosTimeClass,
                                     "<init>", "(Ljava/lang/String;)V");
     if (kerberosTimeConstructor == 0) {
-        printf("Couldn't find KerberosTime constructor\n");
+        printf("LSA: Couldn't find KerberosTime constructor\n");
         return JNI_ERR;
     }
-    #ifdef DEBUG
-    printf("Found KerberosTime constructor\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Found KerberosTime constructor\n");
+    }
 
     // load the setRealm method in PrincipalName
     setRealmMethod = (*env)->GetMethodID(env, principalNameClass,
                                     "setRealm", "(Ljava/lang/String;)V");
     if (setRealmMethod == 0) {
-        printf("Couldn't find setRealm in PrincipalName\n");
+        printf("LSA: Couldn't find setRealm in PrincipalName\n");
         return JNI_ERR;
     }
 
-    #ifdef DEBUG
-    printf("Finished OnLoad processing\n");
-    #endif /* DEBUG */
+    if (native_debug) {
+        printf("LSA: Finished OnLoad processing\n");
+    }
 
     return JNI_VERSION_1_2;
 }
@@ -389,16 +403,25 @@
 
         if (krbcredsConstructor == 0) {
             krbcredsConstructor = (*env)->GetMethodID(env, krbcredsClass, "<init>",
-                    "(Lsun/security/krb5/internal/Ticket;Lsun/security/krb5/PrincipalName;Lsun/security/krb5/PrincipalName;Lsun/security/krb5/EncryptionKey;Lsun/security/krb5/internal/TicketFlags;Lsun/security/krb5/internal/KerberosTime;Lsun/security/krb5/internal/KerberosTime;Lsun/security/krb5/internal/KerberosTime;Lsun/security/krb5/internal/KerberosTime;Lsun/security/krb5/internal/HostAddresses;)V");
+                    "(Lsun/security/krb5/internal/Ticket;"
+                    "Lsun/security/krb5/PrincipalName;"
+                    "Lsun/security/krb5/PrincipalName;"
+                    "Lsun/security/krb5/EncryptionKey;"
+                    "Lsun/security/krb5/internal/TicketFlags;"
+                    "Lsun/security/krb5/internal/KerberosTime;"
+                    "Lsun/security/krb5/internal/KerberosTime;"
+                    "Lsun/security/krb5/internal/KerberosTime;"
+                    "Lsun/security/krb5/internal/KerberosTime;"
+                    "Lsun/security/krb5/internal/HostAddresses;)V");
             if (krbcredsConstructor == 0) {
-                printf("Couldn't find sun.security.krb5.Credentials constructor\n");
+                printf("LSA: Couldn't find sun.security.krb5.Credentials constructor\n");
                 break;
             }
         }
 
-        #ifdef DEBUG
-        printf("Found KrbCreds constructor\n");
-        #endif
+        if (native_debug) {
+            printf("LSA: Found KrbCreds constructor\n");
+        }
 
         //
         // Get the logon handle and package ID from the
@@ -407,9 +430,9 @@
         if (!PackageConnectLookup(&LogonHandle, &PackageId))
             break;
 
-        #ifdef DEBUG
-        printf("Got handle to Kerberos package\n");
-        #endif /* DEBUG */
+        if (native_debug) {
+            printf("LSA: Got handle to Kerberos package\n");
+        }
 
         // Get the MS TGT from cache
         CacheRequest.MessageType = KerbRetrieveTicketMessage;
@@ -426,9 +449,9 @@
                         &SubStatus
                         );
 
-        #ifdef DEBUG
-        printf("Response size is %d\n", rspSize);
-        #endif
+        if (native_debug) {
+            printf("LSA: Response size is %d\n", rspSize);
+        }
 
         if (!LSA_SUCCESS(Status) || !LSA_SUCCESS(SubStatus)) {
             if (!LSA_SUCCESS(Status)) {
@@ -467,9 +490,9 @@
         }
 
         if (ignore_cache) {
-            #ifdef DEBUG
-            printf("MS TGT in cache is invalid/not supported; request new ticket\n");
-            #endif /* DEBUG */
+            if (native_debug) {
+                printf("LSA: MS TGT in cache is invalid/not supported; request new ticket\n");
+            }
 
             // use domain to request Ticket
             Status = ConstructTicketRequest(msticket->TargetDomainName,
@@ -493,9 +516,9 @@
                         &SubStatus
                         );
 
-            #ifdef DEBUG
-            printf("Response size is %d\n", responseSize);
-            #endif /* DEBUG */
+            if (native_debug) {
+                printf("LSA: Response size is %d\n", responseSize);
+            }
 
             if (!LSA_SUCCESS(Status) || !LSA_SUCCESS(SubStatus)) {
                 if (!LSA_SUCCESS(Status)) {
@@ -788,7 +811,9 @@
     static WCHAR szMsgBuf[MAX_MSG_SIZE];
     DWORD dwRes;
 
-    printf("Error calling function %s: %lu\n", szAPI, dwError);
+    if (native_debug) {
+        printf("LSA: Error calling function %s: %lu\n", szAPI, dwError);
+    }
 
     dwRes = FormatMessage (
             FORMAT_MESSAGE_FROM_SYSTEM,
@@ -798,11 +823,13 @@
             szMsgBuf,
             MAX_MSG_SIZE,
             NULL);
-    if (0 == dwRes) {
-        printf("FormatMessage failed with %d\n", GetLastError());
-        // ExitProcess(EXIT_FAILURE);
-    } else {
-        printf("%S",szMsgBuf);
+    if (native_debug) {
+        if (0 == dwRes) {
+            printf("LSA: FormatMessage failed with %d\n", GetLastError());
+            // ExitProcess(EXIT_FAILURE);
+        } else {
+            printf("LSA: %S",szMsgBuf);
+        }
     }
 }
 
@@ -896,17 +923,19 @@
             ((domainName.Length)*sizeof(WCHAR) + sizeof(UNICODE_NULL)));
     wcsncpy(realm, domainName.Buffer, domainName.Length/sizeof(WCHAR));
 
-    #ifdef DEBUG
-    printf("Principal domain is %S\n", realm);
-    printf("Name type is %x\n", principalName->NameType);
-    printf("Name count is %x\n", principalName->NameCount);
-    #endif
+    if (native_debug) {
+        printf("LSA: Principal domain is %S\n", realm);
+        printf("LSA: Name type is %x\n", principalName->NameType);
+        printf("LSA: Name count is %x\n", principalName->NameCount);
+    }
 
     nameCount = principalName->NameCount;
     stringArray = (*env)->NewObjectArray(env, nameCount,
                             javaLangStringClass, NULL);
     if (stringArray == NULL) {
-        printf("Can't allocate String array for Principal\n");
+        if (native_debug) {
+            printf("LSA: Can't allocate String array for Principal\n");
+        }
         LocalFree(realm);
         return principal;
     }
@@ -941,6 +970,17 @@
     // First, need to build a byte array
     jbyteArray ary;
     jobject encryptionKey = NULL;
+    unsigned int i;
+
+    for (i=0; i<cryptoKey->Length; i++) {
+        if (cryptoKey->Value[i]) break;
+    }
+    if (i == cryptoKey->Length) {
+        if (native_debug) {
+            printf("LSA: Session key all zero. Stop.\n");
+        }
+        return NULL;
+    }
 
     ary = (*env)->NewByteArray(env,cryptoKey->Length);
     (*env)->SetByteArrayRegion(env, ary, (jsize) 0, cryptoKey->Length,
@@ -1005,9 +1045,9 @@
                 hour,
                 minute,
                 second );
-        #ifdef DEBUG
-        printf("%S\n", (wchar_t *)timeString);
-        #endif /* DEBUG */
+        if (native_debug) {
+            printf("LSA: %S\n", (wchar_t *)timeString);
+        }
         stringTime = (*env)->NewString(env, timeString,
                 (sizeof(timeString)/sizeof(WCHAR))-1);
         if (stringTime != NULL) { // everything's OK so far
--- a/jdk/src/windows/native/sun/windows/awt_Component.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Component.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -1843,8 +1843,13 @@
       case WM_AWT_SETALWAYSONTOP: {
         AwtWindow* w = (AwtWindow*)lParam;
         BOOL value = (BOOL)wParam;
+        UINT flags = SWP_NOMOVE | SWP_NOSIZE;
+        // transient windows shouldn't change the owner window's position in the z-order
+        if (w->IsRetainingHierarchyZOrder()) {
+            flags |= SWP_NOOWNERZORDER;
+        }
         ::SetWindowPos(w->GetHWnd(), (value != 0 ? HWND_TOPMOST : HWND_NOTOPMOST),
-                       0,0,0,0, SWP_NOMOVE|SWP_NOSIZE);
+                       0,0,0,0, flags);
         break;
       }
 
--- a/jdk/src/windows/native/sun/windows/awt_Window.cpp	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Window.cpp	Wed Jul 05 16:52:18 2017 +0200
@@ -165,7 +165,6 @@
 int AwtWindow::ms_instanceCounter = 0;
 HHOOK AwtWindow::ms_hCBTFilter;
 AwtWindow * AwtWindow::m_grabbedWindow = NULL;
-HWND AwtWindow::sm_retainingHierarchyZOrderInShow = NULL;
 BOOL AwtWindow::sm_resizing = FALSE;
 UINT AwtWindow::untrustedWindowsCounter = 0;
 
@@ -341,23 +340,6 @@
 }
 
 MsgRouting AwtWindow::WmWindowPosChanging(LPARAM windowPos) {
-    /*
-     * See 6178004.
-     * Some windows shouldn't trigger a change in z-order of
-     * any window from the hierarchy.
-     */
-    if (IsRetainingHierarchyZOrder()) {
-        if (((WINDOWPOS *)windowPos)->flags & SWP_SHOWWINDOW) {
-            sm_retainingHierarchyZOrderInShow = GetHWnd();
-        }
-    } else if (sm_retainingHierarchyZOrderInShow != NULL) {
-        HWND ancestor = ::GetAncestor(sm_retainingHierarchyZOrderInShow, GA_ROOTOWNER);
-        HWND windowAncestor = ::GetAncestor(GetHWnd(), GA_ROOTOWNER);
-
-        if (windowAncestor == ancestor) {
-            ((WINDOWPOS *)windowPos)->flags |= SWP_NOZORDER;
-        }
-    }
     return mrDoDefault;
 }
 
@@ -369,19 +351,14 @@
     ::SetWindowPos(warningWindow, HWND_NOTOPMOST,
             rect.left, rect.top,
             rect.right - rect.left, rect.bottom - rect.top,
-            SWP_ASYNCWINDOWPOS | SWP_NOACTIVATE | SWP_NOZORDER
+            SWP_ASYNCWINDOWPOS | SWP_NOACTIVATE | SWP_NOZORDER |
+            SWP_NOOWNERZORDER
             );
 }
 
 MsgRouting AwtWindow::WmWindowPosChanged(LPARAM windowPos) {
     WINDOWPOS * wp = (WINDOWPOS *)windowPos;
 
-    if (IsRetainingHierarchyZOrder() && wp->flags & SWP_SHOWWINDOW) {
-        // By this time all the windows from the hierarchy are already notified about z-order change.
-        // Thus we may and we should reset the trigger in order not to affect other changes.
-        sm_retainingHierarchyZOrderInShow = NULL;
-    }
-
     // Reposition the warning window
     if (IsUntrusted() && warningWindow != NULL) {
         if (wp->flags & SWP_HIDEWINDOW) {
@@ -854,7 +831,7 @@
     if (securityAnimationKind == akShow) {
         ::SetWindowPos(warningWindow, HWND_NOTOPMOST, 0, 0, 0, 0,
                 SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE |
-                SWP_SHOWWINDOW);
+                SWP_SHOWWINDOW | SWP_NOOWNERZORDER);
 
         ::SetLayeredWindowAttributes(warningWindow, RGB(0, 0, 0),
                 0xFF, LWA_ALPHA);
@@ -880,7 +857,7 @@
         case akPreHide:
             ::SetWindowPos(warningWindow, HWND_NOTOPMOST, 0, 0, 0, 0,
                     SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE |
-                    SWP_HIDEWINDOW);
+                    SWP_HIDEWINDOW | SWP_NOOWNERZORDER);
             break;
         case akShow:
             RepaintWarningWindow();
@@ -1250,7 +1227,16 @@
         }
     }
     if (!done) {
-        ::ShowWindow(GetHWnd(), nCmdShow);
+        // transient windows shouldn't change the owner window's position in the z-order
+        if (IsRetainingHierarchyZOrder()){
+            UINT flags = SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW | SWP_NOOWNERZORDER;
+            if (nCmdShow == SW_SHOWNA) {
+                flags |= SWP_NOACTIVATE;
+            }
+            ::SetWindowPos(GetHWnd(), HWND_TOPMOST, 0, 0, 0, 0, flags);
+        } else {
+            ::ShowWindow(GetHWnd(), nCmdShow);
+        }
     }
     env->DeleteLocalRef(target);
 }
--- a/jdk/src/windows/native/sun/windows/awt_Window.h	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Window.h	Wed Jul 05 16:52:18 2017 +0200
@@ -248,7 +248,6 @@
     static int ms_instanceCounter;
     static HHOOK ms_hCBTFilter;
     static LRESULT CALLBACK CBTFilter(int nCode, WPARAM wParam, LPARAM lParam);
-    static HWND sm_retainingHierarchyZOrderInShow; // a referred window in the process of show
     static BOOL sm_resizing;        /* in the middle of a resizing operation */
 
     RECT m_insets;          /* a cache of the insets being used */
--- a/jdk/test/com/sun/awt/Translucency/TranslucentJAppletTest/TranslucentJAppletTest.java	Mon Apr 27 20:18:40 2009 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/*
- * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-/*
- * @test %I% %E%
- * @bug 6683728
- * @summary Tests that a JApplet in a translucent JFrame works properly
- * @author Kenneth.Russell@sun.com: area=Graphics
- * @compile -XDignore.symbol.file=true TranslucentJAppletTest.java
- * @run main/manual/othervm TranslucentJAppletTest
- */
-
-import java.awt.*;
-import java.awt.image.*;
-
-import javax.swing.*;
-
-public class TranslucentJAppletTest {
-
-    private static JFrame frame;
-    private static volatile boolean paintComponentCalled = false;
-
-    private static void initAndShowGUI() {
-        frame = new JFrame();
-        JApplet applet = new JApplet();
-        JPanel panel = new JPanel() {
-            protected void paintComponent(Graphics g) {
-                paintComponentCalled = true;
-                g.setColor(Color.RED);
-                g.fillOval(0, 0, getWidth(), getHeight());
-            }
-        };
-        panel.setDoubleBuffered(false);
-        panel.setOpaque(false);
-        applet.add(panel);
-        frame.add(applet);
-        frame.setBounds(100, 100, 200, 200);
-        frame.setUndecorated(true);
-        com.sun.awt.AWTUtilities.setWindowOpaque(frame, false);
-        frame.setVisible(true);
-    }
-
-    public static void main(String[] args)
-        throws Exception
-    {
-        sun.awt.SunToolkit tk = (sun.awt.SunToolkit)Toolkit.getDefaultToolkit();
-
-        Robot r = new Robot();
-        Color color1 = r.getPixelColor(100, 100); // (0, 0) in frame coordinates
-
-        SwingUtilities.invokeAndWait(new Runnable() {
-            public void run() {
-                initAndShowGUI();
-            }
-        });
-        tk.realSync();
-
-        if (!paintComponentCalled) {
-            throw new RuntimeException("Test FAILED: panel's paintComponent() method is not called");
-        }
-
-        Color newColor1 = r.getPixelColor(100, 100);
-        // unfortunately, robot.getPixelColor() doesn't work for some unknown reason
-        // Color newColor2 = r.getPixelColor(200, 200);
-        BufferedImage bim = r.createScreenCapture(new Rectangle(200, 200, 1, 1));
-        Color newColor2 = new Color(bim.getRGB(0, 0));
-
-        // Frame must be transparent at (100, 100) in screen coords
-        if (!color1.equals(newColor1)) {
-            System.err.println("color1 = " + color1);
-            System.err.println("newColor1 = " + newColor1);
-            throw new RuntimeException("Test FAILED: frame pixel at (0, 0) is not transparent");
-        }
-
-        // Frame must be RED at (200, 200) in screen coords
-        if (!newColor2.equals(Color.RED)) {
-            System.err.println("newColor2 = " + newColor2);
-            throw new RuntimeException("Test FAILED: frame pixel at (100, 100) is not red (transparent?)");
-        }
-
-        System.out.println("Test PASSED");
-    }
-}
--- a/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TSFrame.java	Mon Apr 27 20:18:40 2009 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,306 +0,0 @@
-/*
- * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-import com.sun.awt.AWTUtilities;
-import static com.sun.awt.AWTUtilities.Translucency.*;
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Frame;
-import java.awt.Graphics;
-import java.awt.GraphicsConfiguration;
-import java.awt.GraphicsEnvironment;
-import java.awt.RenderingHints;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.awt.Canvas;
-import java.awt.Component;
-import java.awt.GradientPaint;
-import java.awt.Graphics2D;
-import java.awt.Paint;
-import java.util.Random;
-import java.awt.geom.Ellipse2D;
-import javax.swing.JApplet;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JFrame;
-import javax.swing.JPanel;
-import javax.swing.SwingUtilities;
-
-public class TSFrame {
-
-    static volatile boolean done = false;
-
-    static final boolean useSwing = System.getProperty("useswing") != null;
-    static final boolean useShape = System.getProperty("useshape") != null;
-    static final boolean useTransl = System.getProperty("usetransl") != null;
-    static final boolean useNonOpaque = System.getProperty("usenonop") != null;
-
-    static final Random rnd = new Random();
-    private static void render(Graphics g, int w, int h, boolean useNonOpaque) {
-        if (useNonOpaque) {
-            Graphics2D g2d = (Graphics2D)g;
-            GradientPaint p =
-                new GradientPaint(0.0f, 0.0f,
-                                  new Color(rnd.nextInt(0xffffff)),
-                                  w, h,
-                                  new Color(rnd.nextInt(0xff),
-                                            rnd.nextInt(0xff),
-                                            rnd.nextInt(0xff), 0),
-                                  true);
-            g2d.setPaint(p);
-            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
-                                 RenderingHints.VALUE_ANTIALIAS_ON);
-            g2d.fillOval(0, 0, w, h);
-        } else {
-            g.setColor(new Color(rnd.nextInt(0xffffff)));
-            g.fillRect(0, 0, w, h);
-        }
-    }
-
-    private static class MyCanvas extends Canvas {
-        @Override
-        public void paint(Graphics g) {
-            render(g, getWidth(), getHeight(), false);
-        }
-        @Override
-        public Dimension getPreferredSize() {
-            return new Dimension(200, 100);
-        }
-    }
-    private static class NonOpaqueJFrame extends JFrame {
-        NonOpaqueJFrame(GraphicsConfiguration gc) {
-            super("NonOpaque Swing JFrame", gc);
-            JPanel p = new JPanel() {
-                public void paintComponent(Graphics g) {
-                    super.paintComponent(g);
-                    render(g, getWidth(), getHeight(), true);
-                    g.setColor(Color.red);
-                    g.drawString("Non-Opaque Swing JFrame", 10, 15);
-                }
-            };
-            p.setDoubleBuffered(false);
-            p.setOpaque(false);
-            add(p);
-            setUndecorated(true);
-        }
-    }
-    private static class NonOpaqueJAppletFrame extends JFrame {
-        JPanel p;
-        NonOpaqueJAppletFrame(GraphicsConfiguration gc) {
-            super("NonOpaque Swing JAppletFrame", gc);
-            JApplet ja = new JApplet() {
-                public void paint(Graphics g) {
-                    super.paint(g);
-                    System.err.println("JAppletFrame paint called");
-                }
-            };
-            p = new JPanel() {
-                public void paintComponent(Graphics g) {
-                    super.paintComponent(g);
-                    render(g, getWidth(), getHeight(), true);
-                    g.setColor(Color.red);
-                    g.drawString("Non-Opaque Swing JFrame", 10, 15);
-                }
-            };
-            p.setDoubleBuffered(false);
-            p.setOpaque(false);
-            ja.add(p);
-            add(ja);
-            setUndecorated(true);
-        }
-    }
-    private static class NonOpaqueFrame extends Frame {
-        NonOpaqueFrame(GraphicsConfiguration gc) {
-            super("NonOpaque AWT Frame", gc);
-            // uncomment to test with hw child
-//            setLayout(null);
-//            Component c = new Panel() {
-//                public void paint(Graphics g) {
-//                    g.setColor(new Color(1.0f, 1.0f, 1.0f, 0.5f));
-//                    g.fillRect(0, 0, getWidth(), getHeight());
-//                }
-//            };
-//            c.setSize(100, 100);
-//            c.setBackground(Color.red);
-//            c.setForeground(Color.red);
-//            add(c);
-//            c.setLocation(130, 130);
-        }
-        @Override
-        public void paint(Graphics g) {
-            render(g, getWidth(), getHeight(), true);
-            g.setColor(Color.red);
-            g.drawString("Non-Opaque AWT Frame", 10, 15);
-        }
-    }
-
-    private static class MyJPanel extends JPanel {
-        @Override
-        public void paintComponent(Graphics g) {
-            render(g, getWidth(), getHeight(), false);
-        }
-    }
-
-    public static Frame createGui(GraphicsConfiguration gc,
-                                  final boolean useSwing,
-                                  final boolean useShape,
-                                  final boolean useTransl,
-                                  final boolean useNonOpaque,
-                                  final float factor)
-    {
-        Frame frame;
-        done = false;
-
-        if (gc == null) {
-            gc = GraphicsEnvironment.getLocalGraphicsEnvironment().
-                    getDefaultScreenDevice().getDefaultConfiguration();
-        }
-
-        if (useNonOpaque) {
-            if (useSwing) {
-                frame = new NonOpaqueJFrame(gc);
-//                frame = new NonOpaqueJAppletFrame(gc);
-            } else {
-                frame = new NonOpaqueFrame(gc);
-            }
-            animateComponent(frame);
-        } else if (useSwing) {
-            frame = new JFrame("Swing Frame", gc);
-            JComponent p = new JButton("Swing!");
-            p.setPreferredSize(new Dimension(200, 100));
-            frame.add("North", p);
-            p = new MyJPanel();
-            animateComponent(p);
-            frame.add("Center", p);
-        } else {
-            frame = new Frame("AWT Frame", gc) {
-                public void paint(Graphics g) {
-                    g.setColor(Color.red);
-                    g.fillRect(0, 0, 100, 100);
-                }
-            };
-            frame.setLayout(new BorderLayout());
-            Canvas c = new MyCanvas();
-            frame.add("North", c);
-            animateComponent(c);
-            c = new MyCanvas();
-            frame.add("Center", c);
-            animateComponent(c);
-            c = new MyCanvas();
-            frame.add("South", c);
-            animateComponent(c);
-        }
-        final Frame finalFrame = frame;
-        frame.addWindowListener(new WindowAdapter() {
-            @Override
-            public void windowClosing(WindowEvent e) {
-                finalFrame.dispose();
-                done = true;
-            }
-        });
-        frame.addMouseListener(new MouseAdapter() {
-            @Override
-            public void mouseClicked(MouseEvent e) {
-                finalFrame.dispose();
-                done = true;
-            }
-        });
-        frame.setPreferredSize(new Dimension(800, 600));
-
-        if (useShape) {
-            frame.setUndecorated(true);
-        }
-
-        frame.setLocation(450, 10);
-        frame.pack();
-
-        if (useShape) {
-            if (AWTUtilities.isTranslucencySupported(PERPIXEL_TRANSPARENT)) {
-                System.out.println("applying PERPIXEL_TRANSPARENT");
-                AWTUtilities.setWindowShape(frame,
-                    new Ellipse2D.Double(0, 0, frame.getWidth(),
-                                               frame.getHeight()/3));
-                frame.setTitle("PERPIXEL_TRANSPARENT");
-            } else {
-                System.out.println("Passed: PERPIXEL_TRANSPARENT unsupported");
-            }
-        }
-        if (useTransl) {
-            if (AWTUtilities.isTranslucencySupported(TRANSLUCENT)) {
-                System.out.println("applying TRANSLUCENT");
-                AWTUtilities.setWindowOpacity(frame, factor);
-                frame.setTitle("TRANSLUCENT");
-            } else {
-                System.out.println("Passed: TRANSLUCENT unsupported");
-            }
-        }
-        if (useNonOpaque) {
-            if (AWTUtilities.isTranslucencySupported(PERPIXEL_TRANSLUCENT) &&
-                AWTUtilities.isTranslucencyCapable(gc))
-            {
-                System.out.println("applying PERPIXEL_TRANSLUCENT");
-                AWTUtilities.setWindowOpaque(frame, false);
-                frame.setTitle("PERPIXEL_TRANSLUCENT");
-            } else {
-                System.out.println("Passed: PERPIXEL_TRANSLUCENT unsupported");
-            }
-        }
-        frame.setVisible(true);
-        return frame;
-    }
-
-    public static void stopThreads() {
-        done = true;
-    }
-
-    private static void animateComponent(final Component comp) {
-        Thread t = new Thread(new Runnable() {
-            public void run() {
-                do {
-                    try {
-                        Thread.sleep(50);
-                    } catch (InterruptedException ex) {}
-                    comp.repaint();
-                } while (!done);
-            }
-        });
-        t.start();
-    }
-
-    public static void main(String[] args) throws Exception {
-        SwingUtilities.invokeLater(new Runnable() {
-            public void run() {
-                TSFrame.createGui(null, useSwing,
-                                  useShape,
-                                  useTransl,
-                                  useNonOpaque,
-                                  0.7f);
-            }
-        });
-    }
-}
--- a/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.form	Mon Apr 27 20:18:40 2009 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
-  <NonVisualComponents>
-    <Component class="javax.swing.ButtonGroup" name="createDisposeGrp">
-    </Component>
-  </NonVisualComponents>
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="3"/>
-    <Property name="title" type="java.lang.String" value="TranslucentShapedFrameTest"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-  </AuxValues>
-
-  <Layout>
-    <DimensionLayout dim="0">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Group type="102" attributes="0">
-              <EmptySpace max="-2" attributes="0"/>
-              <Group type="103" groupAlignment="0" attributes="0">
-                  <Group type="102" alignment="0" attributes="0">
-                      <Component id="transparencySld" pref="375" max="32767" attributes="0"/>
-                      <EmptySpace max="-2" attributes="0"/>
-                  </Group>
-                  <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
-                  <Group type="102" alignment="0" attributes="0">
-                      <Component id="shapedCb" min="-2" max="-2" attributes="0"/>
-                      <EmptySpace max="-2" attributes="0"/>
-                      <Component id="nonOpaqueChb" min="-2" max="-2" attributes="0"/>
-                      <EmptySpace max="-2" attributes="0"/>
-                      <Component id="useSwingCb" min="-2" max="-2" attributes="0"/>
-                      <EmptySpace pref="102" max="32767" attributes="0"/>
-                  </Group>
-                  <Group type="102" alignment="0" attributes="0">
-                      <Group type="103" groupAlignment="0" attributes="0">
-                          <Group type="102" alignment="0" attributes="0">
-                              <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
-                              <EmptySpace pref="314" max="-2" attributes="0"/>
-                          </Group>
-                          <Group type="102" alignment="0" attributes="0">
-                              <Component id="passedBtn" min="-2" max="-2" attributes="0"/>
-                              <EmptySpace max="-2" attributes="0"/>
-                              <Component id="failedBtn" min="-2" max="-2" attributes="0"/>
-                              <EmptySpace pref="241" max="-2" attributes="0"/>
-                          </Group>
-                          <Component id="jScrollPane1" alignment="1" pref="375" max="32767" attributes="0"/>
-                          <Group type="102" alignment="0" attributes="0">
-                              <Component id="createFrameBtn" min="-2" pref="187" max="-2" attributes="0"/>
-                              <EmptySpace max="-2" attributes="0"/>
-                              <Component id="disposeFrameBtn" min="-2" pref="182" max="-2" attributes="0"/>
-                          </Group>
-                      </Group>
-                      <EmptySpace max="-2" attributes="0"/>
-                  </Group>
-              </Group>
-          </Group>
-      </Group>
-    </DimensionLayout>
-    <DimensionLayout dim="1">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Group type="102" alignment="0" attributes="0">
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="transparencySld" min="-2" max="-2" attributes="0"/>
-              <EmptySpace max="-2" attributes="0"/>
-              <Group type="103" groupAlignment="3" attributes="0">
-                  <Component id="shapedCb" alignment="3" min="-2" max="-2" attributes="0"/>
-                  <Component id="nonOpaqueChb" alignment="3" min="-2" max="-2" attributes="0"/>
-                  <Component id="useSwingCb" alignment="3" min="-2" max="-2" attributes="0"/>
-              </Group>
-              <EmptySpace max="-2" attributes="0"/>
-              <Group type="103" groupAlignment="3" attributes="0">
-                  <Component id="disposeFrameBtn" alignment="3" min="-2" max="-2" attributes="0"/>
-                  <Component id="createFrameBtn" alignment="3" min="-2" max="-2" attributes="0"/>
-              </Group>
-              <EmptySpace min="-2" pref="17" max="-2" attributes="0"/>
-              <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="jScrollPane1" min="-2" pref="148" max="-2" attributes="0"/>
-              <EmptySpace max="-2" attributes="0"/>
-              <Group type="103" groupAlignment="3" attributes="0">
-                  <Component id="passedBtn" alignment="3" min="-2" max="-2" attributes="0"/>
-                  <Component id="failedBtn" alignment="3" min="-2" max="-2" attributes="0"/>
-              </Group>
-              <EmptySpace max="32767" attributes="0"/>
-          </Group>
-      </Group>
-    </DimensionLayout>
-  </Layout>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Frame Opacity:"/>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JSlider" name="transparencySld">
-      <Properties>
-        <Property name="majorTickSpacing" type="int" value="10"/>
-        <Property name="minorTickSpacing" type="int" value="5"/>
-        <Property name="paintLabels" type="boolean" value="true"/>
-        <Property name="paintTicks" type="boolean" value="true"/>
-        <Property name="value" type="int" value="100"/>
-      </Properties>
-      <Events>
-        <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="transparencySldStateChanged"/>
-      </Events>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="shapedCb">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Shaped Frame"/>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-            <EmptyBorder bottom="0" left="0" right="0" top="0"/>
-          </Border>
-        </Property>
-        <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
-          <Insets value="[0, 0, 0, 0]"/>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="shapedCbActionPerformed"/>
-      </Events>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="nonOpaqueChb">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Non Opaque Frame"/>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-            <EmptyBorder bottom="0" left="0" right="0" top="0"/>
-          </Border>
-        </Property>
-        <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
-          <Insets value="[0, 0, 0, 0]"/>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="nonOpaqueChbActionPerformed"/>
-      </Events>
-    </Component>
-    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-      <AuxValues>
-        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-      </AuxValues>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JTextArea" name="jTextArea1">
-          <Properties>
-            <Property name="columns" type="int" value="20"/>
-            <Property name="rows" type="int" value="5"/>
-            <Property name="text" type="java.lang.String" value="Create translucent and/or shaped, or&#xa;non-opaque frame. Make sure it behaves&#xa;correctly (no artifacts left on the screen&#xa;when dragging - if dragging is possible).&#xa;Click &quot;Passed&quot; if the test behaves correctly,&#xa;&quot;Falied&quot; otherwise."/>
-          </Properties>
-        </Component>
-      </SubComponents>
-    </Container>
-    <Component class="javax.swing.JLabel" name="jLabel2">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Instructions:"/>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JButton" name="passedBtn">
-      <Properties>
-        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="64" green="ff" red="81" type="rgb"/>
-        </Property>
-        <Property name="text" type="java.lang.String" value="Passed"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="passedBtnActionPerformed"/>
-      </Events>
-    </Component>
-    <Component class="javax.swing.JButton" name="failedBtn">
-      <Properties>
-        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="0" green="0" id="red" palette="1" red="ff" type="palette"/>
-        </Property>
-        <Property name="text" type="java.lang.String" value="Failed"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="failedBtnActionPerformed"/>
-      </Events>
-    </Component>
-    <Component class="javax.swing.JToggleButton" name="createFrameBtn">
-      <Properties>
-        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
-          <ComponentRef name="createDisposeGrp"/>
-        </Property>
-        <Property name="text" type="java.lang.String" value="Create Frame"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="createFrameBtnActionPerformed"/>
-      </Events>
-    </Component>
-    <Component class="javax.swing.JToggleButton" name="disposeFrameBtn">
-      <Properties>
-        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
-          <ComponentRef name="createDisposeGrp"/>
-        </Property>
-        <Property name="selected" type="boolean" value="true"/>
-        <Property name="text" type="java.lang.String" value="Dispose Frame"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="disposeFrameBtnActionPerformed"/>
-      </Events>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="useSwingCb">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Use JFrame"/>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-            <EmptyBorder bottom="0" left="0" right="0" top="0"/>
-          </Border>
-        </Property>
-        <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
-          <Insets value="[0, 0, 0, 0]"/>
-        </Property>
-      </Properties>
-    </Component>
-  </SubComponents>
-</Form>
--- a/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.java	Mon Apr 27 20:18:40 2009 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,359 +0,0 @@
-/*
- * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-/*
- * @test %I% %E%
- * @bug 6655001 6670649 6687141
- * @summary Tests that hw acceleration doesn't affect translucent/shaped windows
- * @author Dmitri.Trembovetski@sun.com: area=Graphics
- * @compile -XDignore.symbol.file=true TranslucentShapedFrameTest.java
- * @compile -XDignore.symbol.file=true TSFrame.java
- * @run main/manual/othervm TranslucentShapedFrameTest
- * @run main/manual/othervm -Dsun.java2d.noddraw=true TranslucentShapedFrameTest
- * @run main/manual/othervm -Dsun.java2d.opengl=True TranslucentShapedFrameTest
- */
-import com.sun.awt.AWTUtilities;
-import static com.sun.awt.AWTUtilities.Translucency.*;
-import java.awt.Frame;
-import java.awt.GraphicsConfiguration;
-import java.awt.GraphicsDevice;
-import java.awt.GraphicsEnvironment;
-import java.awt.Shape;
-import java.awt.geom.Ellipse2D;
-import java.util.concurrent.CountDownLatch;
-import javax.swing.JSlider;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.UnsupportedLookAndFeelException;
-
-public class TranslucentShapedFrameTest extends javax.swing.JFrame {
-    Frame testFrame;
-    static CountDownLatch done;
-    static volatile boolean failed = false;
-    GraphicsConfiguration gcToUse = null;
-
-    /**
-     * Creates new form TranslucentShapedFrameTest
-     */
-    public TranslucentShapedFrameTest() {
-        // not necessary, but we just look nicer
-        try {
-            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
-        } catch (Exception ex) {}
-
-        initComponents();
-        checkEffects();
-
-        SwingUtilities.updateComponentTreeUI(this);
-    }
-
-    /** This method is called from within the constructor to
-     * initialize the form.
-     * WARNING: Do NOT modify this code. The content of this method is
-     * always regenerated by the Form Editor.
-     */
-    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
-    private void initComponents() {
-        createDisposeGrp = new javax.swing.ButtonGroup();
-        jLabel1 = new javax.swing.JLabel();
-        transparencySld = new javax.swing.JSlider();
-        shapedCb = new javax.swing.JCheckBox();
-        nonOpaqueChb = new javax.swing.JCheckBox();
-        jScrollPane1 = new javax.swing.JScrollPane();
-        jTextArea1 = new javax.swing.JTextArea();
-        jLabel2 = new javax.swing.JLabel();
-        passedBtn = new javax.swing.JButton();
-        failedBtn = new javax.swing.JButton();
-        createFrameBtn = new javax.swing.JToggleButton();
-        disposeFrameBtn = new javax.swing.JToggleButton();
-        useSwingCb = new javax.swing.JCheckBox();
-
-        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
-        setTitle("TranslucentShapedFrameTest");
-        jLabel1.setText("Frame Opacity:");
-
-        transparencySld.setMajorTickSpacing(10);
-        transparencySld.setMinorTickSpacing(5);
-        transparencySld.setPaintLabels(true);
-        transparencySld.setPaintTicks(true);
-        transparencySld.setValue(100);
-        transparencySld.addChangeListener(new javax.swing.event.ChangeListener() {
-            public void stateChanged(javax.swing.event.ChangeEvent evt) {
-                transparencySldStateChanged(evt);
-            }
-        });
-
-        shapedCb.setText("Shaped Frame");
-        shapedCb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
-        shapedCb.setMargin(new java.awt.Insets(0, 0, 0, 0));
-        shapedCb.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                shapedCbActionPerformed(evt);
-            }
-        });
-
-        nonOpaqueChb.setText("Non Opaque Frame");
-        nonOpaqueChb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
-        nonOpaqueChb.setMargin(new java.awt.Insets(0, 0, 0, 0));
-        nonOpaqueChb.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                nonOpaqueChbActionPerformed(evt);
-            }
-        });
-
-        jTextArea1.setColumns(20);
-        jTextArea1.setRows(5);
-        jTextArea1.setText("Create translucent and/or shaped, or\nnon-opaque frame. Make sure it behaves\ncorrectly (no artifacts left on the screen\nwhen dragging - if dragging is possible).\nClick \"Passed\" if the test behaves correctly,\n\"Falied\" otherwise.");
-        jScrollPane1.setViewportView(jTextArea1);
-
-        jLabel2.setText("Instructions:");
-
-        passedBtn.setBackground(new java.awt.Color(129, 255, 100));
-        passedBtn.setText("Passed");
-        passedBtn.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                passedBtnActionPerformed(evt);
-            }
-        });
-
-        failedBtn.setBackground(java.awt.Color.red);
-        failedBtn.setText("Failed");
-        failedBtn.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                failedBtnActionPerformed(evt);
-            }
-        });
-
-        createDisposeGrp.add(createFrameBtn);
-        createFrameBtn.setText("Create Frame");
-        createFrameBtn.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                createFrameBtnActionPerformed(evt);
-            }
-        });
-
-        createDisposeGrp.add(disposeFrameBtn);
-        disposeFrameBtn.setSelected(true);
-        disposeFrameBtn.setText("Dispose Frame");
-        disposeFrameBtn.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                disposeFrameBtnActionPerformed(evt);
-            }
-        });
-
-        useSwingCb.setText("Use JFrame");
-        useSwingCb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
-        useSwingCb.setMargin(new java.awt.Insets(0, 0, 0, 0));
-
-        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
-        getContentPane().setLayout(layout);
-        layout.setHorizontalGroup(
-            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addGroup(layout.createSequentialGroup()
-                .addContainerGap()
-                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                    .addGroup(layout.createSequentialGroup()
-                        .addComponent(transparencySld, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)
-                        .addContainerGap())
-                    .addComponent(jLabel1)
-                    .addGroup(layout.createSequentialGroup()
-                        .addComponent(shapedCb)
-                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                        .addComponent(nonOpaqueChb)
-                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                        .addComponent(useSwingCb)
-                        .addContainerGap(102, Short.MAX_VALUE))
-                    .addGroup(layout.createSequentialGroup()
-                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                            .addGroup(layout.createSequentialGroup()
-                                .addComponent(jLabel2)
-                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 314, javax.swing.GroupLayout.PREFERRED_SIZE))
-                            .addGroup(layout.createSequentialGroup()
-                                .addComponent(passedBtn)
-                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                                .addComponent(failedBtn)
-                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 241, javax.swing.GroupLayout.PREFERRED_SIZE))
-                            .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)
-                            .addGroup(layout.createSequentialGroup()
-                                .addComponent(createFrameBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                                .addComponent(disposeFrameBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 182, javax.swing.GroupLayout.PREFERRED_SIZE)))
-                        .addContainerGap())))
-        );
-        layout.setVerticalGroup(
-            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addGroup(layout.createSequentialGroup()
-                .addContainerGap()
-                .addComponent(jLabel1)
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addComponent(transparencySld, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
-                    .addComponent(shapedCb)
-                    .addComponent(nonOpaqueChb)
-                    .addComponent(useSwingCb))
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
-                    .addComponent(disposeFrameBtn)
-                    .addComponent(createFrameBtn))
-                .addGap(17, 17, 17)
-                .addComponent(jLabel2)
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE)
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
-                    .addComponent(passedBtn)
-                    .addComponent(failedBtn))
-                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-        );
-        pack();
-    }// </editor-fold>//GEN-END:initComponents
-
-    private void nonOpaqueChbActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nonOpaqueChbActionPerformed
-        if (testFrame != null) {
-            // REMIND: this path in the test doesn't work well (test bug)
-//            AWTUtilities.setWindowOpaque(testFrame, !nonOpaqueChb.isSelected());
-        }
-    }//GEN-LAST:event_nonOpaqueChbActionPerformed
-
-    private void shapedCbActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_shapedCbActionPerformed
-        if (testFrame != null) {
-            Shape s = null;
-            if (shapedCb.isSelected()) {
-                s = new Ellipse2D.Double(0, 0,
-                                         testFrame.getWidth(),
-                                         testFrame.getHeight());
-            }
-            AWTUtilities.setWindowShape(testFrame, s);
-        }
-    }//GEN-LAST:event_shapedCbActionPerformed
-
-    private void transparencySldStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_transparencySldStateChanged
-        JSlider source = (JSlider)evt.getSource();
-            int transl = transparencySld.getValue();
-            if (testFrame != null) {
-                AWTUtilities.setWindowOpacity(testFrame, (float)transl/100f);
-            }
-    }//GEN-LAST:event_transparencySldStateChanged
-
-    private void failedBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_failedBtnActionPerformed
-        disposeFrameBtnActionPerformed(evt);
-        dispose();
-        failed = true;
-        done.countDown();
-    }//GEN-LAST:event_failedBtnActionPerformed
-
-    private void disposeFrameBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_disposeFrameBtnActionPerformed
-        TSFrame.stopThreads();
-        if (testFrame != null) {
-            testFrame.dispose();
-            testFrame = null;
-        }
-    }//GEN-LAST:event_disposeFrameBtnActionPerformed
-
-    private void createFrameBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createFrameBtnActionPerformed
-        disposeFrameBtnActionPerformed(evt);
-        int transl = transparencySld.getValue();
-        testFrame = TSFrame.createGui(gcToUse,
-                useSwingCb.isSelected(), shapedCb.isSelected(),
-                (transl < 100), nonOpaqueChb.isSelected(),
-                (float)transl/100f);
-    }//GEN-LAST:event_createFrameBtnActionPerformed
-
-    private void passedBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_passedBtnActionPerformed
-        disposeFrameBtnActionPerformed(evt);
-        dispose();
-        done.countDown();
-    }//GEN-LAST:event_passedBtnActionPerformed
-
-    /**
-     * @param args the command line arguments
-     */
-    public static void main(String args[]) {
-        done = new CountDownLatch(1);
-        java.awt.EventQueue.invokeLater(new Runnable() {
-            public void run() {
-                new TranslucentShapedFrameTest().setVisible(true);
-            }
-        });
-        try {
-            done.await();
-        } catch (InterruptedException ex) {}
-        if (failed) {
-            throw new RuntimeException("Test FAILED");
-        }
-        System.out.println("Test PASSED");
-    }
-
-    private void checkEffects() {
-        if (!AWTUtilities.isTranslucencySupported(PERPIXEL_TRANSPARENT)) {
-            shapedCb.setEnabled(false);
-        }
-
-        if (!AWTUtilities.isTranslucencySupported(TRANSLUCENT)) {
-            transparencySld.setEnabled(false);
-        }
-
-        GraphicsConfiguration gc = null;
-        if (AWTUtilities.isTranslucencySupported(PERPIXEL_TRANSLUCENT)) {
-            gc = findGraphicsConfig();
-            if (gc == null) {
-                nonOpaqueChb.setEnabled(false);
-            }
-        }
-
-        gcToUse = gc;
-    }
-
-    private GraphicsConfiguration findGraphicsConfig() {
-        GraphicsDevice gd =
-            GraphicsEnvironment.getLocalGraphicsEnvironment().
-                getDefaultScreenDevice();
-        GraphicsConfiguration gcs[] = gd.getConfigurations();
-        for (GraphicsConfiguration gc : gcs) {
-            if (AWTUtilities.isTranslucencyCapable(gc)) {
-                return gc;
-            }
-        }
-        return null;
-    }
-
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    private javax.swing.ButtonGroup createDisposeGrp;
-    private javax.swing.JToggleButton createFrameBtn;
-    private javax.swing.JToggleButton disposeFrameBtn;
-    private javax.swing.JButton failedBtn;
-    private javax.swing.JLabel jLabel1;
-    private javax.swing.JLabel jLabel2;
-    private javax.swing.JScrollPane jScrollPane1;
-    private javax.swing.JTextArea jTextArea1;
-    private javax.swing.JCheckBox nonOpaqueChb;
-    private javax.swing.JButton passedBtn;
-    private javax.swing.JCheckBox shapedCb;
-    private javax.swing.JSlider transparencySld;
-    private javax.swing.JCheckBox useSwingCb;
-    // End of variables declaration//GEN-END:variables
-
-}
Binary file jdk/test/java/awt/FontClass/CreateFont/A.ttf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/FontClass/CreateFont/BigFont.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import java.applet.*;
+import java.awt.*;
+import java.io.*;
+import java.net.*;
+
+public class BigFont extends Applet {
+
+   static private class SizedInputStream extends InputStream {
+
+       int size;
+       int cnt = 0;
+
+       SizedInputStream(int size) {
+           this.size = size;
+       }
+
+       public int read() {
+           if (cnt < size) {
+              cnt++;
+              return 0;
+           } else {
+              return -1;
+           }
+       }
+
+       public int getCurrentSize() {
+           return cnt;
+       }
+   }
+
+    String id;
+    String fileName;
+
+    public void init() {
+        id = getParameter("number");
+        fileName = getParameter("font");
+
+        System.out.println("Applet " + id + " "+
+                           Thread.currentThread().getThreadGroup());
+        // Larger than size for a single font.
+        int fontSize = 64 * 1000 * 1000;
+        SizedInputStream sis = new SizedInputStream(fontSize);
+        try {
+             Font font = Font.createFont(Font.TRUETYPE_FONT, sis);
+        } catch (Throwable t) {
+            if (t instanceof FontFormatException ||
+                fontSize <= sis.getCurrentSize())
+            {
+                System.out.println(sis.getCurrentSize());
+                System.out.println(t);
+                throw new RuntimeException("Allowed file to be too large.");
+            }
+        }
+        // The following part of the test was verified manually but
+        // is impractical to enable  because it requires a fairly large
+        // valid font to be part of the test, and we can't easily include
+        // that, nor dependably reference one from the applet environment.
+        /*
+        if (fileName == null) {
+            return;
+        }
+        int size = getFileSize(fileName);
+        if (size == 0) {
+            return;
+        }
+        int fontCnt = 1000 * 1000 * 1000 / size;
+        loadMany(size, fontCnt, fileName);
+        System.gc(); System.gc();
+        fontCnt = fontCnt / 2;
+        System.out.println("Applet " + id + " load more.");
+        loadMany(size, fontCnt, fileName);
+        */
+        System.out.println("Applet " + id + " finished.");
+    }
+
+    int getFileSize(String fileName) {
+        try {
+            URL url = new URL(getCodeBase(), fileName);
+            InputStream inStream = url.openStream();
+            BufferedInputStream fontStream = new BufferedInputStream(inStream);
+            int size = 0;
+            while (fontStream.read() != -1) {
+                size++;
+            }
+            fontStream.close();
+            return size;
+        } catch (IOException e) {
+            return 0;
+        }
+
+    }
+    void loadMany(int oneFont, int fontCnt, String fileName) {
+        System.out.println("fontcnt= " + fontCnt);
+        Font[] fonts = new Font[fontCnt];
+        int totalSize = 0;
+        boolean gotException = false;
+        for (int i=0; i<fontCnt; i++) {
+            try {
+                URL url = new URL(getCodeBase(), fileName);
+                InputStream inStream = url.openStream();
+                BufferedInputStream fontStream =
+                    new BufferedInputStream(inStream);
+                fonts[i] = Font.createFont(Font.TRUETYPE_FONT, fontStream);
+                totalSize += oneFont;
+                fontStream.close();
+            } catch (Throwable t) {
+                gotException = true;
+                System.out.println("Applet " + id + " " + t);
+            }
+        }
+        if (!gotException) {
+          throw new RuntimeException("No expected exception");
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/FontClass/CreateFont/DeleteFont.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2004-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import java.io.*;
+import java.awt.*;
+
+public class DeleteFont {
+
+    public static void main(String args[]) throws Exception {
+
+        String font = "A.ttf";
+        String sep = System.getProperty("file.separator");
+        String testSrc = System.getenv("TESTSRC");
+        if (testSrc != null) {
+            font = testSrc + sep + font;
+        }
+        System.out.println("Using font file: " + font);
+        FileInputStream fis = new FileInputStream(font);
+        Font f = Font.createFont(Font.TRUETYPE_FONT, fis);
+        f.toString();
+        f.deriveFont(Font.BOLD);
+        f.canDisplay('X');
+
+       InputStream in = new InputStream() {
+            public int read() {
+                throw new RuntimeException();
+            }
+        };
+        boolean gotException = false;
+        try {
+           Font.createFont(java.awt.Font.TRUETYPE_FONT, in);
+        } catch (IOException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            throw new RuntimeException("No expected IOException");
+        }
+        badRead(-2, Font.TRUETYPE_FONT);
+        badRead(8193, Font.TRUETYPE_FONT);
+
+        badRead(-2, Font.TYPE1_FONT);
+        badRead(8193, Font.TYPE1_FONT);
+
+        // Make sure GC has a chance to clean up before we exit.
+        System.gc(); System.gc();
+    }
+
+    static void badRead(final int retval, int fontType) {
+        int num = 2;
+        byte[] buff = new byte[16*8192]; // Multiple of 8192 is important.
+        for (int ct=0; ct<num; ++ct) {
+            try {
+                Font.createFont(
+                    fontType,
+                    new ByteArrayInputStream(buff) {
+                        @Override
+                        public int read(byte[] buff, int off, int len) {
+                            int read = super.read(buff, off, len);
+                            return read<0 ? retval : read;
+                        }
+                    }
+                );
+            } catch (Throwable exc) {
+                //exc.printStackTrace();
+            }
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/FontClass/CreateFont/DeleteFont.sh	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,66 @@
+# Copyright 2004-2008 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+
+# @test
+# @bug 6189812 6380357 6632886
+# @summary Verify that temporary font files are deleted on exit.
+
+if [ -z "${TESTSRC}" ]; then
+  echo "TESTSRC undefined: defaulting to ."
+  TESTSRC=.
+fi
+
+if [ -z "${TESTCLASSES}" ]; then
+  echo "TESTCLASSES undefined: defaulting to ."
+  TESTCLASSES=.
+fi
+
+if [ -z "${TESTJAVA}" ]; then
+  echo "TESTJAVA undefined: can't continue."
+  exit 1
+fi
+
+echo "TESTJAVA=${TESTJAVA}"
+echo "TESTSRC=${TESTSRC}"
+echo "TESTCLASSES=${TESTCLASSES}"
+cd ${TESTSRC}
+${TESTJAVA}/bin/javac -d ${TESTCLASSES} DeleteFont.java
+
+cd ${TESTCLASSES}
+
+numfiles0=`ls ${TESTCLASSES} | wc -l`
+${TESTJAVA}/bin/java -Djava.io.tmpdir=${TESTCLASSES} DeleteFont
+
+if [ $? -ne 0 ]
+    then
+      echo "Test fails: exception thrown!"
+      exit 1
+fi
+
+numfiles1=`ls ${TESTCLASSES} | wc -l`
+
+if [ $numfiles0 -ne $numfiles1 ]
+    then
+      echo "Test fails: tmp file exists!"
+      ls ${TESTCLASSES}
+      exit 1
+fi
+exit 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/FontClass/CreateFont/bigfont.html	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,48 @@
+<!--
+
+ Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code 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
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ CA 95054 USA or visit www.sun.com if you need additional information or
+ have any questions.
+
+  @test
+  @bug 6522586
+  @run applet bigfont.html
+  @summary Enforce limits on font creation
+
+-->
+
+<html>
+  <head>
+      <title>Test Font Creation Limits</title>
+  </head>
+  <body>
+<hr>
+<APPLET CODE = BigFont.class WIDTH = 100 HEIGHT = 100 >
+<param name="number" value="1">
+<param name="font" value="A.ttf">
+</APPLET>
+<APPLET CODE = BigFont.class WIDTH = 100 HEIGHT = 100>
+<param name="number" value="2">
+<param name="font" value="A.ttf">
+</APPLET>
+<hr>
+  </body>
+</html>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/FontClass/CreateFont/fileaccess/FontFile.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6652929
+ * @summary verify handling of File.getPath()
+ */
+
+import java.awt.*;
+import java.io.*;
+
+public class FontFile {
+    public static void main(String[] args) throws Exception {
+        String sep = System.getProperty("file.separator");
+        String fname = ".." + sep + "A.ttf";
+        String dir = System.getProperty("test.src");
+        if (dir != null) {
+            fname = dir + sep + fname;
+        }
+        final String name = fname;
+        System.out.println("Will try to access " + name);
+        if (!(new File(name)).canRead()) {
+           System.out.println("File not available : can't run test");
+           return;
+        }
+        System.out.println("File is available. Verify no access under SM");
+
+        System.setSecurityManager(new SecurityManager());
+
+
+        // Check cannot read file.
+        try {
+            new FileInputStream(name);
+            throw new Error("Something wrong with test environment");
+        } catch (SecurityException exc) {
+            // Good.
+        }
+
+        try {
+            Font font = Font.createFont(Font.TRUETYPE_FONT,
+            new File("nosuchfile") {
+                    private boolean read;
+                    @Override public String getPath() {
+                        if (read) {
+                            return name;
+                        } else {
+                            read = true;
+                            return "somefile";
+                        }
+                    }
+                    @Override public boolean canRead() {
+                        return true;
+                    }
+               }
+            );
+          System.err.println(font.getFontName());
+          throw new RuntimeException("No expected exception");
+        }  catch (IOException e) {
+          System.err.println("Test passed.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mixing/MixingInHwPanel.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,428 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+  @test %W% %E%
+  @bug 6829858
+  @summary Mixing should work inside heavyweight containers
+  @author anthony.petrov@sun.com: area=awt.mixing
+  @library ../regtesthelpers
+  @build Util
+  @run main MixingInHwPanel
+*/
+
+
+/**
+ * MixingInHwPanel.java
+ *
+ * summary: Mixing should work inside heavyweight containers
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import test.java.awt.regtesthelpers.Util;
+
+
+
+public class MixingInHwPanel
+{
+    static volatile boolean failed = true;
+
+    private static void init()
+    {
+        //*** Create instructions for the user here ***
+
+        String[] instructions =
+        {
+            "This is an AUTOMATIC test, simply wait until it is done.",
+            "The result (passed or failed) will be shown in the",
+            "message window below."
+        };
+        Sysout.createDialog( );
+        Sysout.printInstructions( instructions );
+
+        // Create the components: frame -> hwPanel -> JDesktopPane ->
+        //    -> JInternalFrame -> hwButton
+        Frame frame = new Frame("Mixing in a heavyweight Panel");
+        frame.setBounds(100, 100, 640, 480);
+
+        Panel hwPanel = new Panel(new BorderLayout());
+        frame.add(hwPanel);
+
+        JDesktopPane desktop = new JDesktopPane();
+        hwPanel.add(desktop);
+
+        JInternalFrame iFrame = new JInternalFrame("one",
+                true, true, true, true);
+        iFrame.setPreferredSize(new Dimension(150, 55));
+        iFrame.setBounds(600, 100, 150, 55);
+        iFrame.setVisible(true);
+        desktop.add(iFrame);
+
+        Button button = new Button("HW Button");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                failed = false;
+            }
+        });
+        iFrame.add(button);
+
+        // Show the frame with the hwButton slightly hidden initially
+        frame.setVisible(true);
+
+        Robot robot = Util.createRobot();
+        robot.setAutoDelay(20);
+
+        Util.waitForIdle(robot);
+
+        // Now resize the frame so that the button is fully visible
+        frame.setBounds(100, 100, 800, 480);
+        frame.validate();
+
+        Util.waitForIdle(robot);
+
+        // And click the part of the button that has been previously hidden
+        Point bLoc = button.getLocationOnScreen();
+        robot.mouseMove(bLoc.x + button.getWidth() - 6, bLoc.y + button.getHeight() / 2);
+
+        Util.waitForIdle(robot);
+
+        robot.mousePress(InputEvent.BUTTON1_MASK);
+        robot.mouseRelease(InputEvent.BUTTON1_MASK);
+
+        Util.waitForIdle(robot);
+
+        // If the click happens (the shape is reapplied), the button's action
+        // listener will make failed == false.
+        if (failed) {
+            MixingInHwPanel.fail("The HW button did not receive the click.");
+        } else {
+            MixingInHwPanel.pass();
+        }
+    }//End  init()
+
+
+
+    /*****************************************************
+     * Standard Test Machinery Section
+     * DO NOT modify anything in this section -- it's a
+     * standard chunk of code which has all of the
+     * synchronisation necessary for the test harness.
+     * By keeping it the same in all tests, it is easier
+     * to read and understand someone else's test, as
+     * well as insuring that all tests behave correctly
+     * with the test harness.
+     * There is a section following this for test-
+     * classes
+     ******************************************************/
+    private static boolean theTestPassed = false;
+    private static boolean testGeneratedInterrupt = false;
+    private static String failureMessage = "";
+
+    private static Thread mainThread = null;
+
+    private static int sleepTime = 300000;
+
+    // Not sure about what happens if multiple of this test are
+    //  instantiated in the same VM.  Being static (and using
+    //  static vars), it aint gonna work.  Not worrying about
+    //  it for now.
+    public static void main( String args[] ) throws InterruptedException
+    {
+        mainThread = Thread.currentThread();
+        try
+        {
+            init();
+        }
+        catch( TestPassedException e )
+        {
+            //The test passed, so just return from main and harness will
+            // interepret this return as a pass
+            return;
+        }
+        //At this point, neither test pass nor test fail has been
+        // called -- either would have thrown an exception and ended the
+        // test, so we know we have multiple threads.
+
+        //Test involves other threads, so sleep and wait for them to
+        // called pass() or fail()
+        try
+        {
+            Thread.sleep( sleepTime );
+            //Timed out, so fail the test
+            throw new RuntimeException( "Timed out after " + sleepTime/1000 + " seconds" );
+        }
+        catch (InterruptedException e)
+        {
+            //The test harness may have interrupted the test.  If so, rethrow the exception
+            // so that the harness gets it and deals with it.
+            if( ! testGeneratedInterrupt ) throw e;
+
+            //reset flag in case hit this code more than once for some reason (just safety)
+            testGeneratedInterrupt = false;
+
+            if ( theTestPassed == false )
+            {
+                throw new RuntimeException( failureMessage );
+            }
+        }
+
+    }//main
+
+    public static synchronized void setTimeoutTo( int seconds )
+    {
+        sleepTime = seconds * 1000;
+    }
+
+    public static synchronized void pass()
+    {
+        Sysout.println( "The test passed." );
+        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
+        //first check if this is executing in main thread
+        if ( mainThread == Thread.currentThread() )
+        {
+            //Still in the main thread, so set the flag just for kicks,
+            // and throw a test passed exception which will be caught
+            // and end the test.
+            theTestPassed = true;
+            throw new TestPassedException();
+        }
+        theTestPassed = true;
+        testGeneratedInterrupt = true;
+        mainThread.interrupt();
+    }//pass()
+
+    public static synchronized void fail()
+    {
+        //test writer didn't specify why test failed, so give generic
+        fail( "it just plain failed! :-)" );
+    }
+
+    public static synchronized void fail( String whyFailed )
+    {
+        Sysout.println( "The test failed: " + whyFailed );
+        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
+        //check if this called from main thread
+        if ( mainThread == Thread.currentThread() )
+        {
+            //If main thread, fail now 'cause not sleeping
+            throw new RuntimeException( whyFailed );
+        }
+        theTestPassed = false;
+        testGeneratedInterrupt = true;
+        failureMessage = whyFailed;
+        mainThread.interrupt();
+    }//fail()
+
+}// class MixingInHwPanel
+
+//This exception is used to exit from any level of call nesting
+// when it's determined that the test has passed, and immediately
+// end the test.
+class TestPassedException extends RuntimeException
+{
+}
+
+//*********** End Standard Test Machinery Section **********
+
+
+//************ Begin classes defined for the test ****************
+
+// if want to make listeners, here is the recommended place for them, then instantiate
+//  them in init()
+
+/* Example of a class which may be written as part of a test
+class NewClass implements anInterface
+ {
+   static int newVar = 0;
+
+   public void eventDispatched(AWTEvent e)
+    {
+      //Counting events to see if we get enough
+      eventCount++;
+
+      if( eventCount == 20 )
+       {
+         //got enough events, so pass
+
+         MixingInHwPanel.pass();
+       }
+      else if( tries == 20 )
+       {
+         //tried too many times without getting enough events so fail
+
+         MixingInHwPanel.fail();
+       }
+
+    }// eventDispatched()
+
+ }// NewClass class
+
+*/
+
+
+//************** End classes defined for the test *******************
+
+
+
+
+/****************************************************
+ Standard Test Machinery
+ DO NOT modify anything below -- it's a standard
+  chunk of code whose purpose is to make user
+  interaction uniform, and thereby make it simpler
+  to read and understand someone else's test.
+ ****************************************************/
+
+/**
+ This is part of the standard test machinery.
+ It creates a dialog (with the instructions), and is the interface
+  for sending text messages to the user.
+ To print the instructions, send an array of strings to Sysout.createDialog
+  WithInstructions method.  Put one line of instructions per array entry.
+ To display a message for the tester to see, simply call Sysout.println
+  with the string to be displayed.
+ This mimics System.out.println but works within the test harness as well
+  as standalone.
+ */
+
+class Sysout
+{
+    private static TestDialog dialog;
+
+    public static void createDialogWithInstructions( String[] instructions )
+    {
+        dialog = new TestDialog( new Frame(), "Instructions" );
+        dialog.printInstructions( instructions );
+        dialog.setVisible(true);
+        println( "Any messages for the tester will display here." );
+    }
+
+    public static void createDialog( )
+    {
+        dialog = new TestDialog( new Frame(), "Instructions" );
+        String[] defInstr = { "Instructions will appear here. ", "" } ;
+        dialog.printInstructions( defInstr );
+        dialog.setVisible(true);
+        println( "Any messages for the tester will display here." );
+    }
+
+
+    public static void printInstructions( String[] instructions )
+    {
+        dialog.printInstructions( instructions );
+    }
+
+
+    public static void println( String messageIn )
+    {
+        dialog.displayMessage( messageIn );
+        System.out.println(messageIn);
+    }
+
+}// Sysout  class
+
+/**
+  This is part of the standard test machinery.  It provides a place for the
+   test instructions to be displayed, and a place for interactive messages
+   to the user to be displayed.
+  To have the test instructions displayed, see Sysout.
+  To have a message to the user be displayed, see Sysout.
+  Do not call anything in this dialog directly.
+  */
+class TestDialog extends Dialog
+{
+
+    TextArea instructionsText;
+    TextArea messageText;
+    int maxStringLength = 80;
+
+    //DO NOT call this directly, go through Sysout
+    public TestDialog( Frame frame, String name )
+    {
+        super( frame, name );
+        int scrollBoth = TextArea.SCROLLBARS_BOTH;
+        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
+        add( "North", instructionsText );
+
+        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
+        add("Center", messageText);
+
+        pack();
+
+        setVisible(true);
+    }// TestDialog()
+
+    //DO NOT call this directly, go through Sysout
+    public void printInstructions( String[] instructions )
+    {
+        //Clear out any current instructions
+        instructionsText.setText( "" );
+
+        //Go down array of instruction strings
+
+        String printStr, remainingStr;
+        for( int i=0; i < instructions.length; i++ )
+        {
+            //chop up each into pieces maxSringLength long
+            remainingStr = instructions[ i ];
+            while( remainingStr.length() > 0 )
+            {
+                //if longer than max then chop off first max chars to print
+                if( remainingStr.length() >= maxStringLength )
+                {
+                    //Try to chop on a word boundary
+                    int posOfSpace = remainingStr.
+                        lastIndexOf( ' ', maxStringLength - 1 );
+
+                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
+
+                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
+                    remainingStr = remainingStr.substring( posOfSpace + 1 );
+                }
+                //else just print
+                else
+                {
+                    printStr = remainingStr;
+                    remainingStr = "";
+                }
+
+                instructionsText.append( printStr + "\n" );
+
+            }// while
+
+        }// for
+
+    }//printInstructions()
+
+    //DO NOT call this directly, go through Sysout
+    public void displayMessage( String messageIn )
+    {
+        messageText.append( messageIn + "\n" );
+        System.out.println(messageIn);
+    }
+
+}// TestDialog  class
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test %I% %E%
+ * @bug 6683728
+ * @summary Tests that a JApplet in a translucent JFrame works properly
+ * @author Kenneth.Russell@sun.com: area=Graphics
+ * @compile -XDignore.symbol.file=true TranslucentJAppletTest.java
+ * @run main/manual/othervm TranslucentJAppletTest
+ */
+
+import java.awt.*;
+import java.awt.image.*;
+
+import javax.swing.*;
+
+public class TranslucentJAppletTest {
+
+    private static JFrame frame;
+    private static volatile boolean paintComponentCalled = false;
+
+    private static void initAndShowGUI() {
+        frame = new JFrame();
+        JApplet applet = new JApplet();
+        JPanel panel = new JPanel() {
+            protected void paintComponent(Graphics g) {
+                paintComponentCalled = true;
+                g.setColor(Color.RED);
+                g.fillOval(0, 0, getWidth(), getHeight());
+            }
+        };
+        panel.setDoubleBuffered(false);
+        panel.setOpaque(false);
+        applet.add(panel);
+        frame.add(applet);
+        frame.setBounds(100, 100, 200, 200);
+        frame.setUndecorated(true);
+        frame.setBackground(new Color(0, 0, 0, 0));
+        frame.setVisible(true);
+    }
+
+    public static void main(String[] args)
+        throws Exception
+    {
+        sun.awt.SunToolkit tk = (sun.awt.SunToolkit)Toolkit.getDefaultToolkit();
+
+        Robot r = new Robot();
+        Color color1 = r.getPixelColor(100, 100); // (0, 0) in frame coordinates
+
+        SwingUtilities.invokeAndWait(new Runnable() {
+            public void run() {
+                initAndShowGUI();
+            }
+        });
+        tk.realSync();
+
+        if (!paintComponentCalled) {
+            throw new RuntimeException("Test FAILED: panel's paintComponent() method is not called");
+        }
+
+        Color newColor1 = r.getPixelColor(100, 100);
+        // unfortunately, robot.getPixelColor() doesn't work for some unknown reason
+        // Color newColor2 = r.getPixelColor(200, 200);
+        BufferedImage bim = r.createScreenCapture(new Rectangle(200, 200, 1, 1));
+        Color newColor2 = new Color(bim.getRGB(0, 0));
+
+        // Frame must be transparent at (100, 100) in screen coords
+        if (!color1.equals(newColor1)) {
+            System.err.println("color1 = " + color1);
+            System.err.println("newColor1 = " + newColor1);
+            throw new RuntimeException("Test FAILED: frame pixel at (0, 0) is not transparent");
+        }
+
+        // Frame must be RED at (200, 200) in screen coords
+        if (!newColor2.equals(Color.RED)) {
+            System.err.println("newColor2 = " + newColor2);
+            throw new RuntimeException("Test FAILED: frame pixel at (100, 100) is not red (transparent?)");
+        }
+
+        System.out.println("Test PASSED");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Window/TranslucentShapedFrameTest/TSFrame.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,299 @@
+/*
+ * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsDevice.WindowTranslucency;
+import java.awt.GraphicsEnvironment;
+import java.awt.RenderingHints;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.Canvas;
+import java.awt.Component;
+import java.awt.GradientPaint;
+import java.awt.Graphics2D;
+import java.awt.Paint;
+import java.util.Random;
+import java.awt.geom.Ellipse2D;
+import javax.swing.JApplet;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+
+public class TSFrame {
+
+    static volatile boolean done = false;
+
+    static final boolean useSwing = System.getProperty("useswing") != null;
+    static final boolean useShape = System.getProperty("useshape") != null;
+    static final boolean useTransl = System.getProperty("usetransl") != null;
+    static final boolean useNonOpaque = System.getProperty("usenonop") != null;
+
+    static final Random rnd = new Random();
+    private static void render(Graphics g, int w, int h, boolean useNonOpaque) {
+        if (useNonOpaque) {
+            Graphics2D g2d = (Graphics2D)g;
+            GradientPaint p =
+                new GradientPaint(0.0f, 0.0f,
+                                  new Color(rnd.nextInt(0xffffff)),
+                                  w, h,
+                                  new Color(rnd.nextInt(0xff),
+                                            rnd.nextInt(0xff),
+                                            rnd.nextInt(0xff), 0),
+                                  true);
+            g2d.setPaint(p);
+            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+                                 RenderingHints.VALUE_ANTIALIAS_ON);
+            g2d.fillOval(0, 0, w, h);
+        } else {
+            g.setColor(new Color(rnd.nextInt(0xffffff)));
+            g.fillRect(0, 0, w, h);
+        }
+    }
+
+    private static class MyCanvas extends Canvas {
+        @Override
+        public void paint(Graphics g) {
+            render(g, getWidth(), getHeight(), false);
+        }
+        @Override
+        public Dimension getPreferredSize() {
+            return new Dimension(200, 100);
+        }
+    }
+    private static class NonOpaqueJFrame extends JFrame {
+        NonOpaqueJFrame() {
+            super("NonOpaque Swing JFrame");
+            JPanel p = new JPanel() {
+                public void paintComponent(Graphics g) {
+                    super.paintComponent(g);
+                    render(g, getWidth(), getHeight(), true);
+                    g.setColor(Color.red);
+                    g.drawString("Non-Opaque Swing JFrame", 10, 15);
+                }
+            };
+            p.setDoubleBuffered(false);
+            p.setOpaque(false);
+            add(p);
+            setUndecorated(true);
+        }
+    }
+    private static class NonOpaqueJAppletFrame extends JFrame {
+        JPanel p;
+        NonOpaqueJAppletFrame() {
+            super("NonOpaque Swing JAppletFrame");
+            JApplet ja = new JApplet() {
+                public void paint(Graphics g) {
+                    super.paint(g);
+                    System.err.println("JAppletFrame paint called");
+                }
+            };
+            p = new JPanel() {
+                public void paintComponent(Graphics g) {
+                    super.paintComponent(g);
+                    render(g, getWidth(), getHeight(), true);
+                    g.setColor(Color.red);
+                    g.drawString("Non-Opaque Swing JFrame", 10, 15);
+                }
+            };
+            p.setDoubleBuffered(false);
+            p.setOpaque(false);
+            ja.add(p);
+            add(ja);
+            setUndecorated(true);
+        }
+    }
+    private static class NonOpaqueFrame extends Frame {
+        NonOpaqueFrame() {
+            super("NonOpaque AWT Frame");
+            // uncomment to test with hw child
+//            setLayout(null);
+//            Component c = new Panel() {
+//                public void paint(Graphics g) {
+//                    g.setColor(new Color(1.0f, 1.0f, 1.0f, 0.5f));
+//                    g.fillRect(0, 0, getWidth(), getHeight());
+//                }
+//            };
+//            c.setSize(100, 100);
+//            c.setBackground(Color.red);
+//            c.setForeground(Color.red);
+//            add(c);
+//            c.setLocation(130, 130);
+        }
+        @Override
+        public void paint(Graphics g) {
+            render(g, getWidth(), getHeight(), true);
+            g.setColor(Color.red);
+            g.drawString("Non-Opaque AWT Frame", 10, 15);
+        }
+    }
+
+    private static class MyJPanel extends JPanel {
+        @Override
+        public void paintComponent(Graphics g) {
+            render(g, getWidth(), getHeight(), false);
+        }
+    }
+
+    public static Frame createGui(
+                                  final boolean useSwing,
+                                  final boolean useShape,
+                                  final boolean useTransl,
+                                  final boolean useNonOpaque,
+                                  final float factor)
+    {
+        Frame frame;
+        done = false;
+
+        if (useNonOpaque) {
+            if (useSwing) {
+                frame = new NonOpaqueJFrame();
+//                frame = new NonOpaqueJAppletFrame(gc);
+            } else {
+                frame = new NonOpaqueFrame();
+            }
+            animateComponent(frame);
+        } else if (useSwing) {
+            frame = new JFrame("Swing Frame");
+            JComponent p = new JButton("Swing!");
+            p.setPreferredSize(new Dimension(200, 100));
+            frame.add("North", p);
+            p = new MyJPanel();
+            animateComponent(p);
+            frame.add("Center", p);
+        } else {
+            frame = new Frame("AWT Frame") {
+                public void paint(Graphics g) {
+                    g.setColor(Color.red);
+                    g.fillRect(0, 0, 100, 100);
+                }
+            };
+            frame.setLayout(new BorderLayout());
+            Canvas c = new MyCanvas();
+            frame.add("North", c);
+            animateComponent(c);
+            c = new MyCanvas();
+            frame.add("Center", c);
+            animateComponent(c);
+            c = new MyCanvas();
+            frame.add("South", c);
+            animateComponent(c);
+        }
+        final Frame finalFrame = frame;
+        frame.addWindowListener(new WindowAdapter() {
+            @Override
+            public void windowClosing(WindowEvent e) {
+                finalFrame.dispose();
+                done = true;
+            }
+        });
+        frame.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                finalFrame.dispose();
+                done = true;
+            }
+        });
+        frame.setPreferredSize(new Dimension(800, 600));
+
+        if (useShape) {
+            frame.setUndecorated(true);
+        }
+
+        frame.setLocation(450, 10);
+        frame.pack();
+
+        GraphicsDevice gd = frame.getGraphicsConfiguration().getDevice();
+        if (useShape) {
+            if (gd.isWindowTranslucencySupported(WindowTranslucency.PERPIXEL_TRANSPARENT)) {
+                System.out.println("applying PERPIXEL_TRANSPARENT");
+                frame.setShape(new Ellipse2D.Double(0, 0, frame.getWidth(),
+                                                    frame.getHeight()/3));
+                frame.setTitle("PERPIXEL_TRANSPARENT");
+            } else {
+                System.out.println("Passed: PERPIXEL_TRANSPARENT unsupported");
+            }
+        }
+        if (useTransl) {
+            if (gd.isWindowTranslucencySupported(WindowTranslucency.TRANSLUCENT)) {
+                System.out.println("applying TRANSLUCENT");
+                frame.setOpacity(factor);
+                frame.setTitle("TRANSLUCENT");
+            } else {
+                System.out.println("Passed: TRANSLUCENT unsupported");
+            }
+        }
+        if (useNonOpaque) {
+            if (gd.isWindowTranslucencySupported(WindowTranslucency.PERPIXEL_TRANSLUCENT)) {
+                System.out.println("applying PERPIXEL_TRANSLUCENT");
+                frame.setBackground(new Color(0, 0, 0, 0));
+                frame.setTitle("PERPIXEL_TRANSLUCENT");
+            } else {
+                System.out.println("Passed: PERPIXEL_TRANSLUCENT unsupported");
+            }
+        }
+        frame.setVisible(true);
+        return frame;
+    }
+
+    public static void stopThreads() {
+        done = true;
+    }
+
+    private static void animateComponent(final Component comp) {
+        Thread t = new Thread(new Runnable() {
+            public void run() {
+                do {
+                    try {
+                        Thread.sleep(50);
+                    } catch (InterruptedException ex) {}
+                    comp.repaint();
+                } while (!done);
+            }
+        });
+        t.start();
+    }
+
+    public static void main(String[] args) throws Exception {
+        SwingUtilities.invokeLater(new Runnable() {
+            public void run() {
+                TSFrame.createGui(useSwing,
+                                  useShape,
+                                  useTransl,
+                                  useNonOpaque,
+                                  0.7f);
+            }
+        });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Window/TranslucentShapedFrameTest/TranslucentShapedFrameTest.form	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Component class="javax.swing.ButtonGroup" name="createDisposeGrp">
+    </Component>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+    <Property name="title" type="java.lang.String" value="TranslucentShapedFrameTest"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <Component id="transparencySld" pref="375" max="32767" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+                  <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
+                  <Group type="102" alignment="0" attributes="0">
+                      <Component id="shapedCb" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="nonOpaqueChb" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="useSwingCb" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace pref="102" max="32767" attributes="0"/>
+                  </Group>
+                  <Group type="102" alignment="0" attributes="0">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" alignment="0" attributes="0">
+                              <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace pref="314" max="-2" attributes="0"/>
+                          </Group>
+                          <Group type="102" alignment="0" attributes="0">
+                              <Component id="passedBtn" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Component id="failedBtn" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace pref="241" max="-2" attributes="0"/>
+                          </Group>
+                          <Component id="jScrollPane1" alignment="1" pref="375" max="32767" attributes="0"/>
+                          <Group type="102" alignment="0" attributes="0">
+                              <Component id="createFrameBtn" min="-2" pref="187" max="-2" attributes="0"/>
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Component id="disposeFrameBtn" min="-2" pref="182" max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="transparencySld" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="shapedCb" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="nonOpaqueChb" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="useSwingCb" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="disposeFrameBtn" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="createFrameBtn" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace min="-2" pref="17" max="-2" attributes="0"/>
+              <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jScrollPane1" min="-2" pref="148" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="passedBtn" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="failedBtn" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Component class="javax.swing.JLabel" name="jLabel1">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Frame Opacity:"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JSlider" name="transparencySld">
+      <Properties>
+        <Property name="majorTickSpacing" type="int" value="10"/>
+        <Property name="minorTickSpacing" type="int" value="5"/>
+        <Property name="paintLabels" type="boolean" value="true"/>
+        <Property name="paintTicks" type="boolean" value="true"/>
+        <Property name="value" type="int" value="100"/>
+      </Properties>
+      <Events>
+        <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="transparencySldStateChanged"/>
+      </Events>
+    </Component>
+    <Component class="javax.swing.JCheckBox" name="shapedCb">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Shaped Frame"/>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
+            <EmptyBorder bottom="0" left="0" right="0" top="0"/>
+          </Border>
+        </Property>
+        <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
+          <Insets value="[0, 0, 0, 0]"/>
+        </Property>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="shapedCbActionPerformed"/>
+      </Events>
+    </Component>
+    <Component class="javax.swing.JCheckBox" name="nonOpaqueChb">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Non Opaque Frame"/>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
+            <EmptyBorder bottom="0" left="0" right="0" top="0"/>
+          </Border>
+        </Property>
+        <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
+          <Insets value="[0, 0, 0, 0]"/>
+        </Property>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="nonOpaqueChbActionPerformed"/>
+      </Events>
+    </Component>
+    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
+      <AuxValues>
+        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+      </AuxValues>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+      <SubComponents>
+        <Component class="javax.swing.JTextArea" name="jTextArea1">
+          <Properties>
+            <Property name="columns" type="int" value="20"/>
+            <Property name="rows" type="int" value="5"/>
+            <Property name="text" type="java.lang.String" value="Create translucent and/or shaped, or&#xa;non-opaque frame. Make sure it behaves&#xa;correctly (no artifacts left on the screen&#xa;when dragging - if dragging is possible).&#xa;Click &quot;Passed&quot; if the test behaves correctly,&#xa;&quot;Falied&quot; otherwise."/>
+          </Properties>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Component class="javax.swing.JLabel" name="jLabel2">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Instructions:"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JButton" name="passedBtn">
+      <Properties>
+        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+          <Color blue="64" green="ff" red="81" type="rgb"/>
+        </Property>
+        <Property name="text" type="java.lang.String" value="Passed"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="passedBtnActionPerformed"/>
+      </Events>
+    </Component>
+    <Component class="javax.swing.JButton" name="failedBtn">
+      <Properties>
+        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+          <Color blue="0" green="0" id="red" palette="1" red="ff" type="palette"/>
+        </Property>
+        <Property name="text" type="java.lang.String" value="Failed"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="failedBtnActionPerformed"/>
+      </Events>
+    </Component>
+    <Component class="javax.swing.JToggleButton" name="createFrameBtn">
+      <Properties>
+        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
+          <ComponentRef name="createDisposeGrp"/>
+        </Property>
+        <Property name="text" type="java.lang.String" value="Create Frame"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="createFrameBtnActionPerformed"/>
+      </Events>
+    </Component>
+    <Component class="javax.swing.JToggleButton" name="disposeFrameBtn">
+      <Properties>
+        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
+          <ComponentRef name="createDisposeGrp"/>
+        </Property>
+        <Property name="selected" type="boolean" value="true"/>
+        <Property name="text" type="java.lang.String" value="Dispose Frame"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="disposeFrameBtnActionPerformed"/>
+      </Events>
+    </Component>
+    <Component class="javax.swing.JCheckBox" name="useSwingCb">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Use JFrame"/>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
+            <EmptyBorder bottom="0" left="0" right="0" top="0"/>
+          </Border>
+        </Property>
+        <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
+          <Insets value="[0, 0, 0, 0]"/>
+        </Property>
+      </Properties>
+    </Component>
+  </SubComponents>
+</Form>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Window/TranslucentShapedFrameTest/TranslucentShapedFrameTest.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,339 @@
+/*
+ * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test %I% %E%
+ * @bug 6655001 6670649 6687141
+ * @summary Tests that hw acceleration doesn't affect translucent/shaped windows
+ * @author Dmitri.Trembovetski@sun.com: area=Graphics
+ * @compile -XDignore.symbol.file=true TranslucentShapedFrameTest.java
+ * @compile -XDignore.symbol.file=true TSFrame.java
+ * @run main/manual/othervm TranslucentShapedFrameTest
+ * @run main/manual/othervm -Dsun.java2d.noddraw=true TranslucentShapedFrameTest
+ * @run main/manual/othervm -Dsun.java2d.opengl=True TranslucentShapedFrameTest
+ */
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsDevice.WindowTranslucency;
+import java.awt.GraphicsEnvironment;
+import java.awt.Shape;
+import java.awt.geom.Ellipse2D;
+import java.util.concurrent.CountDownLatch;
+import javax.swing.JSlider;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+
+public class TranslucentShapedFrameTest extends javax.swing.JFrame {
+    Frame testFrame;
+    static CountDownLatch done;
+    static volatile boolean failed = false;
+    GraphicsConfiguration gcToUse = null;
+
+    /**
+     * Creates new form TranslucentShapedFrameTest
+     */
+    public TranslucentShapedFrameTest() {
+        // not necessary, but we just look nicer
+        try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception ex) {}
+
+        initComponents();
+        checkEffects();
+
+        SwingUtilities.updateComponentTreeUI(this);
+    }
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
+    private void initComponents() {
+        createDisposeGrp = new javax.swing.ButtonGroup();
+        jLabel1 = new javax.swing.JLabel();
+        transparencySld = new javax.swing.JSlider();
+        shapedCb = new javax.swing.JCheckBox();
+        nonOpaqueChb = new javax.swing.JCheckBox();
+        jScrollPane1 = new javax.swing.JScrollPane();
+        jTextArea1 = new javax.swing.JTextArea();
+        jLabel2 = new javax.swing.JLabel();
+        passedBtn = new javax.swing.JButton();
+        failedBtn = new javax.swing.JButton();
+        createFrameBtn = new javax.swing.JToggleButton();
+        disposeFrameBtn = new javax.swing.JToggleButton();
+        useSwingCb = new javax.swing.JCheckBox();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        setTitle("TranslucentShapedFrameTest");
+        jLabel1.setText("Frame Opacity:");
+
+        transparencySld.setMajorTickSpacing(10);
+        transparencySld.setMinorTickSpacing(5);
+        transparencySld.setPaintLabels(true);
+        transparencySld.setPaintTicks(true);
+        transparencySld.setValue(100);
+        transparencySld.addChangeListener(new javax.swing.event.ChangeListener() {
+            public void stateChanged(javax.swing.event.ChangeEvent evt) {
+                transparencySldStateChanged(evt);
+            }
+        });
+
+        shapedCb.setText("Shaped Frame");
+        shapedCb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
+        shapedCb.setMargin(new java.awt.Insets(0, 0, 0, 0));
+        shapedCb.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                shapedCbActionPerformed(evt);
+            }
+        });
+
+        nonOpaqueChb.setText("Non Opaque Frame");
+        nonOpaqueChb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
+        nonOpaqueChb.setMargin(new java.awt.Insets(0, 0, 0, 0));
+        nonOpaqueChb.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                nonOpaqueChbActionPerformed(evt);
+            }
+        });
+
+        jTextArea1.setColumns(20);
+        jTextArea1.setRows(5);
+        jTextArea1.setText("Create translucent and/or shaped, or\nnon-opaque frame. Make sure it behaves\ncorrectly (no artifacts left on the screen\nwhen dragging - if dragging is possible).\nClick \"Passed\" if the test behaves correctly,\n\"Falied\" otherwise.");
+        jScrollPane1.setViewportView(jTextArea1);
+
+        jLabel2.setText("Instructions:");
+
+        passedBtn.setBackground(new Color(129, 255, 100));
+        passedBtn.setText("Passed");
+        passedBtn.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                passedBtnActionPerformed(evt);
+            }
+        });
+
+        failedBtn.setBackground(Color.red);
+        failedBtn.setText("Failed");
+        failedBtn.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                failedBtnActionPerformed(evt);
+            }
+        });
+
+        createDisposeGrp.add(createFrameBtn);
+        createFrameBtn.setText("Create Frame");
+        createFrameBtn.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                createFrameBtnActionPerformed(evt);
+            }
+        });
+
+        createDisposeGrp.add(disposeFrameBtn);
+        disposeFrameBtn.setSelected(true);
+        disposeFrameBtn.setText("Dispose Frame");
+        disposeFrameBtn.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                disposeFrameBtnActionPerformed(evt);
+            }
+        });
+
+        useSwingCb.setText("Use JFrame");
+        useSwingCb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
+        useSwingCb.setMargin(new java.awt.Insets(0, 0, 0, 0));
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(layout.createSequentialGroup()
+                        .addComponent(transparencySld, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)
+                        .addContainerGap())
+                    .addComponent(jLabel1)
+                    .addGroup(layout.createSequentialGroup()
+                        .addComponent(shapedCb)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                        .addComponent(nonOpaqueChb)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                        .addComponent(useSwingCb)
+                        .addContainerGap(102, Short.MAX_VALUE))
+                    .addGroup(layout.createSequentialGroup()
+                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addGroup(layout.createSequentialGroup()
+                                .addComponent(jLabel2)
+                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 314, javax.swing.GroupLayout.PREFERRED_SIZE))
+                            .addGroup(layout.createSequentialGroup()
+                                .addComponent(passedBtn)
+                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                                .addComponent(failedBtn)
+                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 241, javax.swing.GroupLayout.PREFERRED_SIZE))
+                            .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)
+                            .addGroup(layout.createSequentialGroup()
+                                .addComponent(createFrameBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                                .addComponent(disposeFrameBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 182, javax.swing.GroupLayout.PREFERRED_SIZE)))
+                        .addContainerGap())))
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jLabel1)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(transparencySld, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(shapedCb)
+                    .addComponent(nonOpaqueChb)
+                    .addComponent(useSwingCb))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(disposeFrameBtn)
+                    .addComponent(createFrameBtn))
+                .addGap(17, 17, 17)
+                .addComponent(jLabel2)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(passedBtn)
+                    .addComponent(failedBtn))
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void nonOpaqueChbActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nonOpaqueChbActionPerformed
+        if (testFrame != null) {
+            // REMIND: this path in the test doesn't work well (test bug)
+            testFrame.setBackground(new Color(0, 0, 0, nonOpaqueChb.isSelected() ? 0 : 255));
+        }
+    }//GEN-LAST:event_nonOpaqueChbActionPerformed
+
+    private void shapedCbActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_shapedCbActionPerformed
+        if (testFrame != null) {
+            Shape s = null;
+            if (shapedCb.isSelected()) {
+                s = new Ellipse2D.Double(0, 0,
+                                         testFrame.getWidth(),
+                                         testFrame.getHeight());
+            }
+            testFrame.setShape(s);
+        }
+    }//GEN-LAST:event_shapedCbActionPerformed
+
+    private void transparencySldStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_transparencySldStateChanged
+        JSlider source = (JSlider)evt.getSource();
+            int transl = transparencySld.getValue();
+            if (testFrame != null) {
+                testFrame.setOpacity((float)transl/100f);
+            }
+    }//GEN-LAST:event_transparencySldStateChanged
+
+    private void failedBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_failedBtnActionPerformed
+        disposeFrameBtnActionPerformed(evt);
+        dispose();
+        failed = true;
+        done.countDown();
+    }//GEN-LAST:event_failedBtnActionPerformed
+
+    private void disposeFrameBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_disposeFrameBtnActionPerformed
+        TSFrame.stopThreads();
+        if (testFrame != null) {
+            testFrame.dispose();
+            testFrame = null;
+        }
+    }//GEN-LAST:event_disposeFrameBtnActionPerformed
+
+    private void createFrameBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createFrameBtnActionPerformed
+        disposeFrameBtnActionPerformed(evt);
+        int transl = transparencySld.getValue();
+        testFrame = TSFrame.createGui(
+                useSwingCb.isSelected(), shapedCb.isSelected(),
+                (transl < 100), nonOpaqueChb.isSelected(),
+                (float)transl/100f);
+    }//GEN-LAST:event_createFrameBtnActionPerformed
+
+    private void passedBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_passedBtnActionPerformed
+        disposeFrameBtnActionPerformed(evt);
+        dispose();
+        done.countDown();
+    }//GEN-LAST:event_passedBtnActionPerformed
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[]) {
+        done = new CountDownLatch(1);
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new TranslucentShapedFrameTest().setVisible(true);
+            }
+        });
+        try {
+            done.await();
+        } catch (InterruptedException ex) {}
+        if (failed) {
+            throw new RuntimeException("Test FAILED");
+        }
+        System.out.println("Test PASSED");
+    }
+
+    private void checkEffects() {
+        GraphicsDevice gd = getGraphicsConfiguration().getDevice();
+        if (!gd.isWindowTranslucencySupported(WindowTranslucency.PERPIXEL_TRANSPARENT)) {
+            shapedCb.setEnabled(false);
+        }
+        if (!gd.isWindowTranslucencySupported(WindowTranslucency.TRANSLUCENT)) {
+            transparencySld.setEnabled(false);
+        }
+        if (!gd.isWindowTranslucencySupported(WindowTranslucency.PERPIXEL_TRANSLUCENT)) {
+            nonOpaqueChb.setEnabled(false);
+        }
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.ButtonGroup createDisposeGrp;
+    private javax.swing.JToggleButton createFrameBtn;
+    private javax.swing.JToggleButton disposeFrameBtn;
+    private javax.swing.JButton failedBtn;
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JScrollPane jScrollPane1;
+    private javax.swing.JTextArea jTextArea1;
+    private javax.swing.JCheckBox nonOpaqueChb;
+    private javax.swing.JButton passedBtn;
+    private javax.swing.JCheckBox shapedCb;
+    private javax.swing.JSlider transparencySld;
+    private javax.swing.JCheckBox useSwingCb;
+    // End of variables declaration//GEN-END:variables
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/image/ConvolveOp/EdgeNoOpCrash.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug     6726779
+ * @summary Test verifies that ConvolveOp with the EDGE_NO_OP edge condition
+ *          does not cause JVM crash if size of source raster elements is
+ *          greather than size of the destination raster element.
+ *
+ * @run     main EdgeNoOpCrash
+ */
+import java.awt.Point;
+import java.awt.image.ConvolveOp;
+import java.awt.image.DataBuffer;
+import java.awt.image.ImagingOpException;
+import java.awt.image.Kernel;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+import java.util.Arrays;
+
+public class EdgeNoOpCrash {
+    private static final int w = 3000;
+    private static final int h = 200;
+
+    public static void main(String[] args) {
+        crashTest();
+    }
+
+    private static void crashTest() {
+        Raster src = createSrcRaster();
+        WritableRaster dst = createDstRaster();
+        ConvolveOp op = createConvolveOp(ConvolveOp.EDGE_NO_OP);
+        try {
+            op.filter(src, dst);
+        } catch (ImagingOpException e) {
+            /*
+             * The test pair of source and destination rasters
+             * may cause failure of the medialib convolution routine,
+             * so this exception is expected.
+             *
+             * The JVM crash is the only manifestation of this
+             * test failure.
+             */
+        }
+        System.out.println("Test PASSED.");
+    }
+
+    private static Raster createSrcRaster() {
+        WritableRaster r = Raster.createInterleavedRaster(DataBuffer.TYPE_USHORT,
+                w, h, 4, new Point(0, 0));
+
+        return r;
+    }
+
+    private static WritableRaster createDstRaster() {
+        WritableRaster r = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE,
+                w, h, 4, new Point(0, 0));
+
+        return r;
+    }
+
+    private static ConvolveOp createConvolveOp(int edgeHint) {
+        final int kw = 3;
+        final int kh = 3;
+        float[] kdata = new float[kw * kh];
+        float v = 1f / kdata.length;
+        Arrays.fill(kdata, v);
+
+        Kernel k = new Kernel(kw, kh, kdata);
+        ConvolveOp op = new ConvolveOp(k, edgeHint, null);
+
+        return op;
+    }
+}
\ No newline at end of file
--- a/jdk/test/java/lang/Class/getEnclosingConstructor/EnclosingConstructorTests.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/lang/Class/getEnclosingConstructor/EnclosingConstructorTests.java	Wed Jul 05 16:52:18 2017 +0200
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 4962341
+ * @bug 4962341 6832557
  * @summary Check getEnclosingMethod method
  * @author Joseph D. Darcy
  */
@@ -57,8 +57,8 @@
     }
 
 
-    static int examine(Class enclosedClass, String constructorSig) {
-        Constructor c = enclosedClass.getEnclosingConstructor();
+    static int examine(Class<?> enclosedClass, String constructorSig) {
+        Constructor<?> c = enclosedClass.getEnclosingConstructor();
         if (c == null && constructorSig == null)
             return 0;
 
--- a/jdk/test/java/lang/instrument/ParallelTransformerLoader.sh	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/lang/instrument/ParallelTransformerLoader.sh	Wed Jul 05 16:52:18 2017 +0200
@@ -23,6 +23,7 @@
 
 # @test
 # @bug 5088398
+# @ignore until bug 6835233 dealt with
 # @summary Test parallel class loading by parallel transformers.
 # @author Daniel D. Daugherty as modified from the code of Daryl Puryear @ Wily
 #
--- a/jdk/test/java/lang/management/ThreadMXBean/ThreadStateTest.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/lang/management/ThreadMXBean/ThreadStateTest.java	Wed Jul 05 16:52:18 2017 +0200
@@ -23,7 +23,8 @@
 
 /*
  * @test
- * @bug     4967283
+ * @bug     4967283 5080203
+ * @ignore  Due to 5080203, cannot rely on this test always passing.
  * @summary Basic unit test of thread states returned by
  *          ThreadMXBean.getThreadInfo.getThreadState().
  *          It also tests lock information returned by ThreadInfo.
--- a/jdk/test/java/nio/Buffer/Basic-X.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/nio/Buffer/Basic-X.java	Wed Jul 05 16:52:18 2017 +0200
@@ -365,8 +365,11 @@
 
         b.position(2);
         ck(b, b.charAt(1), 'd');
-        CharBuffer c = (CharBuffer)b.subSequence(1, 4);
-        ck(b, b.subSequence(1, 4).toString().equals("def"));
+        CharBuffer c = b.subSequence(1, 4);
+        ck(c, c.capacity(), b.capacity());
+        ck(c, c.position(), b.position()+1);
+        ck(c, c.limit(), b.position()+4);
+        ck(c, b.subSequence(1, 4).toString().equals("def"));
 
         // 4938424
         b.position(4);
@@ -722,6 +725,8 @@
         ck(b, start, b.position());
         ck(b, end, b.limit());
         ck(b, s.length(), b.capacity());
+        b.position(6);
+        ck(b, b.subSequence(0,3).toString().equals("ghi"));
 
         // The index, relative to the position, must be non-negative and
         // smaller than remaining().
--- a/jdk/test/java/nio/Buffer/Basic.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/nio/Buffer/Basic.java	Wed Jul 05 16:52:18 2017 +0200
@@ -25,7 +25,7 @@
  * @summary Unit test for buffers
  * @bug 4413135 4414911 4416536 4416562 4418782 4471053 4472779 4490253 4523725
  *      4526177 4463011 4660660 4661219 4663521 4782970 4804304 4938424 6231529
- *      6221101 6234263 6535542 6591971 6593946
+ *      6221101 6234263 6535542 6591971 6593946 6795561
  * @author Mark Reinhold
  */
 
--- a/jdk/test/java/nio/Buffer/BasicByte.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicByte.java	Wed Jul 05 16:52:18 2017 +0200
@@ -375,6 +375,9 @@
 
 
 
+
+
+
         // Compact
 
         relPut(b);
@@ -786,6 +789,8 @@
 
 
 
+
+
     public static void test(final byte [] ba) {
         int offset = 47;
         int length = 900;
--- a/jdk/test/java/nio/Buffer/BasicChar.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicChar.java	Wed Jul 05 16:52:18 2017 +0200
@@ -365,8 +365,11 @@
 
         b.position(2);
         ck(b, b.charAt(1), 'd');
-        CharBuffer c = (CharBuffer)b.subSequence(1, 4);
-        ck(b, b.subSequence(1, 4).toString().equals("def"));
+        CharBuffer c = b.subSequence(1, 4);
+        ck(c, c.capacity(), b.capacity());
+        ck(c, c.position(), b.position()+1);
+        ck(c, c.limit(), b.position()+4);
+        ck(c, b.subSequence(1, 4).toString().equals("def"));
 
         // 4938424
         b.position(4);
@@ -722,6 +725,8 @@
         ck(b, start, b.position());
         ck(b, end, b.limit());
         ck(b, s.length(), b.capacity());
+        b.position(6);
+        ck(b, b.subSequence(0,3).toString().equals("ghi"));
 
         // The index, relative to the position, must be non-negative and
         // smaller than remaining().
--- a/jdk/test/java/nio/Buffer/BasicDouble.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicDouble.java	Wed Jul 05 16:52:18 2017 +0200
@@ -375,6 +375,9 @@
 
 
 
+
+
+
         // Compact
 
         relPut(b);
@@ -786,6 +789,8 @@
 
 
 
+
+
     public static void test(final double [] ba) {
         int offset = 47;
         int length = 900;
--- a/jdk/test/java/nio/Buffer/BasicFloat.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicFloat.java	Wed Jul 05 16:52:18 2017 +0200
@@ -375,6 +375,9 @@
 
 
 
+
+
+
         // Compact
 
         relPut(b);
@@ -786,6 +789,8 @@
 
 
 
+
+
     public static void test(final float [] ba) {
         int offset = 47;
         int length = 900;
--- a/jdk/test/java/nio/Buffer/BasicInt.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicInt.java	Wed Jul 05 16:52:18 2017 +0200
@@ -375,6 +375,9 @@
 
 
 
+
+
+
         // Compact
 
         relPut(b);
@@ -786,6 +789,8 @@
 
 
 
+
+
     public static void test(final int [] ba) {
         int offset = 47;
         int length = 900;
--- a/jdk/test/java/nio/Buffer/BasicLong.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicLong.java	Wed Jul 05 16:52:18 2017 +0200
@@ -375,6 +375,9 @@
 
 
 
+
+
+
         // Compact
 
         relPut(b);
@@ -786,6 +789,8 @@
 
 
 
+
+
     public static void test(final long [] ba) {
         int offset = 47;
         int length = 900;
--- a/jdk/test/java/nio/Buffer/BasicShort.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicShort.java	Wed Jul 05 16:52:18 2017 +0200
@@ -375,6 +375,9 @@
 
 
 
+
+
+
         // Compact
 
         relPut(b);
@@ -786,6 +789,8 @@
 
 
 
+
+
     public static void test(final short [] ba) {
         int offset = 47;
         int length = 900;
--- a/jdk/test/java/nio/channels/AsynchronousFileChannel/Basic.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousFileChannel/Basic.java	Wed Jul 05 16:52:18 2017 +0200
@@ -22,7 +22,7 @@
  */
 
 /* @test
- * @bug 4607272
+ * @bug 4607272 6822643 6830721
  * @summary Unit test for AsynchronousFileChannel
  */
 
@@ -51,7 +51,6 @@
         // run tests
         testUsingCompletionHandlers(ch);
         testUsingWaitOnResult(ch);
-        testLocking(ch);
         testInterruptHandlerThread(ch);
 
         // close channel and invoke test that expects channel to be closed
@@ -59,6 +58,7 @@
         testClosedChannel(ch);
 
         // these tests open the file themselves
+        testLocking(blah.toPath());
         testCustomThreadPool(blah.toPath());
         testAsynchronousClose(blah.toPath());
         testCancel(blah.toPath());
@@ -160,47 +160,54 @@
     }
 
     // exercise lock methods
-    static void testLocking(AsynchronousFileChannel ch)
-        throws IOException
-    {
+    static void testLocking(Path file) throws IOException {
         System.out.println("testLocking");
 
-        // test 1 - acquire lock and check that tryLock throws
-        // OverlappingFileLockException
+        AsynchronousFileChannel ch = AsynchronousFileChannel
+            .open(file, READ, WRITE);
         FileLock fl;
         try {
-            fl = ch.lock().get();
-        } catch (ExecutionException x) {
-            throw new RuntimeException(x);
-        } catch (InterruptedException x) {
-            throw new RuntimeException("Should not be interrupted");
-        }
-        if (!fl.acquiredBy().equals(ch))
-            throw new RuntimeException("FileLock#acquiredBy returned incorrect channel");
-        try {
-            ch.tryLock();
-            throw new RuntimeException("OverlappingFileLockException expected");
-        } catch (OverlappingFileLockException x) {
-        }
-        fl.release();
+            // test 1 - acquire lock and check that tryLock throws
+            // OverlappingFileLockException
+            try {
+                fl = ch.lock().get();
+            } catch (ExecutionException x) {
+                throw new RuntimeException(x);
+            } catch (InterruptedException x) {
+                throw new RuntimeException("Should not be interrupted");
+            }
+            if (!fl.acquiredBy().equals(ch))
+                throw new RuntimeException("FileLock#acquiredBy returned incorrect channel");
+            try {
+                ch.tryLock();
+                throw new RuntimeException("OverlappingFileLockException expected");
+            } catch (OverlappingFileLockException x) {
+            }
+            fl.release();
 
-        // test 2 - acquire try and check that lock throws OverlappingFileLockException
-        fl = ch.tryLock();
-        if (fl == null)
-            throw new RuntimeException("Unable to acquire lock");
-        try {
-            ch.lock(null, new CompletionHandler<FileLock,Void> () {
-                public void completed(FileLock result, Void att) {
-                }
-                public void failed(Throwable exc, Void att) {
-                }
-                public void cancelled(Void att) {
-                }
-            });
-            throw new RuntimeException("OverlappingFileLockException expected");
-        } catch (OverlappingFileLockException x) {
+            // test 2 - acquire try and check that lock throws OverlappingFileLockException
+            fl = ch.tryLock();
+            if (fl == null)
+                throw new RuntimeException("Unable to acquire lock");
+            try {
+                ch.lock(null, new CompletionHandler<FileLock,Void> () {
+                    public void completed(FileLock result, Void att) {
+                    }
+                    public void failed(Throwable exc, Void att) {
+                    }
+                    public void cancelled(Void att) {
+                    }
+                });
+                throw new RuntimeException("OverlappingFileLockException expected");
+            } catch (OverlappingFileLockException x) {
+            }
+        } finally {
+            ch.close();
         }
-        fl.release();
+
+        // test 3 - channel is closed so FileLock should no longer be valid
+        if (fl.isValid())
+            throw new RuntimeException("FileLock expected to be invalid");
     }
 
     // interrupt should not close channel
@@ -424,10 +431,11 @@
                 throw new RuntimeException("isCancelled not consistent");
             try {
                 res.get();
-                if (!cancelled)
+                if (cancelled)
                     throw new RuntimeException("CancellationException expected");
             } catch (CancellationException x) {
-                // expected
+                if (!cancelled)
+                    throw new RuntimeException("CancellationException not expected");
             } catch (ExecutionException x) {
                 throw new RuntimeException(x);
             } catch (InterruptedException x) {
@@ -435,9 +443,11 @@
             }
             try {
                 res.get(1, TimeUnit.SECONDS);
-                throw new RuntimeException("CancellationException expected");
+                if (cancelled)
+                    throw new RuntimeException("CancellationException expected");
             } catch (CancellationException x) {
-                // expected
+                if (!cancelled)
+                    throw new RuntimeException("CancellationException not expected");
             } catch (ExecutionException x) {
                 throw new RuntimeException(x);
             } catch (TimeoutException x) {
--- a/jdk/test/java/nio/channels/AsynchronousFileChannel/Lock.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousFileChannel/Lock.java	Wed Jul 05 16:52:18 2017 +0200
@@ -23,7 +23,7 @@
 
 
 /* @test
- * @bug 4607272
+ * @bug 4607272 6814948
  * @summary Unit test for AsynchronousFileChannel#lock method
  */
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/channels/FileChannel/ReleaseOnCloseDeadlock.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ * @bug 6543863
+ * @summary Try to cause a deadlock between (Asynchronous)FileChannel.close
+ *   and FileLock.release
+ */
+
+import java.io.*;
+import java.nio.file.Path;
+import static java.nio.file.StandardOpenOption.*;
+import java.nio.channels.*;
+import java.util.concurrent.*;
+
+public class ReleaseOnCloseDeadlock {
+    private static final int LOCK_COUNT = 1024;
+
+    public static void main(String[] args) throws IOException {
+        File blah = File.createTempFile("blah", null);
+        blah.deleteOnExit();
+        for (int i=0; i<100; i++) {
+            test(blah.toPath());
+        }
+    }
+
+    static void test(Path file) throws IOException {
+        FileLock[] locks = new FileLock[LOCK_COUNT];
+
+        FileChannel fc = FileChannel.open(file, READ, WRITE);
+        for (int i=0; i<LOCK_COUNT; i++) {
+            locks[i] = fc.lock(i, 1, true);
+        }
+        tryToDeadlock(fc, locks);
+
+        AsynchronousFileChannel ch = AsynchronousFileChannel.open(file, READ, WRITE);
+        for (int i=0; i<LOCK_COUNT; i++) {
+            try {
+                locks[i] = ch.lock(i, 1, true, null, null).get();
+            } catch (InterruptedException x) {
+                throw new RuntimeException(x);
+            } catch (ExecutionException x) {
+                throw new RuntimeException(x);
+            }
+        }
+        tryToDeadlock(ch, locks);
+    }
+
+    static void tryToDeadlock(final Channel channel, FileLock[] locks)
+        throws IOException
+    {
+        // start thread to close the file (and invalidate the locks)
+        Thread closer = new Thread(
+            new Runnable() {
+                public void run() {
+                    try {
+                        channel.close();
+                    } catch (IOException ignore) {
+                        ignore.printStackTrace();
+                    }
+                }});
+        closer.start();
+
+        // release the locks explicitly
+        for (int i=0; i<locks.length; i++) {
+            try {
+                locks[i].release();
+            } catch (ClosedChannelException ignore) { }
+        }
+
+        // we are done when closer has terminated
+        while (closer.isAlive()) {
+            try {
+                closer.join();
+            } catch (InterruptedException ignore) { }
+        }
+    }
+}
--- a/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.java	Wed Jul 05 16:52:18 2017 +0200
@@ -56,7 +56,7 @@
                         e.printStackTrace();
                     }
                 }
-            }
+            };
 
         Thread thread1 = new Thread(readObjectRunnable, "Read Object");
         Thread thread2 = new Thread(xmlRunnable, "XML");
--- a/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh	Wed Jul 05 16:52:18 2017 +0200
@@ -26,6 +26,7 @@
 
 # @test
 # @bug 6440846
+# @ignore until 6203816 is dealt with.
 # @summary make sure we do not deadlock between ExtClassLoader and AppClassLoader
 # @author Valerie Peng
 # @run shell/timeout=20 Deadlock2.sh
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/logging/LoggerSubclass.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2009 Google, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6830220 6278014
+ * @summary Test Logger subclasses
+ */
+
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.logging.LogRecord;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
+
+public class LoggerSubclass {
+    void test(String[] args) {
+        final String name = "myLogger";
+        final String message = "myMessage";
+        final AtomicInteger getHandlerCount = new AtomicInteger(0);
+        final AtomicLong lastSequenceNumber = new AtomicLong(-1L);
+        final AtomicInteger lastThreadID = new AtomicInteger(-1);
+        final Logger logger = new Logger(name, null) {
+            public Handler[] getHandlers() {
+                getHandlerCount.getAndIncrement();
+                return super.getHandlers();
+            }};
+        equal(logger.getName(), name);
+        equal(logger.getResourceBundle(), null);
+        equal(logger.getFilter(), null);
+        equal(logger.getLevel(), null);
+        check(logger.isLoggable(Level.WARNING));
+        logger.addHandler(new Handler() {
+            public void close() {}
+            public void flush() {}
+            public void publish(LogRecord l) {
+                equal(l.getLoggerName(), name);
+                equal(l.getMessage(), message);
+                equal(l.getResourceBundle(), null);
+                equal(l.getSourceClassName(), "LoggerSubclass");
+                equal(l.getSourceMethodName(), "test");
+                equal(l.getThrown(), null);
+                equal(l.getLevel(), Level.WARNING);
+
+                if (lastSequenceNumber.get() != -1) {
+                    equal(lastSequenceNumber.get() + 1,
+                          l.getSequenceNumber());
+                    equal(lastThreadID.get(),
+                          l.getThreadID());
+                    equal((int) Thread.currentThread().getId(),
+                          l.getThreadID());
+                }
+                lastSequenceNumber.set(l.getSequenceNumber());
+                lastThreadID.set(l.getThreadID());
+            }});
+        for (int i = 1; i < 4; i++) {
+            logger.warning(message); // Should invoke getHandlers()
+            equal(i, getHandlerCount.get());
+        }
+    }
+
+    //--------------------- Infrastructure ---------------------------
+    volatile int passed = 0, failed = 0;
+    void pass() {passed++;}
+    void fail() {failed++; Thread.dumpStack();}
+    void fail(String msg) {System.err.println(msg); fail();}
+    void unexpected(Throwable t) {failed++; t.printStackTrace();}
+    void check(boolean cond) {if (cond) pass(); else fail();}
+    void equal(Object x, Object y) {
+        if (x == null ? y == null : x.equals(y)) pass();
+        else fail(x + " not equal to " + y);}
+    public static void main(String[] args) throws Throwable {
+        try {new LoggerSubclass().instanceMain(args);}
+        catch (Throwable e) {throw e.getCause();}}
+    public void instanceMain(String[] args) throws Throwable {
+        try {test(args);} catch (Throwable t) {unexpected(t);}
+        System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
+        if (failed > 0) throw new AssertionError("Some tests failed");}
+}
--- a/jdk/test/java/util/logging/LoggingDeadlock2.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/java/util/logging/LoggingDeadlock2.java	Wed Jul 05 16:52:18 2017 +0200
@@ -23,10 +23,10 @@
 
 /*
  * @test
- * @bug     6467152
- * @ignore until 6716076 is fixed
+ * @bug     6467152 6716076 6829503
+ * @ignore Until made more stable, see 6829636.
  * @summary deadlock occurs in LogManager initialization and JVM termination
- * @author  Serguei Spitsyn / Hittachi
+ * @author  Serguei Spitsyn / Hitachi / Martin Buchholz
  *
  * @build    LoggingDeadlock2
  * @run  main/timeout=15 LoggingDeadlock2
@@ -47,43 +47,195 @@
  * This is a regression test for this bug.
  */
 
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.CyclicBarrier;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.LogManager;
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
 
-public class LoggingDeadlock2 implements Runnable {
-    static final java.io.PrintStream out = System.out;
-    static Object lock = new Object();
-    static int c = 0;
-    public static void main(String arg[]) {
-        out.println("\nThis test checks that there is no deadlock.");
-        out.println("If not crashed or timed-out then it is passed.");
+public class LoggingDeadlock2 {
+
+    public static void realMain(String arg[]) throws Throwable {
         try {
-            new Thread(new LoggingDeadlock2()).start();
-            synchronized(lock) {
-                c++;
-                if (c == 2) lock.notify();
-                else lock.wait();
+            System.out.println(javaChildArgs);
+            ProcessBuilder pb = new ProcessBuilder(javaChildArgs);
+            ProcessResults r = run(pb.start());
+            equal(r.exitValue(), 99);
+            equal(r.out(), "");
+            equal(r.err(), "");
+        } catch (Throwable t) { unexpected(t); }
+    }
+
+    public static class JavaChild {
+        public static void main(String args[]) throws Throwable {
+            final CyclicBarrier startingGate = new CyclicBarrier(2);
+            final Throwable[] thrown = new Throwable[1];
+
+            // Some random variation, to help tickle races.
+            final Random rnd = new Random();
+            final boolean dojoin = rnd.nextBoolean();
+            final int JITTER = 1024;
+            final int iters1 = rnd.nextInt(JITTER);
+            final int iters2 = JITTER - iters1;
+            final AtomicInteger counter = new AtomicInteger(0);
+
+            Thread exiter = new Thread() {
+                public void run() {
+                    try {
+                        startingGate.await();
+                        for (int i = 0; i < iters1; i++)
+                            counter.getAndIncrement();
+                        System.exit(99);
+                    } catch (Throwable t) {
+                        t.printStackTrace();
+                        System.exit(86);
+                    }
+                }};
+            exiter.start();
+
+            startingGate.await();
+            for (int i = 0; i < iters2; i++)
+                counter.getAndIncrement();
+            // This may or may not result in a first call to
+            // Runtime.addShutdownHook after shutdown has already
+            // commenced.
+            LogManager log = LogManager.getLogManager();
+
+            if (dojoin) {
+                exiter.join();
+                if (thrown[0] != null)
+                    throw new Error(thrown[0]);
+                check(counter.get() == JITTER);
             }
-            LogManager log = LogManager.getLogManager();
-            out.println("Test passed");
-        }
-        catch(Exception e) {
-            e.printStackTrace();
-            out.println("Test FAILED"); // Not expected
         }
     }
 
-    public void run() {
-        try {
-            synchronized(lock) {
-                c++;
-                if (c == 2) lock.notify();
-                else lock.wait();
-            }
-            System.exit(1);
+    //----------------------------------------------------------------
+    // The rest of this test is copied from ProcessBuilder/Basic.java
+    //----------------------------------------------------------------
+    private static final String javaExe =
+        System.getProperty("java.home") +
+        File.separator + "bin" + File.separator + "java";
+
+    private static final String classpath =
+        System.getProperty("java.class.path");
+
+    private static final List<String> javaChildArgs =
+        Arrays.asList(new String[]
+            { javaExe, "-classpath", classpath,
+              "LoggingDeadlock2$JavaChild"});
+
+    private static class ProcessResults {
+        private final String out;
+        private final String err;
+        private final int exitValue;
+        private final Throwable throwable;
+
+        public ProcessResults(String out,
+                              String err,
+                              int exitValue,
+                              Throwable throwable) {
+            this.out = out;
+            this.err = err;
+            this.exitValue = exitValue;
+            this.throwable = throwable;
         }
-        catch(Exception e) {
-            e.printStackTrace();
-            out.println("Test FAILED"); // Not expected
+
+        public String out()          { return out; }
+        public String err()          { return err; }
+        public int exitValue()       { return exitValue; }
+        public Throwable throwable() { return throwable; }
+
+        public String toString() {
+            StringBuilder sb = new StringBuilder();
+            sb.append("<STDOUT>\n" + out() + "</STDOUT>\n")
+                .append("<STDERR>\n" + err() + "</STDERR>\n")
+                .append("exitValue = " + exitValue + "\n");
+            if (throwable != null)
+                sb.append(throwable.getStackTrace());
+            return sb.toString();
         }
     }
+
+    private static class StreamAccumulator extends Thread {
+        private final InputStream is;
+        private final StringBuilder sb = new StringBuilder();
+        private Throwable throwable = null;
+
+        public String result () throws Throwable {
+            if (throwable != null)
+                throw throwable;
+            return sb.toString();
+        }
+
+        StreamAccumulator (InputStream is) {
+            this.is = is;
+        }
+
+        public void run() {
+            try {
+                Reader r = new InputStreamReader(is);
+                char[] buf = new char[4096];
+                int n;
+                while ((n = r.read(buf)) > 0) {
+                    sb.append(buf,0,n);
+                }
+            } catch (Throwable t) {
+                throwable = t;
+            } finally {
+                try { is.close(); }
+                catch (Throwable t) { throwable = t; }
+            }
+        }
+    }
+
+    private static ProcessResults run(Process p) {
+        Throwable throwable = null;
+        int exitValue = -1;
+        String out = "";
+        String err = "";
+
+        StreamAccumulator outAccumulator =
+            new StreamAccumulator(p.getInputStream());
+        StreamAccumulator errAccumulator =
+            new StreamAccumulator(p.getErrorStream());
+
+        try {
+            outAccumulator.start();
+            errAccumulator.start();
+
+            exitValue = p.waitFor();
+
+            outAccumulator.join();
+            errAccumulator.join();
+
+            out = outAccumulator.result();
+            err = errAccumulator.result();
+        } catch (Throwable t) {
+            throwable = t;
+        }
+
+        return new ProcessResults(out, err, exitValue, throwable);
+    }
+
+    //--------------------- Infrastructure ---------------------------
+    static volatile int passed = 0, failed = 0;
+    static void pass() {passed++;}
+    static void fail() {failed++; Thread.dumpStack();}
+    static void fail(String msg) {System.out.println(msg); fail();}
+    static void unexpected(Throwable t) {failed++; t.printStackTrace();}
+    static void check(boolean cond) {if (cond) pass(); else fail();}
+    static void check(boolean cond, String m) {if (cond) pass(); else fail(m);}
+    static void equal(Object x, Object y) {
+        if (x == null ? y == null : x.equals(y)) pass();
+        else fail(x + " not equal to " + y);}
+    public static void main(String[] args) throws Throwable {
+        try {realMain(args);} catch (Throwable t) {unexpected(t);}
+        System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
+        if (failed > 0) throw new AssertionError("Some tests failed");}
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/zip/ZipCoding.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,133 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 4244499 4532049 4700978 4820807 4980042
+ * @summary Test ZipInputStream, ZipOutputStream and ZipFile with non-UTF8 encoding
+ */
+
+import java.io.*;
+import java.nio.charset.*;
+import java.util.*;
+import java.util.zip.*;
+
+public class ZipCoding {
+
+    public static void main(String[] args) throws Exception {
+
+        test("MS932",
+             "\u4e00\u4e01", "\uff67\uff68\uff69\uff6a\uff6b\uff6c");
+
+        test("ibm437",
+             "\u00e4\u00fc", "German Umlaut \u00fc in comment");
+
+        test("utf-8",
+             "\u4e00\u4e01", "\uff67\uff68\uff69\uff6a\uff6b\uff6c");
+
+        test("utf-8",
+             "\u00e4\u00fc", "German Umlaut \u00fc in comment");
+
+        test("utf-8",
+             "Surrogate\ud801\udc01", "Surrogates \ud800\udc00 in comment");
+
+    }
+
+    static void testZipInputStream(InputStream is, Charset cs,
+                                   String name, String comment, byte[] bb)
+        throws Exception
+    {
+        ZipInputStream zis = new ZipInputStream(is, cs);
+        ZipEntry e = zis.getNextEntry();
+        if (e == null || ! name.equals(e.getName()))
+            throw new RuntimeException("ZipIS name doesn't match!");
+        byte[] bBuf = new byte[bb.length << 1];
+        int n = zis.read(bBuf, 0, bBuf.length);
+        if (n != bb.length ||
+            !Arrays.equals(bb, Arrays.copyOf(bBuf, n))) {
+            throw new RuntimeException("ZipIS content doesn't match!");
+        }
+        zis.close();
+    }
+
+    static void testZipFile(File f, Charset cs,
+                            String name, String comment, byte[] bb)
+        throws Exception
+    {
+        ZipFile zf = new ZipFile(f, cs);
+        Enumeration<? extends ZipEntry> zes = zf.entries();
+        ZipEntry e = (ZipEntry)zes.nextElement();
+        if (! name.equals(e.getName()) ||
+            ! comment.equals(e.getComment()))
+            throw new RuntimeException("ZipFile: name/comment doesn't match!");
+        InputStream is = zf.getInputStream(e);
+        if (is == null)
+            throw new RuntimeException("ZipFile: getIS failed!");
+        byte[] bBuf = new byte[bb.length << 1];
+        int n = 0;
+        int nn =0;
+        while ((nn = is.read(bBuf, n, bBuf.length-n)) != -1) {
+            n += nn;
+        }
+        if (n != bb.length ||
+            !Arrays.equals(bb, Arrays.copyOf(bBuf, n))) {
+            throw new RuntimeException("ZipFile content doesn't match!");
+        }
+        zf.close();
+    }
+
+    static void test(String csn, String name, String comment)
+        throws Exception
+    {
+        byte[] bb = "This is the conent of the zipfile".getBytes("ISO-8859-1");
+        Charset cs = Charset.forName(csn);
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ZipOutputStream zos = new ZipOutputStream(baos, cs);
+
+        ZipEntry e = new ZipEntry(name);
+        e.setComment(comment);
+        zos.putNextEntry(e);
+        zos.write(bb, 0, bb.length);
+        zos.closeEntry();
+        zos.close();
+        ByteArrayInputStream bis = new ByteArrayInputStream(baos.toByteArray());
+        testZipInputStream(bis, cs, name, comment, bb);
+
+        if ("utf-8".equals(csn)) {
+            // EFS should be set
+            bis.reset();
+            testZipInputStream(bis, Charset.forName("MS932"), name, comment, bb);
+        }
+
+        File f = new File(new File(System.getProperty("test.dir", ".")),
+                          "zfcoding.zip");
+        FileOutputStream fos = new FileOutputStream(f);
+        baos.writeTo(fos);
+        fos.close();
+        testZipFile(f, cs, name, comment, bb);
+        if ("utf-8".equals(csn)) {
+            testZipFile(f, Charset.forName("MS932"), name, comment, bb);
+        }
+        f.delete();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/zip/zip.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,743 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import java.io.*;
+import java.nio.charset.Charset;
+import java.util.*;
+import java.util.zip.*;
+import java.text.MessageFormat;
+
+/**
+ * A stripped-down version of Jar tool with a "-encoding" option to
+ * support non-UTF8 encoidng for entry name and comment.
+ */
+public class zip {
+    String program;
+    PrintStream out, err;
+    String fname;
+    String zname = "";
+    String[] files;
+    Charset cs = Charset.forName("UTF-8");
+
+    Map<String, File> entryMap = new HashMap<String, File>();
+    Set<File> entries = new LinkedHashSet<File>();
+    List<String> paths = new ArrayList<String>();
+
+    CRC32 crc32 = new CRC32();
+    /*
+     * cflag: create
+     * uflag: update
+     * xflag: xtract
+     * tflag: table
+     * vflag: verbose
+     * flag0: no zip compression (store only)
+     */
+    boolean cflag, uflag, xflag, tflag, vflag, flag0;
+
+    private static ResourceBundle rsrc;
+    static {
+        try {
+            // just use the jar message
+            rsrc = ResourceBundle.getBundle("sun.tools.jar.resources.jar");
+        } catch (MissingResourceException e) {
+            throw new Error("Fatal: Resource for jar is missing");
+        }
+    }
+
+    public zip(PrintStream out, PrintStream err, String program) {
+        this.out = out;
+        this.err = err;
+        this.program = program;
+    }
+
+    private boolean ok;
+
+    public synchronized boolean run(String args[]) {
+        ok = true;
+        if (!parseArgs(args)) {
+            return false;
+        }
+        try {
+            if (cflag || uflag) {
+                if (fname != null) {
+                    zname = fname.replace(File.separatorChar, '/');
+                    if (zname.startsWith("./")) {
+                        zname = zname.substring(2);
+                    }
+                }
+            }
+            if (cflag) {
+                OutputStream out;
+                if (fname != null) {
+                    out = new FileOutputStream(fname);
+                } else {
+                    out = new FileOutputStream(FileDescriptor.out);
+                    if (vflag) {
+                         vflag = false;
+                    }
+                }
+                expand(null, files, false);
+                create(new BufferedOutputStream(out, 4096));
+                out.close();
+            } else if (uflag) {
+                File inputFile = null, tmpFile = null;
+                FileInputStream in;
+                FileOutputStream out;
+                if (fname != null) {
+                    inputFile = new File(fname);
+                    String path = inputFile.getParent();
+                    tmpFile = File.createTempFile("tmp", null,
+                              new File((path == null) ? "." : path));
+                    in = new FileInputStream(inputFile);
+                    out = new FileOutputStream(tmpFile);
+                } else {
+                    in = new FileInputStream(FileDescriptor.in);
+                    out = new FileOutputStream(FileDescriptor.out);
+                    vflag = false;
+                }
+                expand(null, files, true);
+                boolean updateOk = update(in, new BufferedOutputStream(out));
+                if (ok) {
+                    ok = updateOk;
+                }
+                in.close();
+                out.close();
+                if (fname != null) {
+                    inputFile.delete();
+                    if (!tmpFile.renameTo(inputFile)) {
+                        tmpFile.delete();
+                        throw new IOException(getMsg("error.write.file"));
+                    }
+                    tmpFile.delete();
+                }
+            } else if (tflag) {
+                replaceFSC(files);
+                if (fname != null) {
+                    list(fname, files);
+                } else {
+                    InputStream in = new FileInputStream(FileDescriptor.in);
+                    try{
+                        list(new BufferedInputStream(in), files);
+                    } finally {
+                        in.close();
+                    }
+                }
+            } else if (xflag) {
+                replaceFSC(files);
+                if (fname != null && files != null) {
+                    extract(fname, files);
+                } else {
+                    InputStream in = (fname == null)
+                        ? new FileInputStream(FileDescriptor.in)
+                        : new FileInputStream(fname);
+                    try {
+                        extract(new BufferedInputStream(in), files);
+                    } finally {
+                        in.close();
+                    }
+                }
+            }
+        } catch (IOException e) {
+            fatalError(e);
+            ok = false;
+        } catch (Error ee) {
+            ee.printStackTrace();
+            ok = false;
+        } catch (Throwable t) {
+            t.printStackTrace();
+            ok = false;
+        }
+        out.flush();
+        err.flush();
+        return ok;
+    }
+
+
+    boolean parseArgs(String args[]) {
+        try {
+            args = parse(args);
+        } catch (FileNotFoundException e) {
+            fatalError(formatMsg("error.cant.open", e.getMessage()));
+            return false;
+        } catch (IOException e) {
+            fatalError(e);
+            return false;
+        }
+        int count = 1;
+        try {
+            String flags = args[0];
+            if (flags.startsWith("-")) {
+                flags = flags.substring(1);
+            }
+            for (int i = 0; i < flags.length(); i++) {
+                switch (flags.charAt(i)) {
+                case 'c':
+                    if (xflag || tflag || uflag) {
+                        usageError();
+                        return false;
+                    }
+                    cflag = true;
+                    break;
+                case 'u':
+                    if (cflag || xflag || tflag) {
+                        usageError();
+                        return false;
+                    }
+                    uflag = true;
+                    break;
+                case 'x':
+                    if (cflag || uflag || tflag) {
+                        usageError();
+                        return false;
+                    }
+                    xflag = true;
+                    break;
+                case 't':
+                    if (cflag || uflag || xflag) {
+                        usageError();
+                        return false;
+                    }
+                    tflag = true;
+                    break;
+                case 'v':
+                    vflag = true;
+                    break;
+                case 'f':
+                    fname = args[count++];
+                    break;
+                case '0':
+                    flag0 = true;
+                    break;
+                default:
+                    error(formatMsg("error.illegal.option",
+                                String.valueOf(flags.charAt(i))));
+                    usageError();
+                    return false;
+                }
+            }
+        } catch (ArrayIndexOutOfBoundsException e) {
+            usageError();
+            return false;
+        }
+        if (!cflag && !tflag && !xflag && !uflag) {
+            error(getMsg("error.bad.option"));
+            usageError();
+            return false;
+        }
+        /* parse file arguments */
+        int n = args.length - count;
+        if (n > 0) {
+            int k = 0;
+            String[] nameBuf = new String[n];
+            try {
+                for (int i = count; i < args.length; i++) {
+                    if (args[i].equals("-encoding")) {
+                        cs = Charset.forName(args[++i]);
+                    } else if (args[i].equals("-C")) {
+                        /* change the directory */
+                        String dir = args[++i];
+                        dir = (dir.endsWith(File.separator) ?
+                               dir : (dir + File.separator));
+                        dir = dir.replace(File.separatorChar, '/');
+                        while (dir.indexOf("//") > -1) {
+                            dir = dir.replace("//", "/");
+                        }
+                        paths.add(dir.replace(File.separatorChar, '/'));
+                        nameBuf[k++] = dir + args[++i];
+                    } else {
+                        nameBuf[k++] = args[i];
+                    }
+                }
+            } catch (ArrayIndexOutOfBoundsException e) {
+                e.printStackTrace();
+                usageError();
+                return false;
+            }
+            if (k != 0) {
+                files = new String[k];
+                System.arraycopy(nameBuf, 0, files, 0, k);
+            }
+        } else if (cflag || uflag) {
+            error(getMsg("error.bad.uflag"));
+            usageError();
+            return false;
+        }
+        return true;
+    }
+
+    void expand(File dir, String[] files, boolean isUpdate) {
+        if (files == null) {
+            return;
+        }
+        for (int i = 0; i < files.length; i++) {
+            File f;
+            if (dir == null) {
+                f = new File(files[i]);
+            } else {
+                f = new File(dir, files[i]);
+            }
+            if (f.isFile()) {
+                if (entries.add(f)) {
+                    if (isUpdate)
+                        entryMap.put(entryName(f.getPath()), f);
+                }
+            } else if (f.isDirectory()) {
+                if (entries.add(f)) {
+                    if (isUpdate) {
+                        String dirPath = f.getPath();
+                        dirPath = (dirPath.endsWith(File.separator)) ? dirPath :
+                            (dirPath + File.separator);
+                        entryMap.put(entryName(dirPath), f);
+                    }
+                    expand(f, f.list(), isUpdate);
+                }
+            } else {
+                error(formatMsg("error.nosuch.fileordir", String.valueOf(f)));
+                ok = false;
+            }
+        }
+    }
+
+    void create(OutputStream out) throws IOException
+    {
+        ZipOutputStream zos = new ZipOutputStream(out, cs);
+        if (flag0) {
+            zos.setMethod(ZipOutputStream.STORED);
+        }
+        for (File file: entries) {
+            addFile(zos, file);
+        }
+        zos.close();
+    }
+
+    boolean update(InputStream in, OutputStream out) throws IOException
+    {
+        ZipInputStream zis = new ZipInputStream(in, cs);
+        ZipOutputStream zos = new ZipOutputStream(out, cs);
+        ZipEntry e = null;
+        byte[] buf = new byte[1024];
+        int n = 0;
+        boolean updateOk = true;
+
+        // put the old entries first, replace if necessary
+        while ((e = zis.getNextEntry()) != null) {
+            String name = e.getName();
+            if (!entryMap.containsKey(name)) { // copy the old stuff
+                // do our own compression
+                ZipEntry e2 = new ZipEntry(name);
+                e2.setMethod(e.getMethod());
+                e2.setTime(e.getTime());
+                e2.setComment(e.getComment());
+                e2.setExtra(e.getExtra());
+                if (e.getMethod() == ZipEntry.STORED) {
+                    e2.setSize(e.getSize());
+                    e2.setCrc(e.getCrc());
+                }
+                zos.putNextEntry(e2);
+                while ((n = zis.read(buf, 0, buf.length)) != -1) {
+                    zos.write(buf, 0, n);
+                }
+            } else { // replace with the new files
+                File f = entryMap.get(name);
+                addFile(zos, f);
+                entryMap.remove(name);
+                entries.remove(f);
+            }
+        }
+
+        // add the remaining new files
+        for (File f: entries) {
+            addFile(zos, f);
+        }
+        zis.close();
+        zos.close();
+        return updateOk;
+    }
+
+    private String entryName(String name) {
+        name = name.replace(File.separatorChar, '/');
+        String matchPath = "";
+        for (String path : paths) {
+            if (name.startsWith(path) && (path.length() > matchPath.length())) {
+                matchPath = path;
+            }
+        }
+        name = name.substring(matchPath.length());
+
+        if (name.startsWith("/")) {
+            name = name.substring(1);
+        } else if (name.startsWith("./")) {
+            name = name.substring(2);
+        }
+        return name;
+    }
+
+    void addFile(ZipOutputStream zos, File file) throws IOException {
+        String name = file.getPath();
+        boolean isDir = file.isDirectory();
+        if (isDir) {
+            name = name.endsWith(File.separator) ? name :
+                (name + File.separator);
+        }
+        name = entryName(name);
+
+        if (name.equals("") || name.equals(".") || name.equals(zname)) {
+            return;
+        }
+
+        long size = isDir ? 0 : file.length();
+
+        if (vflag) {
+            out.print(formatMsg("out.adding", name));
+        }
+        ZipEntry e = new ZipEntry(name);
+        e.setTime(file.lastModified());
+        if (size == 0) {
+            e.setMethod(ZipEntry.STORED);
+            e.setSize(0);
+            e.setCrc(0);
+        } else if (flag0) {
+            e.setSize(size);
+            e.setMethod(ZipEntry.STORED);
+            crc32File(e, file);
+        }
+        zos.putNextEntry(e);
+        if (!isDir) {
+            byte[] buf = new byte[8192];
+            int len;
+            InputStream is = new BufferedInputStream(new FileInputStream(file));
+            while ((len = is.read(buf, 0, buf.length)) != -1) {
+                zos.write(buf, 0, len);
+            }
+            is.close();
+        }
+        zos.closeEntry();
+        /* report how much compression occurred. */
+        if (vflag) {
+            size = e.getSize();
+            long csize = e.getCompressedSize();
+            out.print(formatMsg2("out.size", String.valueOf(size),
+                        String.valueOf(csize)));
+            if (e.getMethod() == ZipEntry.DEFLATED) {
+                long ratio = 0;
+                if (size != 0) {
+                    ratio = ((size - csize) * 100) / size;
+                }
+                output(formatMsg("out.deflated", String.valueOf(ratio)));
+            } else {
+                output(getMsg("out.stored"));
+            }
+        }
+    }
+
+    private void crc32File(ZipEntry e, File f) throws IOException {
+        InputStream is = new BufferedInputStream(new FileInputStream(f));
+        byte[] buf = new byte[8192];
+        crc32.reset();
+        int r = 0;
+        int nread = 0;
+        long len = f.length();
+        while ((r = is.read(buf)) != -1) {
+            nread += r;
+            crc32.update(buf, 0, r);
+        }
+        is.close();
+        if (nread != (int) len) {
+            throw new ZipException(formatMsg(
+                        "error.incorrect.length", f.getPath()));
+        }
+        e.setCrc(crc32.getValue());
+    }
+
+    void replaceFSC(String files[]) {
+        if (files != null) {
+            for (String file : files) {
+                file = file.replace(File.separatorChar, '/');
+            }
+        }
+    }
+
+    Set<ZipEntry> newDirSet() {
+        return new HashSet<ZipEntry>() {
+            public boolean add(ZipEntry e) {
+                return (e == null || super.add(e));
+            }};
+    }
+
+    void updateLastModifiedTime(Set<ZipEntry> zes) throws IOException {
+        for (ZipEntry ze : zes) {
+            long lastModified = ze.getTime();
+            if (lastModified != -1) {
+                File f = new File(ze.getName().replace('/', File.separatorChar));
+                f.setLastModified(lastModified);
+            }
+        }
+    }
+
+    void extract(InputStream in, String files[]) throws IOException {
+        ZipInputStream zis = new ZipInputStream(in, cs);
+        ZipEntry e;
+        Set<ZipEntry> dirs = newDirSet();
+        while ((e = zis.getNextEntry()) != null) {
+            if (files == null) {
+                dirs.add(extractFile(zis, e));
+            } else {
+                String name = e.getName();
+                for (String file : files) {
+                    if (name.startsWith(file)) {
+                        dirs.add(extractFile(zis, e));
+                        break;
+                    }
+                }
+            }
+        }
+        updateLastModifiedTime(dirs);
+    }
+
+    void extract(String fname, String files[]) throws IOException {
+        ZipFile zf = new ZipFile(fname, cs);
+        Set<ZipEntry> dirs = newDirSet();
+        Enumeration<? extends ZipEntry> zes = zf.entries();
+        while (zes.hasMoreElements()) {
+            ZipEntry e = zes.nextElement();
+            InputStream is;
+            if (files == null) {
+                dirs.add(extractFile(zf.getInputStream(e), e));
+            } else {
+                String name = e.getName();
+                for (String file : files) {
+                    if (name.startsWith(file)) {
+                        dirs.add(extractFile(zf.getInputStream(e), e));
+                        break;
+                    }
+                }
+            }
+        }
+        zf.close();
+        updateLastModifiedTime(dirs);
+    }
+
+    ZipEntry extractFile(InputStream is, ZipEntry e) throws IOException {
+        ZipEntry rc = null;
+        String name = e.getName();
+        File f = new File(e.getName().replace('/', File.separatorChar));
+        if (e.isDirectory()) {
+            if (f.exists()) {
+                if (!f.isDirectory()) {
+                    throw new IOException(formatMsg("error.create.dir",
+                        f.getPath()));
+                }
+            } else {
+                if (!f.mkdirs()) {
+                    throw new IOException(formatMsg("error.create.dir",
+                        f.getPath()));
+                } else {
+                    rc = e;
+                }
+            }
+            if (vflag) {
+                output(formatMsg("out.create", name));
+            }
+        } else {
+            if (f.getParent() != null) {
+                File d = new File(f.getParent());
+                if (!d.exists() && !d.mkdirs() || !d.isDirectory()) {
+                    throw new IOException(formatMsg(
+                        "error.create.dir", d.getPath()));
+                }
+            }
+            OutputStream os = new FileOutputStream(f);
+            byte[] b = new byte[8192];
+            int len;
+            try {
+                while ((len = is.read(b, 0, b.length)) != -1) {
+                    os.write(b, 0, len);
+                }
+            } finally {
+                if (is instanceof ZipInputStream)
+                    ((ZipInputStream)is).closeEntry();
+                else
+                    is.close();
+                os.close();
+            }
+            if (vflag) {
+                if (e.getMethod() == ZipEntry.DEFLATED) {
+                    output(formatMsg("out.inflated", name));
+                } else {
+                    output(formatMsg("out.extracted", name));
+                }
+            }
+        }
+        long lastModified = e.getTime();
+        if (lastModified != -1) {
+            f.setLastModified(lastModified);
+        }
+        return rc;
+    }
+
+    void list(InputStream in, String files[]) throws IOException {
+        ZipInputStream zis = new ZipInputStream(in, cs);
+        ZipEntry e;
+        while ((e = zis.getNextEntry()) != null) {
+            zis.closeEntry();
+            printEntry(e, files);
+        }
+    }
+
+    void list(String fname, String files[]) throws IOException {
+        ZipFile zf = new ZipFile(fname, cs);
+        Enumeration<? extends ZipEntry> zes = zf.entries();
+        while (zes.hasMoreElements()) {
+            printEntry(zes.nextElement(), files);
+        }
+        zf.close();
+    }
+
+    void printEntry(ZipEntry e, String[] files) throws IOException {
+        if (files == null) {
+            printEntry(e);
+        } else {
+            String name = e.getName();
+            for (String file : files) {
+                if (name.startsWith(file)) {
+                    printEntry(e);
+                    return;
+                }
+            }
+        }
+    }
+
+    void printEntry(ZipEntry e) throws IOException {
+        if (vflag) {
+            StringBuilder sb = new StringBuilder();
+            String s = Long.toString(e.getSize());
+            for (int i = 6 - s.length(); i > 0; --i) {
+                sb.append(' ');
+            }
+            sb.append(s).append(' ').append(new Date(e.getTime()).toString());
+            sb.append(' ').append(e.getName());
+            output(sb.toString());
+        } else {
+            output(e.getName());
+        }
+    }
+
+    void usageError() {
+        error(
+        "Usage: zip {ctxu}[vf0] [zip-file] [-encoding encname][-C dir] files ...\n" +
+        "Options:\n" +
+        "   -c  create new archive\n" +
+        "   -t  list table of contents for archive\n" +
+        "   -x  extract named (or all) files from archive\n" +
+        "   -u  update existing archive\n" +
+        "   -v  generate verbose output on standard output\n" +
+        "   -f  specify archive file name\n" +
+        "   -0  store only; use no ZIP compression\n" +
+        "   -C  change to the specified directory and include the following file\n" +
+        "If any file is a directory then it is processed recursively.\n");
+    }
+
+    void fatalError(Exception e) {
+        e.printStackTrace();
+    }
+
+
+    void fatalError(String s) {
+        error(program + ": " + s);
+    }
+
+
+    protected void output(String s) {
+        out.println(s);
+    }
+
+    protected void error(String s) {
+        err.println(s);
+    }
+
+    private String getMsg(String key) {
+        try {
+            return (rsrc.getString(key));
+        } catch (MissingResourceException e) {
+            throw new Error("Error in message file");
+        }
+    }
+
+    private String formatMsg(String key, String arg) {
+        String msg = getMsg(key);
+        String[] args = new String[1];
+        args[0] = arg;
+        return MessageFormat.format(msg, (Object[]) args);
+    }
+
+    private String formatMsg2(String key, String arg, String arg1) {
+        String msg = getMsg(key);
+        String[] args = new String[2];
+        args[0] = arg;
+        args[1] = arg1;
+        return MessageFormat.format(msg, (Object[]) args);
+    }
+
+    public static String[] parse(String[] args) throws IOException
+    {
+        ArrayList<String> newArgs = new ArrayList<String>(args.length);
+        for (int i = 0; i < args.length; i++) {
+            String arg = args[i];
+            if (arg.length() > 1 && arg.charAt(0) == '@') {
+                arg = arg.substring(1);
+                if (arg.charAt(0) == '@') {
+                    newArgs.add(arg);
+                } else {
+                    loadCmdFile(arg, newArgs);
+                }
+            } else {
+                newArgs.add(arg);
+            }
+        }
+        return newArgs.toArray(new String[newArgs.size()]);
+    }
+
+    private static void loadCmdFile(String name, List<String> args) throws IOException
+    {
+        Reader r = new BufferedReader(new FileReader(name));
+        StreamTokenizer st = new StreamTokenizer(r);
+        st.resetSyntax();
+        st.wordChars(' ', 255);
+        st.whitespaceChars(0, ' ');
+        st.commentChar('#');
+        st.quoteChar('"');
+        st.quoteChar('\'');
+        while (st.nextToken() != st.TT_EOF) {
+            args.add(st.sval);
+        }
+        r.close();
+    }
+
+    public static void main(String args[]) {
+        zip z = new zip(System.out, System.err, "zip");
+        System.exit(z.run(args) ? 0 : 1);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/print/attribute/MediaMappingsTest.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6652463
+ * @summary Verify media size-> media mappings can't be altered
+ * @run main MediaMappingsTest
+*/
+
+import javax.print.attribute.standard.MediaSize;
+import javax.print.attribute.standard.MediaSizeName;
+
+public class MediaMappingsTest {
+
+    public static void main(String args[]) {
+        MediaSize sizeA = MediaSize.getMediaSizeForName(MediaSizeName.A);
+        new MediaSize(1.0f, 2.0f, MediaSize.MM, MediaSizeName.A);
+        if (!sizeA.equals(MediaSize.getMediaSizeForName(MediaSizeName.A))) {
+             throw new RuntimeException("mapping changed");
+        }
+        MediaSize sizeB = MediaSize.getMediaSizeForName(MediaSizeName.B);
+        new MediaSize(1, 2, MediaSize.MM, MediaSizeName.B);
+        if (!sizeB.equals(MediaSize.getMediaSizeForName(MediaSizeName.B))) {
+             throw new RuntimeException("mapping changed");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+   @summary Test SoftChannel noteOn/noteOff overflow test */
+
+import javax.sound.midi.MidiChannel;
+import javax.sound.midi.VoiceStatus;
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioInputStream;
+
+import com.sun.media.sound.AudioSynthesizer;
+import com.sun.media.sound.SoftSynthesizer;
+
+public class NoteOverFlowTest {
+
+    public static void main(String[] args) throws Exception
+    {
+        AudioSynthesizer synth = new SoftSynthesizer();
+        AudioFormat format = new AudioFormat(44100, 16, 2, true, false);
+        AudioInputStream stream = synth.openStream(format, null);
+
+        // Make all voices busy, e.g.
+        // send midi on and midi off on all available voices
+        MidiChannel ch1 = synth.getChannels()[0];
+        ch1.programChange(48); // Use contionus instrument like string ensemble
+        for (int i = 0; i < synth.getMaxPolyphony(); i++) {
+            ch1.noteOn(64, 64);
+            ch1.noteOff(64);
+        }
+
+        // Now send single midi on, and midi off message
+        ch1.noteOn(64, 64);
+        ch1.noteOff(64);
+
+        // Read 10 sec from stream, by this time all voices should be inactvie
+        stream.skip(format.getFrameSize() * ((int)(format.getFrameRate() * 20)));
+
+        // If no voice are active, then this test will pass
+        VoiceStatus[] v = synth.getVoiceStatus();
+        for (int i = 0; i < v.length; i++) {
+            if(v[i].active)
+            {
+                throw new RuntimeException("Not all voices are inactive!");
+            }
+        }
+
+        // Close the synthesizer after use
+        synth.close();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/sound/midi/Gervill/SoftFilter/TestProcessAudio.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+   @summary Test SoftFilter processAudio method */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Random;
+
+import javax.sound.sampled.*;
+
+import com.sun.media.sound.*;
+
+public class TestProcessAudio {
+
+    public static void main(String[] args) throws Exception {
+        AudioFormat format = new AudioFormat(44100, 16, 2, true, false);
+        SoftAudioBuffer sbuffer = new SoftAudioBuffer(3600, format);
+        SoftFilter filter = new SoftFilter(format.getSampleRate());
+        Random random = new Random(42);
+
+
+        for (int t = 0; t <= 6; t++)
+        {
+            if(t == 0) filter.setFilterType(SoftFilter.FILTERTYPE_BP12);
+            if(t == 1) filter.setFilterType(SoftFilter.FILTERTYPE_HP12);
+            if(t == 2) filter.setFilterType(SoftFilter.FILTERTYPE_HP24);
+            if(t == 3) filter.setFilterType(SoftFilter.FILTERTYPE_LP12);
+            if(t == 4) filter.setFilterType(SoftFilter.FILTERTYPE_LP24);
+            if(t == 5) filter.setFilterType(SoftFilter.FILTERTYPE_LP6);
+            if(t == 6) filter.setFilterType(SoftFilter.FILTERTYPE_NP12);
+
+
+            // Try first by reseting always
+            for (int f = 1200; f < 3600; f+=100)
+                for (int r = 0; r <= 30; r+=5) {
+                    filter.reset();
+                    filter.setResonance(r);
+                    filter.setFrequency(f);
+                    float[] data = sbuffer.array();
+                    int len = sbuffer.getSize();
+                    for (int i = 0; i < len; i++)
+                        data[i] = random.nextFloat() - 0.5f;
+                    filter.processAudio(sbuffer);
+                }
+
+            // Now we skip reseting
+            // to test how changing frequency and resonance
+            // affect active filter
+            for (int f = 100; f < 12800; f+=1200)
+            for (int r = 0; r <= 30; r+=5) {
+                filter.setResonance(r);
+                filter.setFrequency(f);
+                float[] data = sbuffer.array();
+                int len = sbuffer.getSize();
+                for (int i = 0; i < len; i++)
+                    data[i] = random.nextFloat() - 0.5f;
+                filter.processAudio(sbuffer);
+            }
+            for (int f = 12800; f >= 100; f-=1200)
+                for (int r = 30; r >= 0; r-=5) {
+                    filter.setResonance(r);
+                    filter.setFrequency(f);
+                    float[] data = sbuffer.array();
+                    int len = sbuffer.getSize();
+                    for (int i = 0; i < len; i++)
+                        data[i] = random.nextFloat() - 0.5f;
+                    filter.processAudio(sbuffer);
+                }
+            filter.reset();
+        }
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLowFrequencyOscillator/TestProcessControlLogic.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ @summary Test SoftLowFrequencyOscillator processControlLogic method */
+
+import com.sun.media.sound.AudioSynthesizerPropertyInfo;
+import com.sun.media.sound.SoftLowFrequencyOscillator;
+import com.sun.media.sound.SoftSynthesizer;
+
+public class TestProcessControlLogic {
+
+    private static float control_rate = 147f;
+    private static SoftSynthesizer synth = new SoftSynthesizer();
+    private static SoftLowFrequencyOscillator lfo = new SoftLowFrequencyOscillator();
+
+    private static void testLFO(boolean shared, int instance, float freq, float delay,
+            float delay2) throws Exception {
+        SoftLowFrequencyOscillator lfo =
+            shared?TestProcessControlLogic.lfo:new SoftLowFrequencyOscillator();
+        lfo.reset();
+        double[] lfo_freq = lfo.get(instance, "freq");
+        double[] lfo_delay = lfo.get(instance, "delay");
+        double[] lfo_delay2 = lfo.get(instance, "delay2");
+        double[] lfo_output = lfo.get(instance, null);
+        lfo_freq[0] = freq;
+        lfo_delay[0] = delay;
+        lfo_delay2[0] = delay2;
+        lfo.init(synth);
+
+        // For delayCount amount time, the output LFO should be 0.5
+        int delayCount = (int) ((Math.pow(2, delay / 1200.0) * control_rate));
+        delayCount += (int) ((delay2 * control_rate) / 1000.0);
+        for (int i = 0; i < delayCount; i++) {
+            if (Math.abs(0.5 - lfo_output[0]) > 0.000001)
+                throw new Exception("Incorrect LFO output ("
+                        +"0.5 != "+lfo_output[0]+")!");
+            lfo.processControlLogic();
+        }
+
+        // After the delay the LFO should start oscillate
+        // Let make sure output is accurate enough
+        double p_step = (440.0 / control_rate)
+        * Math.exp((freq - 6900.0) * (Math.log(2) / 1200.0));
+        double p = 0;
+        for (int i = 0; i < 30; i++) {
+            p += p_step;
+            double predicted_output = 0.5 + Math.sin(p * 2 * Math.PI) * 0.5;
+            if (Math.abs(predicted_output - lfo_output[0]) > 0.001)
+                throw new Exception("Incorrect LFO output ("
+                        +predicted_output+" != "+lfo_output[0]+")!");
+            lfo.processControlLogic();
+        }
+
+    }
+
+    public static void main(String[] args) throws Exception {
+
+        // Get default control rate from synthesizer
+        AudioSynthesizerPropertyInfo[] p = synth.getPropertyInfo(null);
+        for (int i = 0; i < p.length; i++) {
+            if (p[i].name.equals("control rate")) {
+                control_rate = ((Float) p[i].value).floatValue();
+                break;
+            }
+        }
+
+        // Test LFO under various configurations
+        for (int instance = 0; instance < 3; instance++)
+            for (int d1 = -3000; d1 < 0; d1 += 1000)
+                for (int d2 = 0; d2 < 5000; d2 += 1000)
+                    for (int fr = -1000; fr < 1000; fr += 100) {
+                        testLFO(true, instance,
+                                (fr == -1000) ? Float.NEGATIVE_INFINITY : fr,
+                                (d1 == -3000) ? Float.NEGATIVE_INFINITY : d1,
+                                d2);
+                        testLFO(false, instance,
+                                (fr == -1000) ? Float.NEGATIVE_INFINITY : fr,
+                                (d1 == -3000) ? Float.NEGATIVE_INFINITY : d1,
+                                d2);
+                    }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/ConfigWithQuotations.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+/*
+ * @test
+ * @bug 6714845
+ * @summary Quotes in Kerberos configuration file are included in the values
+ */
+
+import sun.security.krb5.Config;
+
+public class ConfigWithQuotations {
+    public static void main(String[] args) throws Exception {
+        // This config file is generated using Kerberos.app on a Mac
+        System.setProperty("java.security.krb5.conf",
+                System.getProperty("test.src", ".") +"/edu.mit.Kerberos");
+        Config config = Config.getInstance();
+
+        System.out.println(config);
+
+        if (!config.getDefaultRealm().equals("MAC.LOCAL")) {
+            throw new Exception("Realm error");
+        }
+        if (!config.getKDCList("MAC.LOCAL").equals("kdc.mac.local:88")) {
+            throw new Exception("KDC error");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/edu.mit.Kerberos	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,15 @@
+[domain_realm]
+
+[libdefaults]
+	default_realm = "MAC.LOCAL"
+	dns_fallback = "no"
+
+[logging]
+	admin_server = "FILE:/var/log/krb5kdc/kadmin.log"
+	kdc = "FILE:/var/log/krb5kdc/kdc.log"
+
+[realms]
+	MAC.LOCAL = {
+		kdc = "kdc.mac.local:88"
+	}
+
--- a/jdk/test/sun/security/util/Oid/OidFormat.java	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/sun/security/util/Oid/OidFormat.java	Wed Jul 05 16:52:18 2017 +0200
@@ -63,9 +63,22 @@
             "1.2.3", "1.2.3445",
             "1.3.6.1.4.1.42.2.17",
             // 4811968: ASN.1 cannot handle huge OID components
-            //"2.16.764.1.3101555394.1.0.100.2.1",
-            //"1.2.2147483647.4",
-            //"1.2.268435456.4",
+            "2.16.764.1.3101555394.1.0.100.2.1",
+            "2.2726957624935694386592435",  // as huge as possible
+            "1.2.777777777777777777",
+            "1.2.888888888888888888.111111111111111.2222222222222.33333333333333333.44444444444444",
+            "1.2." +
+                "1111111111111111111111111111111111111111111111111111111111111." +
+                "2222222222222222222222222222222222222222222222222222222222222222." +
+                "333333333333333333333333333333333333333333333333333333333333333." +
+                "4444444444444444444444444444444444444444444444444444444." +
+                "55555555555555555555555555555555555555555555555555555555555555555555555." +
+                "666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666." +
+                "77777777777777777777777777777777777777777777777777777777777777777777777777." +
+                "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888." +
+                "9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999",
+            "1.2.2147483647.4",
+            "1.2.268435456.4",
         };
 
         for (String s: goodOids) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/util/Oid/S11N.sh	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,164 @@
+#
+# Copyright 2004-2005 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# @test
+# @bug 4811968
+# @summary Serialization compatibility with old versions
+# @author Weijun Wang
+#
+# set a few environment variables so that the shell-script can run stand-alone
+# in the source directory
+
+if [ "${TESTSRC}" = "" ] ; then
+  TESTSRC="."
+fi
+if [ "${TESTCLASSES}" = "" ] ; then
+  TESTCLASSES="."
+fi
+if [ "${TESTJAVA}" = "" ] ; then
+  echo "TESTJAVA not set.  Test cannot execute."
+  echo "FAILED!!!"
+  exit 1
+fi
+
+# set platform-dependent variables
+PF=""
+
+OS=`uname -s`
+case "$OS" in
+  SunOS )
+    FS="/"
+    ARCH=`isainfo`
+    case "$ARCH" in
+      sparc* )
+        PF="solaris-sparc"
+        ;;
+      i[3-6]86 )
+        PF="solaris-i586"
+        ;;
+      amd64* )
+        PF="solaris-amd64"
+        ;;
+      * )
+        echo "Unsupported System: Solaris ${ARCH}"
+        exit 0;
+        ;;
+    esac
+    ;;
+  Linux )
+    ARCH=`uname -m`
+    FS="/"
+    case "$ARCH" in
+      i[3-6]86 )
+        PF="linux-i586"
+        ;;
+      amd64* )
+        PF="linux-amd64"
+        ;;
+      * )
+        echo "Unsupported System: Linux ${ARCH}"
+        exit 0;
+        ;;
+    esac
+    ;;
+  Windows* )
+    FS="\\"
+    PF="windows-i586"
+
+    # 'uname -m' does not give us enough information -
+    #  should rely on $PROCESSOR_IDENTIFIER (as is done in Defs-windows.gmk),
+    #  but JTREG does not pass this env variable when executing a shell script.
+    #
+    #  execute test program - rely on it to exit if platform unsupported
+
+    ;;
+  * )
+    echo "Unsupported System: ${OS}"
+    exit 0;
+    ;;
+esac
+
+# the test code
+
+${TESTJAVA}${FS}bin${FS}javac -source 1.3 -target 1.3 -d . ${TESTSRC}${FS}SerialTest.java || exit 10
+
+OLDJAVA="
+    /java/re/j2se/1.6.0/latest/binaries/${PF}
+    /java/re/j2se/1.5.0/latest/binaries/${PF}
+    /java/re/j2se/1.4.2/latest/binaries/${PF}
+"
+
+SMALL="
+    0.0
+    1.1
+    2.2
+    1.2.3456
+    1.2.2147483647.4
+    1.2.268435456.4
+"
+
+HUGE="
+    2.16.764.1.3101555394.1.0.100.2.1
+    1.2.2147483648.4
+    2.3.4444444444444444444444
+    1.2.888888888888888888.111111111111111.2222222222222.33333333333333333.44444444444444
+"
+
+for oid in ${SMALL}; do
+    echo ${oid}
+    # new ->
+    ${TESTJAVA}${FS}bin${FS}java SerialTest out ${oid} > tmp.oid.serial || exit 1
+    # -> new
+    ${TESTJAVA}${FS}bin${FS}java SerialTest in ${oid} < tmp.oid.serial || exit 2
+    for oldj in ${OLDJAVA}; do
+        if [ -d ${oldj} ]; then
+            echo ${oldj}
+            # -> old
+            ${oldj}${FS}bin${FS}java SerialTest in ${oid} < tmp.oid.serial || exit 3
+            # old ->
+            ${oldj}${FS}bin${FS}java SerialTest out ${oid} > tmp.oid.serial.old || exit 4
+            # -> new
+            ${TESTJAVA}${FS}bin${FS}java SerialTest in ${oid} < tmp.oid.serial.old || exit 5
+        fi
+    done
+done
+
+for oid in ${HUGE}; do
+    echo ${oid}
+    # new ->
+    ${TESTJAVA}${FS}bin${FS}java SerialTest out ${oid} > tmp.oid.serial || exit 1
+    # -> new
+    ${TESTJAVA}${FS}bin${FS}java SerialTest in ${oid} < tmp.oid.serial || exit 2
+    for oldj in ${OLDJAVA}; do
+        if [ -d ${oldj} ]; then
+            echo ${oldj}
+            # -> old
+            ${oldj}${FS}bin${FS}java SerialTest badin < tmp.oid.serial || exit 3
+        fi
+    done
+done
+
+rm -f tmp.oid.serial
+rm -f tmp.oid.serial.old
+rm -f SerialTest.class
+
+exit 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/util/Oid/SerialTest.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * read S11.sh
+ */
+import java.io.*;
+import sun.security.util.*;
+
+/**
+ * Test OID serialization between versions
+ *
+ * java SerialTest out oid  // write a OID into System.out
+ * java SerialTest in oid   // read from System.in and compare it with oid
+ * java SerialTest badin    // make sure *cannot* read from System.in
+ */
+class SerialTest {
+    public static void main(String[] args) throws Exception {
+        if (args[0].equals("out"))
+            out(args[1]);
+        else if (args[0].equals("in"))
+            in(args[1]);
+        else
+            badin();
+    }
+
+    static void in(String oid) throws Exception {
+        ObjectIdentifier o = (ObjectIdentifier) (new ObjectInputStream(System.in).readObject());
+        if (!o.toString().equals(oid))
+            throw new Exception("Read Fail " + o + ", not " + oid);
+    }
+
+    static void badin() throws Exception {
+        boolean pass = true;
+        try {
+            new ObjectInputStream(System.in).readObject();
+        } catch (Exception e) {
+            pass = false;
+        }
+        if (pass) throw new Exception("Should fail but not");
+    }
+
+    static void out(String oid) throws Exception {
+        new ObjectOutputStream(System.out).writeObject(new ObjectIdentifier(oid));
+    }
+}
--- a/jdk/test/tools/launcher/MultipleJRE.sh	Mon Apr 27 20:18:40 2009 -0700
+++ b/jdk/test/tools/launcher/MultipleJRE.sh	Wed Jul 05 16:52:18 2017 +0200
@@ -1,14 +1,14 @@
 # @test MultipleJRE.sh
-# @bug 4811102 4953711 4955505 4956301 4991229 4998210 5018605 6387069
+# @bug 4811102 4953711 4955505 4956301 4991229 4998210 5018605 6387069 6733959
 # @build PrintVersion
 # @build UglyPrintVersion
+# @build ZipMeUp
 # @run shell MultipleJRE.sh
 # @summary Verify Multiple JRE version support
 # @author Joseph E. Kowalski
 
-
 #
-# Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -49,11 +49,26 @@
   exit 1
 fi
 
+JAVAEXE="$TESTJAVA/bin/java"
 JAVA="$TESTJAVA/bin/java -classpath $TESTCLASSES"
 JAR="$TESTJAVA/bin/jar"
 OS=`uname -s`;
 
 #
+# Tests whether we are on windows (true) or not.
+#
+IsWindows() {
+    case "$OS" in
+        Windows* | CYGWIN* )
+            printf "true"
+	;;
+	* )
+            printf "false"
+	;;
+    esac
+}
+
+#
 # Shell routine to test for the proper rejection of syntactically incorrect
 # version specifications.
 #
@@ -139,7 +154,6 @@
 	    $PACKAGE/UglyPrintVersion.class
 }
 
-
 #
 # Constructs a jar file with a fair number of "zip directory" entries and
 # the MANIFEST.MF entry at or near the end of that directory to validate
@@ -262,6 +276,29 @@
 	fi
 }
 
+# Tests very long Main-Class attribute in the jar
+TestLongMainClass() {
+    JVER=$1
+    if [ "$JVER" = "mklink" ]; then
+        JVER=XX
+        JDKXX=jdk/j2re$JVER
+        rm -rf jdk
+        mkdir jdk
+        ln -s $TESTJAVA $JDKXX
+        JAVA_VERSION_PATH="`pwd`/jdk"
+        export JAVA_VERSION_PATH
+    fi
+    $JAVAEXE -cp $TESTCLASSES ZipMeUp UglyBetty.jar 4097 
+    message="`$JAVAEXE -version:$JVER -jar UglyBetty.jar 2>&1`"
+    echo $message | grep "Error: main-class: attribute exceeds system limits" > /dev/null 2>&1
+    if [ $? -ne 0 ]; then
+        printf "Long manifest test did not get expected error"
+        exit 1
+    fi
+    unset JAVA_VERSION_PATH
+    rm -rf jdk
+}
+
 #
 # Main test sequence starts here
 #
@@ -280,14 +317,11 @@
 LaunchVM "" "${RELEASE}"
 CreateJar "" "0"
 LaunchVM "" "${RELEASE}"
-case "$OS" in
-	Windows* | CYGWIN* )
-		MAXIMUM_PATH=255;
-	;;
-	*)
-		MAXIMUM_PATH=1024;
-	;;
-esac
+if [ `IsWindows` = "true" ]; then
+    MAXIMUM_PATH=255;
+else
+    MAXIMUM_PATH=1024;
+fi
 
 PATH_LENGTH=`printf "%s" "$UGLYCLASS" | wc -c`
 if [ ${PATH_LENGTH} -lt ${MAXIMUM_PATH} ]; then
@@ -346,7 +380,6 @@
 	LaunchVM "" "${RELEASE}"
 fi
 
-
 #
 # Throw some syntactically challenged (illegal) version specifiers at
 # the interface.  Failure (of the launcher) is success for the test.
@@ -357,15 +390,28 @@
 TestSyntax "1.2+.3"				# Embedded modifier
 TestSyntax "1.2.4+&1.2*&1++"			# Long and invalid
 
+# On windows we see if there is another jre installed, usually
+# there is, then we test using that, otherwise links are created
+# to get through to SelectVersion.
+if [ `IsWindows` = "false" ]; then
+   TestLongMainClass "mklink"
+else
+    $JAVAEXE -version:1.0+
+    if [ $? -eq 0 ]; then
+        TestLongMainClass "1.0+"
+    else
+        printf  "Warning: TestLongMainClass skipped as there is no"
+	printf  "viable MJRE installed.\n"
+    fi
+fi
+
 #
 # Because scribbling in the registry can be rather destructive, only a
 # subset of the tests are run on Windows.
 #
-case "$OS" in
-	Windows* | CYGWIN* )
-		exit 0;
-	;;
-esac
+if [ `IsWindows` = "true" ]; then
+    exit 0;
+fi
 
 #
 # Additional version specifiers containing spaces.  (Sigh, unable to
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/tools/launcher/ZipMeUp.java	Wed Jul 05 16:52:18 2017 +0200
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * A simple class to create our erring Jar with a very long Main-Class
+ * attribute in the manifest.
+ */
+import java.io.ByteArrayOutputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.zip.CRC32;
+import java.util.zip.CheckedOutputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+public class ZipMeUp {
+
+    static final CRC32 crc = new CRC32();
+
+    private static String SOME_KLASS = ".Some";
+
+    static byte[] getManifestAsBytes(int nchars) throws IOException {
+        crc.reset();
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        CheckedOutputStream cos = new CheckedOutputStream(baos, crc);
+        PrintStream ps = new PrintStream(cos);
+        ps.println("Manifest-Version: 1.0");
+        ps.print("Main-Class: ");
+        for (int i = 0 ; i < nchars - SOME_KLASS.length() ; i++) {
+            ps.print(i%10);
+        }
+        ps.println(SOME_KLASS);
+        cos.flush();
+        cos.close();
+        ps.close();
+        return baos.toByteArray();
+    }
+
+    /**
+     * The arguments are: filename_to_create length
+     * @param args
+     * @throws java.lang.Exception
+     */
+    public static void main(String...args) throws Exception  {
+        FileOutputStream fos = new FileOutputStream(args[0]);
+        ZipOutputStream zos = new ZipOutputStream(fos);
+        byte[] manifest = getManifestAsBytes(Integer.parseInt(args[1]));
+        ZipEntry ze = new ZipEntry("META-INF/MANIFEST.MF");
+        ze.setMethod(ZipEntry.STORED);
+        ze.setSize(manifest.length);
+        ze.setCompressedSize(manifest.length);
+        ze.setCrc(crc.getValue());
+        ze.setTime(System.currentTimeMillis());
+        zos.putNextEntry(ze);
+        zos.write(manifest);
+        zos.flush();
+
+        // add a zero length class
+        ze = new ZipEntry(SOME_KLASS + ".class");
+        ze.setMethod(ZipEntry.STORED);
+        ze.setSize(0);
+        ze.setCompressedSize(0);
+        ze.setCrc(0);
+        ze.setTime(System.currentTimeMillis());
+        zos.putNextEntry(ze);
+        zos.flush();
+        zos.closeEntry();
+        zos.close();
+        System.exit(0);
+    }
+}
--- a/make/jprt.config	Mon Apr 27 20:18:40 2009 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,379 +0,0 @@
-#!echo "This is not a shell script"
-#############################################################################
-#
-# Copyright 2006-2009 Sun Microsystems, Inc.  All Rights Reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Sun designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Sun in the LICENSE file that accompanied this code.
-#
-# This code 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
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-# CA 95054 USA or visit www.sun.com if you need additional information or
-# have any questions.
-#
-#############################################################################
-#
-# JPRT shell configuration for building.
-#
-# Input environment variables:
-#    ALT_BOOTDIR
-#    ALT_SLASH_JAVA
-#    ALT_JDK_IMPORT_PATH
-#    OPENJDK
-#    Windows Only:
-#      PATH
-#      VS71COMNTOOLS
-#      PROCESSOR_IDENTIFIER
-#      ROOTDIR
-#
-# Output variable settings:
-#    make            Full path to GNU make
-#    compiler_path   Path to compiler bin directory
-#    compiler_name   Unique name of this compiler
-#
-# Output environment variables:
-#    PATH
-#    ALT_COMPILER_PATH
-#    OPENJDK only:
-#      ALT_CLOSED_JDK_IMPORT_PATH
-#      ALT_JDK_DEVTOOLS_DIR
-#    Windows Only:
-#      ALT_MSDEVTOOLS_PATH
-#      ALT_DEVTOOLS_PATH (To avoid the C:/UTILS default)
-#      LIB
-#      INCLUDE
-#
-# After JDK6, most settings will be found via ALT_SLASH_JAVA or
-#   by way of other system environment variables. If this was JDK5
-#   or an older JDK, you might need to export more ALT_* variables.
-#
-# On Windows AMD64, if MSSDK is not set, assumes Platform SDK is installed at:
-#          C:/Program Files/Microsoft Platform SDK
-#
-#############################################################################
-
-#############################################################################
-# Error
-error() # message
-{
-  echo "ERROR: $1"
-  exit 6
-}
-# Directory must exist
-dirMustExist() # dir name
-{
-  if [ ! -d "$1" ] ; then
-    error "Directory for $2 does not exist: $1"
-  fi
-}
-# File must exist
-fileMustExist() # dir name
-{
-  if [ ! -f "$1" ] ; then
-    error "File for $2 does not exist: $1"
-  fi
-}
-#############################################################################
-
-# Should be set by JPRT as the 3 basic inputs
-bootdir="${ALT_BOOTDIR}"
-slashjava="${ALT_SLASH_JAVA}"
-jdk_import="${ALT_JDK_IMPORT_PATH}"
-
-# The /java/devtools items
-jdk_devtools="${slashjava}/devtools"
-share="${jdk_devtools}/share"
-
-# Needed for langtools, maybe other parts of the build
-ANT_HOME="${share}/ant/latest"
-export ANT_HOME
-
-# The 3 bin directories in common to all platforms
-sharebin="${share}/bin"
-antbin="${ANT_HOME}/bin"
-
-# Check input
-dirMustExist "${bootdir}"         ALT_BOOTDIR
-dirMustExist "${slashjava}"       ALT_SLASH_JAVA
-dirMustExist "${jdk_import}"      ALT_JDK_IMPORT_PATH
-dirMustExist "${ANT_HOME}"        ANT_HOME
-
-# If ALT_PREVIOUS_RELEASE_IMAGE not defined, set it to the bootdir area for
-#    any possible image comparisons.
-#    We assume bootdir is a previous jdk release image, valid for comparison
-#    reasons.
-if [ "${ALT_PREVIOUS_RELEASE_IMAGE}" = "" ] ; then
-   ALT_PREVIOUS_RELEASE_IMAGE="${bootdir}"
-   export ALT_PREVIOUS_RELEASE_IMAGE
-fi
-
-# Use the JDK import for now (FIXME: use the binary plugs?)
-if [ "${OPENJDK}" = true ] ; then
-  ALT_CLOSED_JDK_IMPORT_PATH="${jdk_import}"
-  export ALT_CLOSED_JDK_IMPORT_PATH
-fi
-
-# Uses 'uname -s', but only expect SunOS or Linux, assume Windows otherwise.
-osname=`uname -s`
-if [ "${osname}" = SunOS ] ; then
-   
-    # SOLARIS: Sparc or X86
-    osarch=`uname -p`
-    if [ "${osarch}" = sparc ] ; then
-	solaris_arch=sparc
-    else
-	solaris_arch=i386
-    fi
-
-    # Get the compilers into path (make sure it matches ALT setting)
-    if [ "${JPRT_SOLARIS_COMPILER_NAME}" != "" ] ; then
-        compiler_name=${JPRT_SOLARIS_COMPILER_NAME}
-    else
-	compiler_name=SS12
-    fi
-    compiler_path=${jdk_devtools}/${solaris_arch}/SUNWspro/${compiler_name}/bin
-    ALT_COMPILER_PATH="${compiler_path}"
-    export ALT_COMPILER_PATH
-    dirMustExist "${compiler_path}" ALT_COMPILER_PATH
-    path4sdk=${compiler_path}:${sharebin}:${antbin}
-
-    # Add basic solaris system paths
-    path4sdk=${path4sdk}:/usr/ccs/bin:/usr/ccs/lib:/usr/bin:/bin:/usr/sfw/bin
-
-    # Get the previous JDK to be used to bootstrap the build
-    path4sdk=${bootdir}/bin:${path4sdk}
-
-    # Find GNU make
-    make=/usr/sfw/bin/gmake
-    if [ ! -f ${make} ] ; then
-	make=/opt/sfw/bin/gmake
-	if [ ! -f ${make} ] ; then
-	    make=${jdk_devtools}/${solaris_arch}/bin/gnumake
-        fi 
-    fi
-    fileMustExist "${make}" make
-
-    # File creation mask
-    umask 002
-
-elif [ "${osname}" = Linux ] ; then
-   
-    # LINUX: X86, AMD64
-    osarch=`uname -m`
-    if [ "${osarch}" = i686 ] ; then
-	linux_arch=i586
-    elif [ "${osarch}" = x86_64 ] ; then
-	linux_arch=amd64
-    fi
-
-    # Get the compilers into path (make sure it matches ALT setting)
-    compiler_path=/usr/bin
-    compiler_name=usr_bin
-    ALT_COMPILER_PATH="${compiler_path}"
-    export ALT_COMPILER_PATH
-    dirMustExist "${compiler_path}" ALT_COMPILER_PATH
-    path4sdk=${compiler_path}:${sharebin}:${antbin}
-    
-    # Add basic paths
-    path4sdk=${path4sdk}:/usr/bin:/bin:/usr/sbin:/sbin
-
-    # Get the previous JDK to be used to bootstrap the build
-    path4sdk=${bootdir}/bin:${path4sdk}
-    
-    # Find GNU make
-    make=/usr/bin/make
-    fileMustExist "${make}" make
-
-    umask 002
-   
-    # Linux platform may be old, use motif files from the devtools area
-    if [ "${OPENJDK}" = true ] ; then
-      ALT_JDK_DEVTOOLS_DIR="${jdk_devtools}"
-      export ALT_JDK_DEVTOOLS_DIR
-    fi
-
-
-else
-
-    # Windows: Differs on CYGWIN vs. MKS, and the compiler available.
-    #   Also, blanks in pathnames gives GNU make headaches, so anything placed
-    #   in any ALT_* variable should be the short windows dosname.
-   
-    # WINDOWS: Install and use MKS or CYGWIN (should have already been done)
-    #   Assumption here is that you are in a shell window via MKS or cygwin.
-    #   MKS install should have defined the environment variable ROOTDIR.
-    #   We also need to figure out which one we have: X86, AMD64
-    if [ "`echo ${PROCESSOR_IDENTIFIER} | fgrep AMD64`" != "" ] ; then
-	windows_arch=amd64
-    else
-	windows_arch=i586
-    fi
-    
-    # We need to determine if we are running a CYGWIN shell or an MKS shell
-    #    (if uname isn't available, then it will be unix_toolset=unknown)
-    unix_toolset=unknown
-    if [ "`uname -a | fgrep Cygwin`" = "" -a -d "${ROOTDIR}" ] ; then
-        # We kind of assume ROOTDIR is where MKS is and it's ok
-        unix_toolset=MKS
-        mkshome=`dosname -s "${ROOTDIR}"`
-	# Utility to convert to short pathnames without spaces
-	dosname="${mkshome}/mksnt/dosname -s"
-        # Most unix utilities are in the mksnt directory of ROOTDIR
-        unixcommand_path="${mkshome}/mksnt"
-        path4sdk="${sharebin};${antbin};${unixcommand_path}"
-        dirMustExist "${unixcommand_path}" ALT_UNIXCOMMAND_PATH
-	devtools_path="${jdk_devtools}/win32/bin"
-	path4sdk="${devtools_path};${path4sdk}"
-	# Normally this need not be set, but on Windows it's default is C:/UTILS
-        ALT_DEVTOOLS_PATH="${devtools_path}"
-	export ALT_DEVTOOLS_PATH
-        dirMustExist "${devtools_path}" ALT_DEVTOOLS_PATH
-        # Find GNU make
-        make="${devtools_path}/gnumake.exe"
-        fileMustExist "${make}" make
-    elif [ "`uname -a | fgrep Cygwin`" != "" -a -f /bin/cygpath ] ; then
-        # For CYGWIN, uname will have "Cygwin" in it, and /bin/cygpath should exist
-        unix_toolset=CYGWIN
-	# Utility to convert to short pathnames without spaces
-	dosname="/usr/bin/cygpath -a -m -s"
-        # Most unix utilities are in the /usr/bin
-        unixcommand_path="/usr/bin"
-        path4sdk="${sharebin};${antbin};${unixcommand_path}"
-        dirMustExist "${unixcommand_path}" ALT_UNIXCOMMAND_PATH
-        # Find GNU make
-        make="${unixcommand_path}/make.exe"
-        fileMustExist "${make}" make
-    else
-      echo "WARNING: Cannot figure out if this is MKS or CYGWIN"
-    fi
-
-    # WINDOWS: Compiler setup (nasty part)
-    #   NOTE: You can use vcvars32.bat to set PATH, LIB, and INCLUDE.
-    #   NOTE: CYGWIN has a link.exe too, make sure the compilers are first
-    if [ "${windows_arch}" = i586 ] ; then
-        # 32bit Windows compiler settings
-        # VisualStudio .NET 2003 VC++ 7.1 (VS71COMNTOOLS should be defined)
-        vs_root=`${dosname} "${VS71COMNTOOLS}/../.."`
-        # Fill in PATH, LIB, and INCLUDE (unset all others to make sure)
-        msdev_root="${vs_root}/Common7/Tools"
-        msdevtools_path="${msdev_root}/bin"
-        vc7_root="${vs_root}/Vc7"
-        compiler_path="${vc7_root}/bin"
-        compiler_name=VS2003
-        platform_sdk="${vc7_root}/PlatformSDK"
-        # LIB and INCLUDE must use ; as a separator
-        include4sdk="${vc7_root}/atlmfc/include"
-        include4sdk="${include4sdk};${vc7_root}/include"
-        include4sdk="${include4sdk};${platform_sdk}/include/prerelease"
-        include4sdk="${include4sdk};${platform_sdk}/include"
-        include4sdk="${include4sdk};${vs_root}/SDK/v1.1/include"
-        lib4sdk="${vc7_root}/atlmfc/lib"
-        lib4sdk="${lib4sdk};${vc7_root}/lib"
-        lib4sdk="${lib4sdk};${platform_sdk}/lib/prerelease"
-        lib4sdk="${lib4sdk};${platform_sdk}/lib"
-        lib4sdk="${lib4sdk};${vs_root}/SDK/v1.1/lib"
-        # Search path and DLL locating path
-        #   WARNING: CYGWIN has a link.exe too, make sure compilers are first
-        path4sdk="${vs_root}/Common7/Tools/bin;${path4sdk}"
-	path4sdk="${vs_root}/SDK/v1.1/bin;${path4sdk}"
-        path4sdk="${vs_root}/Common7/Tools;${path4sdk}"
-	path4sdk="${vs_root}/Common7/Tools/bin/prerelease;${path4sdk}"
-        path4sdk="${vs_root}/Common7/IDE;${path4sdk}"
-	path4sdk="${compiler_path};${path4sdk}"
-    elif [ "${windows_arch}" = amd64 ] ; then
-        # AMD64 64bit Windows compiler settings
-	if [ "${MSSDK}" != "" ] ; then
-	    platform_sdk="${MSSDK}"
-	else
-	    platform_sdk=`${dosname} "C:/Program Files/Microsoft Platform SDK/"`
-	fi
-	compiler_path="${platform_sdk}/Bin/win64/x86/AMD64"
-        compiler_name=VS2005_PSDK
-	msdevtools_path="${platform_sdk}/Bin"
-        # LIB and INCLUDE must use ; as a separator
-        include4sdk="${platform_sdk}/Include"
-	include4sdk="${include4sdk};${platform_sdk}/Include/crt/sys"
-	include4sdk="${include4sdk};${platform_sdk}/Include/mfc"
-	include4sdk="${include4sdk};${platform_sdk}/Include/atl"
-	include4sdk="${include4sdk};${platform_sdk}/Include/crt"
-        lib4sdk="${platform_sdk}/Lib/AMD64"
-        lib4sdk="${lib4sdk};${platform_sdk}/Lib/AMD64/atlmfc"
-        # Search path and DLL locating path
-        #   WARNING: CYGWIN has a link.exe too, make sure compilers are first
-        path4sdk="${platform_sdk}/bin;${path4sdk}"
-        path4sdk="${compiler_path};${path4sdk}"
-    fi
-    # Export LIB and INCLUDE
-    unset lib
-    unset Lib
-    LIB="${lib4sdk}"
-    export LIB
-    unset include
-    unset Include
-    INCLUDE="${include4sdk}"
-    export INCLUDE
-    # Set the ALT variable
-    ALT_COMPILER_PATH=`${dosname} "${compiler_path}"`
-    export ALT_COMPILER_PATH
-    dirMustExist "${compiler_path}" ALT_COMPILER_PATH
-    ALT_MSDEVTOOLS_PATH=`${dosname} "${msdevtools_path}"`
-    export ALT_MSDEVTOOLS_PATH
-    dirMustExist "${msdevtools_path}" ALT_MSDEVTOOLS_PATH
-    
-    # WINDOWS: Get the previous JDK to be used to bootstrap the build
-    path4sdk="${bootdir}/bin;${path4sdk}"
-
-    # Turn all \\ into /, remove duplicates and trailing /
-    slash_path="`echo ${path4sdk} | sed -e 's@\\\\@/@g' -e 's@//@/@g' -e 's@/$@@' -e 's@/;@;@g'`"
-    
-    # For windows, it's hard to know where the system is, so we just add this
-    #    to PATH.
-    path4sdk="${slash_path};${PATH}"
-    
-    # Convert path4sdk to cygwin style
-    if [ "${unix_toolset}" = CYGWIN ] ; then
-	path4sdk="`/usr/bin/cygpath -p ${path4sdk}`"
-    fi
-
-    # Set special windows ALT variables
-    ALT_ISHIELDDIR="C:/ishield802"
-    export ALT_ISHIELDDIR
-
-    # Sponsors binaries
-    ALT_SPONSOR1DIR=C:/sponsor_binaries
-    export ALT_SPONSOR1DIR
-    ALT_SPONSOR2DIR=C:/sponsor_binaries 
-    export ALT_SPONSOR2DIR
-
-    # JPRT systems can never run msival2.exe, set this to avoid them
-    SKIP_MSIVAL2=true
-    export SKIP_MSIVAL2
-    # Not easy to do
-    SKIP_COMPARE_IMAGES=true
-    export SKIP_COMPARE_IMAGES
-
-fi
-
-# Export PATH setting
-PATH="${path4sdk}"
-export PATH
-
-# Things we need to unset
-unset LD_LIBRARY_PATH
-unset LD_LIBRARY_PATH_32
-unset LD_LIBRARY_PATH_64
-unset JAVA_HOME
-
--- a/make/jprt.properties	Mon Apr 27 20:18:40 2009 -0700
+++ b/make/jprt.properties	Wed Jul 05 16:52:18 2017 +0200
@@ -32,8 +32,8 @@
 solaris_sparcv9_5.10,\
 solaris_i586_5.10,\
 solaris_x64_5.10,\
-linux_i586,\
-linux_x64,\
+linux_i586_2.6,\
+linux_x64_2.6,\
 windows_i586,\
 windows_x64