Merge
authorduke
Wed, 05 Jul 2017 16:52:09 +0200
changeset 2673 edc66690be08
parent 2672 f3be0d512b5d (current diff)
parent 2667 22ee97da5fd1 (diff)
child 2682 045499ae1036
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:19 2009 -0700
+++ b/.hgtags-top-repo	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/README-builds.html	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/corba/.hgtags	Wed Jul 05 16:52:09 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:19 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:19 2009 -0700
+++ b/corba/make/jprt.properties	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/encoding/BufferManagerReadStream.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/oa/poa/POAFactory.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBSingleton.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/resolver/INSURLOperationImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelConnectionImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/ORBUtil.mc	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/corba/src/share/classes/com/sun/tools/corba/se/idl/Parser.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/corba/src/share/classes/com/sun/tools/corba/se/logutil/InputException.java	Wed Jul 05 16:52:09 2017 +0200
@@ -91,4 +91,3 @@
   }
 
 }
-
--- a/corba/src/share/classes/org/omg/CORBA/ORB.java	Mon Apr 27 20:18:19 2009 -0700
+++ b/corba/src/share/classes/org/omg/CORBA/ORB.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/.hgignore	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/.hgtags	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/make/hotspot_version	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/make/jprt.properties	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/make/solaris/makefiles/sparcWorks.make	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/make/windows/makefiles/vm.make	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/dump_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/icBuffer_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/interpreterRT_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/jniFastGetField_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/nativeInst_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/relocInfo_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/runtime_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/sparc.ad	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/vtableStubs_sparc.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_32.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/templateTable_x86_32.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/os/windows/vm/os_windows.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/tools/MakeDeps/BuildConfig.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/tools/hsdis/Makefile	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/tools/hsdis/README	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/tools/hsdis/hsdis-demo.c	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/tools/hsdis/hsdis.c	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/c1/c1_LinearScan.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/ci/ciStreams.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/ci/ciStreams.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/classfile/classLoader.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/classfile/javaClasses.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/classfile/javaClasses.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/classfile/systemDictionary.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/classfile/verifier.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/includeDB_compiler1	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/includeDB_core	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/includeDB_gc_parallel	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/includeDB_jvmti	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecode.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecode.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeStream.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeTracer.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodes.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodes.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/linkResolver.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/rewriter.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/rewriter.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/templateInterpreter.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/templateInterpreter.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/templateTable.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/templateTable.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/oops/constantPoolKlass.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/oops/constantPoolOop.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/oops/constantPoolOop.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/oops/cpCacheKlass.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/oops/cpCacheOop.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/oops/cpCacheOop.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/oops/generateOopMap.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/oops/instanceKlass.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/oops/instanceKlassKlass.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/oops/methodDataOop.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/oops/methodOop.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/oops/methodOop.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/buildOopMap.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/bytecodeInfo.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/chaitin.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/doCall.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/graphKit.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/graphKit.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/library_call.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/matcher.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/matcher.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/parse.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/parse1.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/parse2.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/parse3.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/opto/parseHelper.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/prims/jvm.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/prims/methodComparator.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/prims/methodHandles.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/runtime/arguments.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp	Wed Jul 05 16:52:09 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:09 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/jdk/.hgtags	Mon Apr 27 20:18:19 2009 -0700
+++ b/jdk/.hgtags	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/README	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/make/common/Sanity.gmk	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/make/common/shared/Defs.gmk	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/make/common/shared/Sanity-Settings.gmk	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/make/common/shared/Sanity.gmk	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/make/docs/CORE_PKGS.gmk	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/make/java/zip/FILES_c.gmk	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/make/java/zip/mapfile-vers	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/make/java/zip/reorder-i586	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/make/java/zip/reorder-sparc	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/make/java/zip/reorder-sparcv9	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/make/javax/swing/plaf/Makefile	Wed Jul 05 16:52:09 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:09 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:19 2009 -0700
+++ b/jdk/make/jprt.properties	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/make/tools/Makefile	Wed Jul 05 16:52:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:19 2009 -0700
+++ b/jdk/src/share/bin/emessages.h	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/bin/java.c	Wed Jul 05 16:52:09 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:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java	Wed Jul 05 16:52:09 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:09 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:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerAccessController.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/jndi/ldap/LdapCtx.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/jndi/ldap/VersionHelper12.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftAudioPusher.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftChannel.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftChorus.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftFilter.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftJitterCorrector.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftLowFrequencyOscillator.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SoftVoice.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/awt/Color.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/awt/Component.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/awt/Container.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/awt/Font.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/awt/GraphicsConfiguration.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/awt/GraphicsDevice.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/awt/Window.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/lang/NoSuchFieldError.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/nio/Direct-X-Buffer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/nio/Heap-X-Buffer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/nio/StringCharBuffer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/nio/channels/AsynchronousDatagramChannel.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/nio/file/Path.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/nio/file/SecureDirectoryStream.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/security/AccessController.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/security/AlgorithmParametersSpi.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/security/PrivilegedActionException.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/security/Security.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/security/SecurityPermission.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/security/SignatureSpi.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/security/cert/CertificateFactory.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/security/cert/CertificateFactorySpi.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/util/Calendar.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/util/logging/LogRecord.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/util/logging/Logger.java	Wed Jul 05 16:52:09 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:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipConstants64.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipEntry.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipFile.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipInputStream.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipOutputStream.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/java/util/zip/package.html	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/management/monitor/CounterMonitor.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/management/monitor/GaugeMonitor.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/management/monitor/Monitor.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/management/monitor/StringMonitor.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaSize.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/sound/midi/MetaMessage.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/sound/midi/ShortMessage.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/sound/midi/SysexMessage.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/sound/sampled/FloatControl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/sound/sampled/spi/MixerProvider.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/DefaultCellEditor.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/DefaultListCellRenderer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/JComboBox.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/JScrollPane.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/JSpinner.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/JSplitPane.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/JTable.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/MultiUIDefaults.java	Wed Jul 05 16:52:09 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:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/UIManager.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/border/TitledBorder.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicListUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicProgressBarUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSliderUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java	Wed Jul 05 16:52:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthProgressBarUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollBarUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthScrollPaneUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthSliderUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthSpinnerUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthStyle.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableHeaderUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthToggleButtonUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthToolBarUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/applet/AppletPanel.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/awt/EmbeddedFrame.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/awt/SunToolkit.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/awt/datatransfer/DataTransferer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/awt/image/GifImageDecoder.java	Wed Jul 05 16:52:09 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:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/font/FileFont.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/font/FontManager.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/font/TrueTypeFont.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/font/Type1Font.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/io/ByteToCharBig5.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/io/CharToByteJohab.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/net/httpserver/Request.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/net/httpserver/ServerImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/AsynchronousFileChannelImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/FileLockImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/FileLockTable.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/Config.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/KrbKdcReq.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/internal/UDPClient.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11KeyPairGenerator.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/SunPKCS11.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/rsa/RSAKeyFactory.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/rsa/RSAKeyPairGenerator.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/rsa/RSAPrivateCrtKeyImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/rsa/RSAPrivateKeyImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/rsa/RSAPublicKeyImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/security/util/ObjectIdentifier.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/swing/DefaultLookup.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/swing/FilePane.java	Wed Jul 05 16:52:09 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:09 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:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUI.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/classes/sun/swing/table/DefaultTableCellHeaderRenderer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/lib/management/jmxremote.access	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/bands.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/bytes.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/coding.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/defines.h	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/main.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.h	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/utils.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/utils.h	Wed Jul 05 16:52:09 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:19 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:19 2009 -0700
+++ b/jdk/src/share/native/java/util/zip/ZipFile.c	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/java/util/zip/zip_util.c	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/java/util/zip/zip_util.h	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/sun/awt/giflib/dgif_lib.c	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/sun/awt/image/gif/gifdecoder.c	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gfx_impl.h	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/sun/awt/splashscreen/splashscreen_impl.h	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/share/sample/nio/file/Copy.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbeddedFramePeer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XWindow.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WDialogPeer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WFramePeer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WPanelPeer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/classes/sun/security/mscapi/RSAKeyPairGenerator.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/classes/sun/security/mscapi/RSASignature.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/native/sun/nio/ch/FileDispatcherImpl.c	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/native/sun/security/krb5/NativeCreds.c	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Component.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Window.cpp	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Window.h	Wed Jul 05 16:52:09 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:19 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:19 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:19 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:19 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:19 2009 -0700
+++ b/jdk/test/java/lang/Class/getEnclosingConstructor/EnclosingConstructorTests.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/lang/instrument/ParallelTransformerLoader.sh	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/lang/management/ThreadMXBean/ThreadStateTest.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/nio/Buffer/Basic-X.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/nio/Buffer/Basic.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicByte.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicChar.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicDouble.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicFloat.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicInt.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicLong.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/nio/Buffer/BasicShort.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousFileChannel/Basic.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousFileChannel/Lock.java	Wed Jul 05 16:52:09 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:09 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:19 2009 -0700
+++ b/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.java	Wed Jul 05 16:52:09 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:19 2009 -0700
+++ b/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh	Wed Jul 05 16:52:09 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:09 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:19 2009 -0700
+++ b/jdk/test/java/util/logging/LoggingDeadlock2.java	Wed Jul 05 16:52:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:09 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:19 2009 -0700
+++ b/jdk/test/sun/security/util/Oid/OidFormat.java	Wed Jul 05 16:52:09 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:09 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:09 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:19 2009 -0700
+++ b/jdk/test/tools/launcher/MultipleJRE.sh	Wed Jul 05 16:52:09 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:09 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:19 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:19 2009 -0700
+++ b/make/jprt.properties	Wed Jul 05 16:52:09 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